TCP的三次握手

  1. 首先服务器端处理LISTEN(监听)状态,等待客户端的连接请求。
  2. 客户端向服务器端发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号x。
  3. 服务器端收到连接请求的报文,如果同意建立连接,则向客户端发送连接确认报文,SYN=1,ACK=1,确认号为x+1,同时也选择一个初始的序号y。
  4. 客户端收到B的连接确认报文后,还要向服务器端发出确认,确认号为y+1,序号为x+1.
  5. 服务器端收到客户端的确认后,连接建立。

三次握手的原因:为了防止失效的连接请求到达服务器,使服务器错误打开连接,浪费服务器资源。

解释:客户端发送的连接请求因为某种原因(网络拥堵)在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握 手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确 认,不进行第三次握手,因此就不会再次打开连接。


__EOF__

本文作者Wliamchen
本文链接https://www.cnblogs.com/wliamchen/p/13197581.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   大猪蹄子饲养员  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
点击右上角即可分享
微信分享提示