怎样比较容易记住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 – 传输层是我们最为关心的;
第一次握手
本地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/…