TCP/IP协议-连接的建立

tcp的连接过程

客户端主动发起连接:采用三次握手机制

服务器端在某一端口监听连接请求,服务器端的状态为LISTENING

客户端发送带有 syn标志的tcp连接报文,报文内容长度为0,初始序列号ISN由客户端程序设置,客户端状态变为SYN_CENT

服务器端接收客户端连接请求,确认请求,发送一个带有syn标志以及ack标志的报文,ack 序列号为ISN+1,确认请求的tcp报文 syn序列号为服务器端初始化的,服务器端状态变为SYN_REVC

客户端且接收到服务器端的ack报文,也发送一个带有ack标志的tcp报文给服务器端,ack的序列号为服务器syn的序列号ISN+1,这个时候连接状态变为ESTABLISHED

服务器端接收到客户端的ack报文,连接状态变为ESTABLISED

见下面一幅图

存在的一场情况:

客户端连接超时:

这一种情况tcp会连续三次重试,如果三次充值都失败,就会报超时异常。一般情况下第一次超时时间是6秒,第二次超时时间是18秒,第三次超时时间是48秒,这个每个系统都不一样,看具体的实现。

服务器端没有在指定端口监听:

着一种情况和客户端连接超时一样,都会重试三次。

客户端没有收到服务器端的ack报文:

这个时候客户端没有连接建立,应该和超时一样。

服务器端没有收到客户端的ack报文:

这个时候客户端连接已经建立,服务器端还没有,客户端可以发送报文,但是服务器接收不到,这种情况比较异常。

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示