抓包分析TCP三次握手和四次挥手

1、tcp报文格式

抓包分析TCP三次握手和四次挥手

抓包分析TCP三次握手和四次挥手

2、三次握手过程

抓包分析TCP三次握手和四次挥手

3、tcp三次握手抓包数据(其中红线X的587不是)

抓包分析TCP三次握手和四次挥手

  1. 第一次握手:标志位[SYN=1],***Seq=0
  2. 第二次握手:标志位[SYN=1,ACK=1],***Seq=0 确认号Ack=1
  3. 第三次握手:标志位[ACK=1],***Seq=1 确认号Ack=1

4、http请求包数据,包含6个部分,前面5个部分是网络的5层协议(物理、数据,网络,传输,应用),第6个部分由于是post请求,传递了request body的内容;

抓包分析TCP三次握手和四次挥手

抓包分析TCP三次握手和四次挥手

每一层都有一个字段指向上一层,表明上一层是什么协议。这大概是因为发包的时候会在数据上依次加上应用层、传输层、网络层、链路层的头部,但是对方收到数据包后是从最底层(链路层)开始层层剥去头部解包的,所以在每层上有一个字段指向上层,表明上层的协议,对方就知道下一步该怎么解包了。组装包的过程是从物理层->应用层,解包的过程也是如此;

关于五层协议干了什么:https://blog.csdn.net/qq_22238021/article/details/80279001

5、再往下看其他数据包,会发现存在大量的TCP segment of a reassembled PDU,字面意思是要重组的协议数据单元(PDU:Protocol Data Unit)的TCP段,这是TCP层收到上层大块报文后分解成段后发出去。

抓包分析TCP三次握手和四次挥手

  每个数据包的Protocol Length都是1506 Byte,这是因为以太网帧的封包格式为:Frame = Ethernet Header + IP Header + TCP Header + TCP Segment Data。即:

1、Ethernet Header = 14 Byte = Dst Physical Address(6 Byte)+ Src Physical Address(6 Byte)+ Type(2 Byte),以太网帧头以下称之为数据帧。

2、IP Header = 20 Byte(without options field),数据在IP层称为Datagram,分片称为Fragment。

3、TCP Header = 20 Byte(without options field),数据在TCP层称为Stream,分段称为Segment(UDP中称为Message)。

4、TCP Segment Data = 1452 Byte(从图可见)。

所以,每个数据包的Protocol Length = 14 Byte + 20 Byte + 20 Byte + 1452 Byte = 1506 Byte。

6、四次挥手

在测试这个之前遇到了一个问题,由于测试的是laravel网站,在响应头中返回了Connection: keep-alive,导致退出了测试网站后过了大概10分钟左右才出现了tcp断开请求;刚关闭网站时,本地ip向服务端ip发出[TCP Keep-Alive],然后服务端ip回复[TCP Keep-Alive ACK];这里具体的含义是有关http 请求的是否保持长连接,即链接是否复用,每次请求是复用已建立好的请求,还是重新建立一个新的请求。

HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。参考:TCP Keep-Alive

三次挥手原因:因为服务器端在给客户端传回的过程中,将两个连续发送的包进行了合并

抓包分析TCP三次握手和四次挥手

抓包分析TCP三次握手和四次挥手

抓包分析TCP三次握手和四次挥手

三次挥手过程:

  1. 第一次挥手:标志位[FIN=1,ACK=1],***Seq=812 确认号Ack=897
  2. 第二次挥手:标志位[FIN=1,ACK=1],***Seq=897 确认号Ack=813
  3. 第三次挥手:标志位[ACK=1],***Seq=813 确认号Ack=898

为什么握手需要三次,两次不行吗?因为服务端还不知道客户端的接受能力是否有问题;

 

参考链接:

https://www.cnblogs.com/163yun/p/9552368.html

https://baijiahao.baidu.com/s?id=1647167709154490152&wfr=spider&for=pc

https://www.zhihu.com/question/271701044