Wireshark 抓包

295 阅读2分钟

网络7层结构对应关系

image.png

TCP包协议对应关系

image.png

image.png

HTTP抓包

curl -I baidu.com

image.png

1. 基于TCP的HTTP请求前,需要先通过 三次握手 建立连接

image.png

  1. 第一次握手:源端向目标(110.242.68.66)发送 SYN,建立连接请求
  2. 第二次握手:目标(110.242.68.66)响应源端 SYN+ACK,接受连接的应答
  3. 第三次握手:源端向目标(110.242.68.66)发送 ACK,确认请求
  4. 发送完确认请求后,开启到源端的「单向连接通道」;百度收到确认请求后,开启到源端的单向连接通道;「两边通道」都开启以后,就可以通信了。

2. TCP 连接建立后,开始HTTP的请求和响应

image.png

  1. 第一个包发起HTTP请求
  2. 第三个包接收到HTTP响应

3. 请求响应结束后,TCP四次挥手 断开连接

image.png

  1. 第一个包 第一次挥手,发送 FIN+ACK 释放连接的请求
  2. 第二个包 第二次挥手,发送 ACK 确认请求,源端收到后释放到目标的单向连接
  3. 第三个包 第三次挥手,法功 FIN+ACK 释放连接的请求
  4. 第四个包 第四次回收,发送 ACK 确认请求,目标收到后释放到源端的单向连接
  5. 双向连接释放后,TCP连接关闭,通信结束

4. 分析HTTP协议报文

  • 请求报文分为三个部分:请求行、请求头、请求体
  • 响应报文分为四个部分:状态行、响应头、响应空行、响应体

image.png

  • Request Method:请求方法
  • Request URI:请求地址
  • Request Version:请求版本
  • Host:目标主机
  • User-Agent:用户代理
  • Accetp:浏览器可接受的MIME类型

image.png

  • Response Version:响应版本
  • Status Code:响应状态码
  • Response Phrase:响应状态码的提示信息
  • Date:服务端发送响应报文的时间
  • Server:服务器信息
  • Last-Modified:最后修改的时间
  • ETag:对象的标志值,如果对象修改了,这个值也会变,用来判断对象是否改变
  • Accept-Ranges:支持的范围单位
  • Content-Length:内容长度
  • Cache-Control:缓存控制
  • Expires:过期时间,过期前可以直接访问缓存副本
  • Connection:连接类型,Keep-Alive表示这是一个长链接,可以继续用这个连接通信
  • Content-Type:资源文件类型

5. 查看HTTP/TCP追踪流

选中数据包-->右键-->follow-->http数据流/TCP数据流,可以查看到请求、响应的报文

image.png

image.png