三次握手四次挥手问题总结

1.为什么要三次握手?

按理说为了通信,只要两次就够了,即一来一回,就能表示能接受和发送信息,通信正常。为什么客户机还要再确认一次?

为了防止无效链接请求的干扰。

因为TCP是可靠协议,假设服务机了一次请求连接,由于网络问题没有送达服务器,发送第二次连接请求送到了服务器,并且服务器发送了ack。此时第一次发送的请求连接送达服务机,若没有第三次确认,服务机便会将此连接作为新的连接请求。若有三次握手,则服务器会不理此无效请求连接报文,也不建立TCP连接了。
**

2.为什么要四次挥手

挥手是为了结束TCP连接。前三次可以理解是为了让数据完整的发送完,第四次挥手又是为了什么呢?

同样的道理,由于TCP是可靠链接,假使没有第四次挥手,服务器在发送完FIN报文后即关闭连接,那么在第二和第三挥手之间的数据就没有了保障,数据中途丢失也无法重新发送。所以需要第四次挥手。

那为什么客户机在发送ACK报文之后还要等待2MSL呢?

同理,也是为了保障通信的可靠。假使最后一次由客户端发送的确认报文丢失,那么在接下来的2MSL里,服务器没有接受到ACK就会重复发送FIN,只要在2MSL里客户机重复收到FIN报文,则可以重新发送ACK报文,保证通信的顺畅。

本段引用自知乎
tcp是全双工通信,服务端和客服端都能发送和接收数据。
tcp在断开连接时,需要服务端和客服端都确定对方将不再发送数据。
第1次挥手
由客户端向服务端发起,服务端收到信息后就能确定客户端已经停止发送数据。
第2次挥手
由服务端向客户端发起,客户端收到消息后就能确定服务端已经知道客户端不会再发送数据。
第3次握手
由服务端向客户端发起,客户端收到消息后就能确定服务端已经停止发送数据。
第4次挥手
由客户端向服务端发起,服务端收到信息后就能确定客户端已经知道服务端不会再发送数据。
为什么不是3次挥手?
在客服端第1次挥手时,服务端可能还在发送数据。所以第2次挥手和第3次挥手不能合并。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值