TCP基本认识
TCP(传输控制协议 Trasmission Control Protocol),传输层
面向连接的,可靠的,有序的
TCP连接建立
三次握手 :
- 客户端,服务端都处于 Closed状态
- 服务端 监听 客户端 端口, 服务端 Closed -> Listened状态
- 客户端 产生随机数填入TCP首部序列号,将SYN 置为1, 发送 SYN报文
- 服务端 接受客户端发送的 SYN报文后, 产生随机数填入 TCP头部的序列号,将客户端报文中的序列号(client_isn) + 1 填入 确认应答报文, 将 TCP首部的SYN, ACK标志位 置为1, 发送 SYN/ACK 报文
- 客户端 接受 来自 服务端的 应答报文后, 将服务端的应答报文中的序列号(server_isn) + 1后填入 确认应答报文,将 ACK 置为1, 发送 ACK报文
TCP连接断开
四次挥手:
- 客户端 将TCP首部的 FIN 标志位 置为 1, 发送 FIN 报文 。 客户端状态: ESTABLISTENED -> FIN_WAIT_1
- 服务端 接受 来自客户端的 FIN报文后, 将 TCP首部的 ACK标志位 置为 1, 发送 ACK报文 。 服务端状态: ESTABLISTENED -> CLOSED_WAIT
- 服务器 等待 数据 处理 完成后, 将 TCP首部的 FIN标志位 置为 1, 发送 FIN报文 。服务端状态:CLOSED_WAIT -> LAST_ACK
- 客户端 接受 来自 服务器的 FIN报文后, 将 TCP首部的 ACK标志位 置为 1, 发送 ACK 报文, 客户端状态: FIN_WAIT2 -> TIME_WAIT
- 服务端 接受 来自 客户端的 ACK报文后, 正常关闭 。服务端状态: LAST_ACK -> CLOSED
- 客户端在等待 2MSL 时间后,自动完成连接的关闭。 客户端状态: TIME_WAIT -> CLOSED
主动关闭连接的, 才有 TIME_WAIT 状态