记TCP协议中的三次握手和四次挥手

前言

       今天恰好看了看TCP协议中的三次握手和四次挥手,将一些理解记下来供以后参考吧!
       发现有这样一个观点,认为三次握手的翻译并不准确,原因是英文原档里的表述为"three way(three message) handshake",请注意,handshake是单数,因此作者认为仅仅进行了一次握手,只是交换了三次报文而已,故将其译为三报文握手而不是三次握手。但由于后者更容易理解,且更流行,故本文依旧采用三次握手。

三次握手

先上图
在这里插入图片描述
具体内容就不说了,网上很多,在此只谈谈自己的理解。
流程如下:
       1. A要向B发送东西(数据),首先得A告诉B:B啊,我有东西要给你,你做好准备,此为1;
       2. 然后B给A回话,说:嗯,我知道了,也准备好了,此为2;
       3. A收到B的确认消息后,告诉B:那我开始发送数据了,你注意接收,此为3。
疑惑点:
       1)为什么要有3。
       原因:情况一:确认消息(2)由于各种原因丢失了,而此时B已经开始接收数据,A由于没有收到B的确认(2)一直等待直到A的等待时间截止重写发送请求(1),从而造成了B资源的浪费(因为B一直处于接收状态);
       情况二:1出现了问题,1的数据由于某种原因被阻塞在了某个路由器上,并且超过了A的等待时间,故A要再次发送请求给B(重写发送1),此请求成功的完成了数据传送,A、B断开连接,这个时候,第一次发送的请求此时到达B,B发送确认消息(2),开始接收数据,但A认为它并没有发送请求而不出来B的确认消息,不会发送数据,也造成了B的资源浪费。

四次挥手

还是先上图:
在这里插入图片描述
流程如下:
       A数据发送完毕,想要断开连接,向B发送连接请求,此为1;
       B收到A的请求后,向A发送确认消息,此为2;
       之后,B关闭与A有关各个连接进程,关闭完毕,给A发送信息,此为3;
       A收到消息后,给B发送确认消息,此为4。
       B收到确认后,立即关闭,而A还要等待2MSL时间,然后关闭。
疑惑点:
       1)为什么要有2,为什么B收到1的消息后,关闭进程了在向A发送确认(跳过2,直接3)。
       原因:A会有等待时间,超过等待时间后,A会认为B没有收到它的消息,从而重发1。就像两个人之间,我正在学习,你叫我吃饭(对应上面的1),我回应了:你等我把这道题做完(2),做完后,我叫你去吃饭(3),你说:行,那走(4)。
       若没有2,你叫我,我视而不见,不做任何回应,你心里作何感想,还会继续等我去吃饭吗,我想你的内心是这样的:滚犊子吧,爱吃不吃。
       2)为什么还要有4,做完题叫我吃饭直接走就行了啊,那这么多废话啊。
       原因:与上面三次握手的原因相同,3过程的数据丢失怎么办,不要4,B发送完3后就关闭,3数据还丢失了,重发不了,那A怎么关闭啊,关闭不了了,只能继续占用资源了。
       3)为什么A发送确认(4)后还要等待2MSL的时间。
       原因:同样的,若A发送4后立即关闭,但是4过程的数据又丢失了,B没有收到,B关闭不了,浪费资源的,等待的时间就是为了数据丢失进行重发数据的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值