通俗易懂的TCP里面的三次握手以及四次挥手

通过三次握手来建立连接。 连接建立之后,就会传送数据! 四次握手来释放TCP连接

 

关于TCP协议中三次握手中的大写ACK和小写ack number的区别

参考:https://blog.csdn.net/baiyan3212/article/details/81302448

其实ACK也好,ack也好,只不过是个代号而已,叫他张三也行,叫他李四也没事,没有任何影响,因为咱们不会改动那个东西。就算是把名字记反了,对咱们也没有任何影响,大家知道三次握手的数据包里有这么两个东西就行了。
一个是确认值(Acknowledgement),为1便是确认连接。
另一个是确认编号(Acknowledgement Number),即接收到的上一次远端主机传来的seq然后+1,再发送给远端主机。提示远端主机已经成功接收上一次所有数据。

三次握手:【发送三个包】

 答复:小写的ack是确认号,上一个序列号增加一的结果

至于为什么必须有三次握手:

不要二次握手的原因:

而在计算机中TCP是安全的,当要进行两个进程之间的通讯时候,这时需要进行建立连接。就发起了三次握手。发送建立连接报文中有SYN和ACK,Seq,下一个返回报文信息的ACK = Seq+1。而如果有一种情况, 客户端发出的第一个连接请求报文段并没有丢失,而是在某个网络结点上停滞了一会儿,导致延误到连接关闭后的某个时间才到达服务端。本来这是一个早已失效的报文段。但服务端收到此失效的连接请求报文段后,就误认为是客户端再一次发送一个新的连接请求。于是就向客户端发出确认报文段,同意建立连接。若不采用“三次握手”,那么只要服务端发出确认,新的连接就建立了。由于现在客户端并没有发出建立连接的请求,因此客户端像大爷一样,你干啥呢,我都没跟你通信呢,就不鸟服务端。就如打电话不说话一样,浪费了大量资源。

所以就需要控制最后一次是由客户端发出!

不要四次握手的原因:

通信不可能100%可靠, 而上面的三次握手已经做好了通信的准备工作, 再增加握手, 并不能显著提高可靠性, 而且也没有必要。 

 

四次挥手:【发送四个包】

 结合课本《计算机网络 第7版》 P240-241   自己总结

第一次是客户端数据不需要再传送了。就会申请“链接释放”,并且会停止自己的数据发送。

当服务器回执消息之后,客户端不发送数据,但是服务器还是可以发送数据的。

第二次:如果,服务器也没有数据要发送,那么就会象之前客户机一样。申请关闭连接。在收到客户端发来的确认消息之后,就会终止数据发送。

最后,客户端会进入时间等待阶段,等待2MSL就会彻底关闭!

【MSL:最长报文段寿命】

答复:ack是上一个序列增加一的结果【小写的】

数据传送完成之后,通过四次挥手断开连接!

  1. 第一次是客户机发来的。

  2. 中间两次,都是服务器发出的。

  3. 最后一次,还是终止于客户机。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值