TCP中的三次握手和四次挥手

一、TCP三次握手建立连接

在这里插入图片描述
图为客户端与服务端三次握手建立连接的过程
定义为:

第一次:客户端发送初始序号seq=J和SYN=1请求标志

第二次:服务器发送请求标志SYN=1,发送确认标志ACK=1,发送自己的序号seq=K,发送客户端的确认序号ack=J+1

第三次:客户端发送ACK=1确认标志,发送确认序号ack=K+1

三次握手成功后,双方开始TCP数据传输。

在网上看到一个精辟的帮助理解的三次握手建立连接的例子,忍不住把他记录下来,帮助自己和广大网友,日后理解。
三次握手就像你看见一位漂亮妹子迎面而来,忍不住想要过去要微信号,所以要通过招手的方式来确定对方是否原意搭理你。你首先向妹子招手(syn),妹子看到你向自己招手后,向你点了点头挤出了一个微笑(ack)。你看到妹子微笑后确认了妹子成功辨认出了自己(进入estalished状态)。但是妹子有点不好意思,向四周看了一看,有没有可能你是在看别人呢,她也需要确认一下。妹子也向你招了招手(syn),你看到妹子向自己招手后知道对方是在寻求自己的确认,于是也点了点头挤出了微笑(ack),妹子看到对方的微笑后确认了你就是在向自己打招呼(进入established状态)。于是两人加快步伐,走到了一起,要来妹子的微信号。
这个过程中总共有四个动作,
1、你招手,
2、妹子点头微笑
3、妹子招手
4、你点头微笑
其中妹子连续进行了两个动作,先是点头微笑(回复对方),然后再次招手(寻求确认),实际上我们可以将这两个动作合成一个动作,招手的同时点头和微笑(syn+ack)。于是这四个动作就简化成了三个动作。你招手妹子点头微笑并招手你点头微笑这就是三次握手的本质,中间的一次动作是两个动作的合并。
看到这个例子,你有没有也恍然大悟,感慨那位创作者的鬼才。

二、TCP四次挥手断开连接

第一次挥手:客户端发出释放FIN=1,客户端序列号seq=u,进入FIN-WAIT-1状态

第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态

第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)

第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

在这里插入图片描述
关于这个四次挥手断开连接,也可以参考上面的例子

在给妹子要完微信之后,你该回家了,你走到路口,看到妹子还在不舍得看着你,
你先对妹子挥了挥手(FIN),示意妹子你该走了,让她回家吧,妹子看到了之后,也是点了点头(ack),表示她收到了,伴随着她点头(ack)的同时,妹子又对你挥了挥手(FIN+ack),表示她真要走了,你也对妹子点头(ack),目送远去的妹子。
过程可以分为四个部分:
1、你挥手,
2、妹子点头
3、妹子挥手
4、你点头
因为是分别,你和妹子又互相都有好感,所以多一个步骤,表现出你和妹子的依依不舍之情。

前一个例子,是我在网上看到的,后一个例子是根据前面的改变一下,帮助自己理解的,如果你有更好的例子,也可以用自己例子帮助记忆。

毕竟好用的例子就是好例子!

欢迎在留言区分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值