美文网首页
http协议学习

http协议学习

作者: 你就像只铁甲小宝 | 来源:发表于2018-12-08 16:12 被阅读23次

    今天学了下http协议,总结了以下几个问题。

    1. 什么是http协议

    • http协议是基于TCP/IP通信协议来传递数据。
    • http协议又叫超文本传输协议,是万维网服务器传输超文本到本地浏览器的协议。

    2. URI,URL和URN的理解。

    首先我们来看下面这张图:


    关系图.png

    从这张图中很容易看出它们的关系。

    1.URI包括了URN和URL。
    2.URL和URN都是URI的一种,但URI却不一定是它们。

    看到一个很贴切的比喻,我们把URI比作人,URN就是人的名字,URL就是人的地址。

    • 也就是说URN确定了人的身份。有了名字,就算地址换了我们也能找到这个人。
    • URN提供了找到人的地址。但一旦地址换了我们可能就找不到这个人了。
    • 换句话说:URN和URL的区别就是,URN与资源的位置无关,当某个URN标识的资源在位置发生变化时,其URI可以保持不变。

    URI,URL,URN的定义:

    URI:

    Uniform Resource Identifier,即统一资源标志符,用来唯一的标识一个资源。

    URL:

    Uniform Resource Locator,统一资源定位符。即URL可以用来标识一个资源,而且还指明了如何locate这个资源。(能知道这个资源的位置)

    URN:

    Uniform Resource Name,统一资源命名。即通过名字来表示资源的。
    参考文章:

    3.http中的request和response

    request包和response包

    http中resquest和response是对应的。

    request中有请求行,请求头部,空行,和主体
    response中有状态行,消息报头,空行,响应正文

    用burpsuite抓的包

    1.GET /osjson.aspx?query=%E9%AB%98%E6%9C%A8%E5%90%8C%E5%AD%A6&form=OSDJAS&language=zh-CN HTTP/1.1
    2.Host: www.bing.com
    3.User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
    4.Accept: */*
    5.Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    6.Accept-Encoding: gzip, deflate
    7.Connection: close
    8.
    
    • 1是请求行,请求类型为GET,使用的是HTTP/1.1版本
    • 2~7是请求头部
    • 8是空行
    • 这个request包没有主体
    1.HTTP/1.1 302 
    2.Cache-Control: private
    3.Content-Length: 208
    4.Content-Type: text/html; charset=utf-8
    5.Location: https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&form=OSDJAS&language=zh-CN
    Vary: Accept-Encoding
    6.Set-Cookie: SNRHOP=TS=636798042541327291&I=1; domain=.bing.com; path=/
    X-MSEdge-Ref: Ref A: 195BE0810738433CA3E8475AD27BBC3C Ref B: BJ1EDGE0214 Ref C: 2018-12-07T18:30:49Z
    Date: Fri, 07 Dec 2018 18:30:48 GMT
    7.Connection: close
    8.
    9.<html><head><title>Object moved</title></head><body>
    10.<h2>Object moved to <a href="https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&amp;form=OSDJAS&amp;language=zh-CN">here</a>.</h2>
    12.</body></html>
    
    • 1.是状态行,状态码为302,协议版本是HTTP/1.1
    • 2~7是消息报头
    • 8是空行
    • 9~11是响应正文

    HTTP中的一些请求方式

    • GET 请求指定的页面信息,并返回实体主体。
    • HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
    • POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
    • PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    • DELETE 请求服务器删除指定的页面。
    • CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    • OPTIONS 允许客户端查看服务器的性能。
    • TRACE 回显服务器收到的请求,主要用于测试或诊断。

    4.HTTP中的状态码

    状态码是当浏览器发送请求时,网页所在服务器返回的一个信息头。

    状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类:

    • 1xx:指示信息--表示请求已接收,继续处理
    • 2xx:成功--表示请求已被成功接收、理解、接受
    • 3xx:重定向--要完成请求必须进行更进一步的操作
    • 4xx:客户端错误--请求有语法错误或请求无法实现
    • 5xx:服务器端错误--服务器未能实现合法的请求
    常见的HTTP状态码
    • 200 OK //请求成功。一般用于GET与POST请求
    • 400 Bad Request //客户端请求的语法错误,服务器无法理解
    • 401 Unauthorized //请求要求用户的身份认证
    • 403 Forbidden //服务器收到请求,但是拒绝提供服务
    • 404 Not Found //请求资源不存在,eg:输入了错误的URL
    • 500 Internal Server Error //服务器发生不可预期的错误
    • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
      参考文章:
      http://www.cnblogs.com/ranyonsue/p/5984001.html
      https://www.cnblogs.com/wuyun-blog/p/5706703.html

    相关文章

      网友评论

          本文标题:http协议学习

          本文链接:https://www.haomeiwen.com/subject/nppthqtx.html