三次握手和四次挥手

前言

三次握手

图来:
在这里插入图片描述
(图片源自于百度)
分析
第一次连接
客户端向服务器主动提出连接请求。(SYN标志位=1,客户端随机产生出序列号J)
第二次连接
服务端收到请求,针对请求发出确认。(SYN标志位同样=1,ACK标志=1意味着发送ack确认号,ack是基于第一次连接发送的序列号+1,其实代表了服务端确实收到了第一次连接发送的seq;同时服务端也随机产生序列号K)
第三次连接
客户端收到确认号,知道自己发送的服务端收到了于是告诉服务端收到,再次确认一遍。(由于要确认所以ACK=1,此时的ack是针对于上次连接发送的seq+1,目的是确认第二次连接是服务端发的东西我客户端确实收到了)

客户端变成连接状态,哪怕服务端不连,客户端也会一直发送东西的。

为什么要进行三次的连接?

更加简单的说的话:
第一次连接是客户端先询问服务器:在不在?
第二次连接是服务器针对这个问题回答:我在!
第三次连接是客户端回应服务器:行,我知道(你在了)。
只有在这种情况下才能确保双方的连接,试想一下如果我们停留在第二次连接,如果客户端中途挂了怎么办,第三次连接相当于一个确保,保证了双方的交互。

下一个

四次挥手

图来:
在这里插入图片描述
(图片源自于百度)
分析
这个图东西有点少,但是不要紧看我分析就好。
第一次挥手
客户端向服务端发送释放连接的报文。(由于要释放连接FIN标志位=1,客户端发送随机序列seq=M)
第二次挥手
服务端依旧很稳,发送确认号。(ACK=1,发送ack=M+1,这是对于上次序列的确认)不过客户端在收到确认报文后就处于半关闭的等待状态。服务端依旧可以发送数据给它。

第三次挥手
服务端如果还有什么要发送的可以继续发,并发送释放连接报文,这一次是要彻底关闭了。(要关了,所以FIN=1;发送序列seq=N)
第四次挥手
客户端在久久的等待中收到了释放报文,返回给服务器一个确认报文(ACK=1,ack=N+1)客户端进入关闭状态,服务端在收到确认号后随即也进入了关闭状态

理解

其实三次握手对我来说花时间是更长的,因为理解了三次握手之后就很好理解四次挥手了。
第一次挥手是客户端想跟服务器说拜拜了:我想下线了!
第二次挥手是服务器的回应:行吧,等我说完。。。
第三次挥手是服务器继续BB:说完了,你下吧!
第四次挥手是客户端在下线前的最后回应:好,我下了。
贴心的服务器看到客户端确实下线了终于安心的睡下了。。。

总结

其实有很多专业词语都没有介绍到,我写下这篇文章只是希望能够帮助自己和更多的小白能对于此知识点有更多的理解。最后要感谢CSDN上的大牛们,有了前人的分享才让我更容易的写出这篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值