Wireshark学习TCP协议 - 三次握手和四次挥手

参考链接

  1. 使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手
  2. 史上最简单的 Wireshark 和 TCP 入门指南
  3. 跟着动画来学习TCP三次握手和四次挥手
  4. socket,tcp,http三者之间的区别和原理
  5. 三次握手
  6. 四次挥手

TCP协议 - 三次握手和四次挥手

目录

1. 测试网站
2. TCP三次握手
3. TCP四次挥手
4. 总结

一、测试网站

测试网址:bilibili弹幕网

二、TCP三次握手

文字解释【摘自 - 百度百科】

  1. 第一次握手:建立连接时,客户端发送syn包到服务器,并进入 SYN_SENT 状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包(seq=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
  3. 第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED(TCP连接成功)状态,完成三次握手。

静态图展示【搬运】
Wireshark学习TCP协议 - 三次握手和四次挥手
动态图展示【搬运】
Wireshark学习TCP协议 - 三次握手和四次挥手
Wireshark学习TCP协议 - 三次握手和四次挥手
【PS. 不知道为啥知乎那篇文章这个图片变为了jpeg,加载不出来了】
抓包结果
Wireshark学习TCP协议 - 三次握手和四次挥手

第一次握手:SYN【客服端 → 服务器】

客户端发送 SYN 报文 到服务器,并发送序号(Seq)X
Wireshark学习TCP协议 - 三次握手和四次挥手
Wireshark学习TCP协议 - 三次握手和四次挥手

第二次握手:SYN+ACK【服务器 → 客户端】

服务器发送 SYN + ACK 报文,并发送序号为 Y,再确认序号为 X+1
Wireshark学习TCP协议 - 三次握手和四次挥手
Wireshark学习TCP协议 - 三次握手和四次挥手

第三次握手:ACK 【客户端 → 服务端】

客户端发送 ACK 报文,并设置发送序号为 Z,再确认序号为 Y+1
Wireshark学习TCP协议 - 三次握手和四次挥手
Wireshark学习TCP协议 - 三次握手和四次挥手

三、TCP四次挥手

文字解释【摘自 - 百度百科】
        由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

  1. TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
  2. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
  3. 服务器关闭客户端的连接,发送一个FIN给客户端。
  4. 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

静态图展示【搬运】
Wireshark学习TCP协议 - 三次握手和四次挥手
动态图展示【搬运】
Wireshark学习TCP协议 - 三次握手和四次挥手
Wireshark学习TCP协议 - 三次握手和四次挥手
抓包结果
Wireshark学习TCP协议 - 三次握手和四次挥手
注意:这一次挥手是由 服务器 发起的

第一次挥手:FIN+ACK【服务器 → 客户端】

服务器A发送一个 FIN+ACK,用来关闭服务A到客户B的数据传送。
Wireshark学习TCP协议 - 三次握手和四次挥手

Wireshark学习TCP协议 - 三次握手和四次挥手

第二次挥手:ACK 【客户端 → 服务器】

客户端B收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加1。和 SYN 一样,一个 FIN 将占用一个序号。
ACK值 = 接受到的Seq值【440】 + 1 = 441
Wireshark学习TCP协议 - 三次握手和四次挥手

Wireshark学习TCP协议 - 三次握手和四次挥手

第三次挥手:FIN+ACK【客户端 → 服务器】

客户端B关闭与服务器A的连接,发送一个 FIN 给服务器A。Wireshark学习TCP协议 - 三次握手和四次挥手

Wireshark学习TCP协议 - 三次握手和四次挥手

第四次挥手:ACK【服务器 → 客户端】

服务器A发回 ACK 报文确认,并将确认序号设置为收到序号加1。
ACK值 = 接受到的Seq值【1283】 + 1 = 1284
Wireshark学习TCP协议 - 三次握手和四次挥手

Wireshark学习TCP协议 - 三次握手和四次挥手

四、总结

        主要讲解了TCP三次握手建立连接和四次挥手拆除连接。通过本次学习,对TCP通信更加深刻,对WIreshark的使用也更加熟练。
        继续加油 ヾ(◍°∇°◍)ノ゙ !!

点我回顶部

 
 
 
 
 
 
 
Fin.