三次握手笔记
三次握手
我们如果要设计一个通信软件 如和设计
设计 连接性
1.创建套接字 ->让套接字中包含服务器的ip和端口进行链接
链接实现
1 发送链接请求
2 收到链接请求 并且链接客户端
3 测试是否发送成功
设计处三次请求
如果丢包了呢
TCP 第一次握手的 SYN 丢包了,会发生了什么?
场景 客户端链接服务器 但是服务器被D死了
重复发送 第一次超时1s 第2次超时 4s 一次增加
当超过最大重传次数后,客户端不再发送 SYN 包。
内核中定义超时请求次数 5次 那么就发送5次 时间会叠加
TCP 第二次握手的 SYN、ACK 丢包了,会发生什么?
场景 客户端链接服务器 服务器防火墙禁止数据链接
客户端:无法收到syn ack包 超时重传 达到内核设置次数 就终止
服务器:服务器能收但是不能传 服务器回syn ack 但是客户端收不到 服务器就等待客户端回第三次握手的ack
超时重传
TCP 第三次握手的 ACK 包丢了,会发生什么?
场景 客户端链接服务器 但是服务器被D死了
客户端状态:已完成 TCP 连接建立,处于 ESTABLISHED 状态->
手法发送数据 ——>到达不了 自动断开
依靠保活机制
服务端状态:处于 SYN_RECV 如果一直收不到ack包则断开链接 ->重发syn ack包 到达次数就断开链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步