TCP 三次握手与四次挥手深度解析(面试高频)

打印 上一主题 下一主题

主题 1826|帖子 1826|积分 5478

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、三次握手详解

题目:为什么必须是三次握手?两次或四次会有什么题目?
三次握手流程:
     为什么不能是两次握手?

历史毗连题目:
如果客户端发送的SYN因网络延迟超时重传,旧的SYN可能在新毗连创建后到达服务端。
两次握手时,服务端直接进入毗连状态,会错误担当过期请求。
三次握手通过客户端的最终ACK确认当前毗连的时效性。
资源浪费风险:
服务端在收到SYN后立刻分配资源(如毗连缓冲区),若客户端不回应ACK,会导致资源恒久占用。
攻击者可使用此发起SYN Flood攻击。
双向通信本领验证:
第三次握手确认客户端的接收本领和服务端的发送本领均正常。
为什么不需要四次握手?

第三次握手已能同时携带数据(如HTTP请求),额外握手会增长延迟而无实际收益。
二、四次挥手详解

题目:为什么需要四次挥手?能否归并为三次?
     为什么需要四次挥手?

半关闭状态(Half-Close):



  • TCP答应单向关闭。当客户端发送FIN后,服务端可能仍有数据需要发送(如服务器未响应的剩余HTTP数据)。
  • 第二次挥手(ACK)仅确认收到FIN,不表示服务端立刻关闭。
数据完整性包管:



  • 服务端在第三次挥手(FIN)前会确保所有数据已发送完毕。
  • 若归并第二次和第三次挥手,可能导致数据丢失。
能否归并为三次挥手?

可以,但有限制:
当服务端没有待发数据时,其第二次挥手(ACK)和第三次挥手(FIN)可归并为一个报文(称为延迟确认)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表