三次握手笔记

大橘|博客 / 2023-08-18 / 原文

三次握手
我们如果要设计一个通信软件 如和设计
设计 连接性
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包 到达次数就断开链接