HTTP数据包学习

一、请求

一个请求由四个部分组成:请求行、请求头标、空行和请求数据

1.1)请求行

请求行由三个标记组成:请求方法、请求URL和HTTP版本,它们用空格分隔。

例如:GET /index.html HTTP/1.1

HTTP规范定义了8种可能的请求方法:

  • GET:检索URL中标识资源
  • HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
  • POST:服务器接受被写入客户端输出流中的数据
  • PUT:服务器保存请求数据作为指定URL新内容
  • DELETE:服务器删除URL中命名的资源
  • OPTIONS:关于服务器支持的请求方法信息
  • TRACE:web服务器反馈HTTP请求和其头标
  • CONNECT:已文档化但当前未实现的一个方法,预留做隧道处理

1.2)请求头标

由关键字/值对组成,每行一对,关键字和值用冒号“:”分隔。

请求头标通知服务器有关于客户端的功能和标识,典型的请求头标有:

  • User-Agent:客户端厂家和版本
  • Accept:客户端可识别的内容类型列表
  • Content-Length:请求到请求的数据字节数

1.3)空行

最后一个请求头标之后是一个空行,发送回车符合退行,通知服务器以下不再有头标。

1.4)请求数据

使用POST传送数据,最常使用的是Content-Type和Content-Length头标。

二、响应

Web服务器解析请求,定位指定资源。服务器将资源副本写至套接字,在此处由客户端读取。

一个响应由四个部分组成:状态行、响应头标、空行和响应数据

2.1)状态行

状态行由三个标记组成:HTTP版本、响应代码和响应描述。

例如:HTTP/1.1 200 OK

  • HTTP版本:向客户端指明其可理解的最高版本

  • 响应代码:3位的数字代码,指出请求的成功或失败,如果失败则指出原因。

    • 1xx:信息,请求收到,继续处理
    • 2xx:成功,行为被成功的接收、理解和采纳
    • 3xx:重定向,为了完成请求,必须进一步执行的动作
    • 4xx:客户端错误

    通俗理解:

    • 200:文件存在
    • 403:目录存在
    • 404:文件或目录不存在
    • 500:文件或目录可能存在也可能不存在
    • 3xx:文件或目录可能存在也可能不存在

2.2)响应头标

像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。

2.3)空行

最后一个响应头标之后哦是一个空行,发送回车符和退行,表明服务器以下不再有头标。

2.4)响应数据

HTML文档和图像等,也就是HTML本身。

文章作者: TechOtaku
文章链接: http://techotaku.me/2018/06/25/HTTP数据包学习/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徒然の博客