抓包体验TCP三次握手

2023年 9月 28日 29.4k 0

怎样比较容易记住TCP三次握手?

TCP三次握手可以通过以下方式进行记忆:

  • 第一次握手:客户端向服务端发送一个 SYN 报文段,表示客户端请求建立连接。
  • 第二次握手:服务端收到 SYN 报文段后,向客户端发送一个 SYN-ACK 报文段,表示服务端同意客户端的请求,并要求客户端确认。
  • 第三次握手:客户端收到 SYN-ACK 报文段后,向服务端发送一个 ACK 报文段,表示客户端确认连接建立请求。

可以通过记忆 "SYN,SYN-ACK,ACK" 作为三次握手的顺序,其中 SYN 表示同步序列编号,ACK 表示确认号,以及在每个阶段中哪个端口发送和哪个端口接收数据,来帮助记忆。

此外,还可以使用类比来帮助记忆:三次握手类似于双方进行"你好,你好,好的,我们建立连接"的过程,以此来帮助理解和记忆TCP三次握手的过程。

打开Wireshark,在过滤器中键入ip.addr==118.126.97.71, 访问www.dashen.tech[1],随后快速关闭.

Transmission Control Protocol – 传输层是我们最为关心的;

第一次握手

抓包体验TCP三次握手-1

本地ip192.168.31.192的51417端口(客户端),请求118.126.97.71的80端口(服务端);

同步位SYN有值为1,序号seq为x(一般情况均为0)

主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手

118.126.97.71的80端口,请求192.168.31.192的51417端口;

从标志位看出,同步位、确认位有值,在做应答(SYN+ACK):SYN 同步位为 1 、Acknowledgment 确认位为 1

主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;

第三次握手

客户端再次发送确认包(ACK), SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.

主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

相关参考1[2]

相关参考2[3]

相关参考3[4]

四次挥手可参考[5]

参考资料

[1]

www.dashen.tech: www.dashen.tech

[2]

相关参考1: www.bysocket.com/technique/1…

[3]

相关参考2: www.cnblogs.com/TankXiao/ar…

[4]

相关参考3: blog.csdn.net/u014530704/…

[5]

四次挥手可参考: blog.csdn.net/u013136708/…

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论