tcp三次握手与四次分手
三次握手A主机请求B主机
A主机 先发 syn=1 ,seq=a 给B主机 A主机进入SYN_SENT状态
B主机收到后发送 syn=1 ACK=1 seq=b ack=a+1 给A主机 B主机此时服务器进入SYN_RECV状态;
A主机收到后发送ACK=1 seq=a+1 ,ack=b+1 给B主机 客户端和服务器进入ESTABLISHED(TCP连接成功)状态
syn=1 表示请求连接包 seq=a 表示本机的第几个数据包,即本机的数据包序列号 ACK=1表示确认包 ack=a+1 表示响应对方主机的第几个数据包
四次挥手
主机A发送断开TCP连接请求的报文,其中报文中包含seq序列号,是有发送端随机生成的,并且还将报文中FIN字段的值设为1,表示需要断开TCP连接。
主机B会回复A发送的TCP断开请求报文,其中包含seq序列号,是由恢复段随机生成的,而且会产生ACK字段,ACK字段的数值,是在A发送过来的seq序列号基础上加1进行回复的,以便A收到信息时,知晓自己的TCP断开请求已得到了验证。
在主机B回复完A的TCP断开请求后,不会马上就进行TCP连接的断开,主机B先会确认确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输完毕就会将回复报文的FIN字段置为1,并产生随机seq序列号。
主机A收到主机B的TCP断开请求后,会回复主机B 的断开请求,包含随机生成的seq字段和ack字段,ack字段会在主机B的TCP断开请求的seq的基础上加1,从而完成主机B请求的验证回复。
草都可以从石头缝隙中长出来更可况你呢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏