三次握手
三次握手, 其实就是说创建一个客户端到服务器TCP链接需要发送的三个包. 主要作用就是确认通信双方的接收能力和发送能力是否正常, 并指定初始化序列号为后续的传输做准备.
三次握手过程
- 第一次握手, 客户端给服务端发一个 SYN 报文, 并指明客户端初始状态的序列号 ISN(c), 此时的客户端处于 SYN_SENT 状态. 服务端接收到此次握手后能确认客户端的发送和服务端的接收功能没有问题.
- 第二次握手, 服务端收到客户端的 SYN 报文之后, 会以自己的 SYN 报文作为回答. 同时为了告诉客户端自己收到了他的第一次握手信息. 将客户端的 ISN 值 + 1 作为 ack 返回给客户端, 此时服务端处于 SYN_RCVD 状态, 此时客户端可以明确, 客户端 / 服务单, 发送 / 接收功能都正常, 但是此时服务端不知道客户端接收信息能力如何.
- 第三次握手, 客户端收到 SYN 报文之后, 会发送一个 ACK 报文, 值为服务端的 ISN + 1, 此时客户端处于 ESTABLISHED 状态. 当服务器收到 ACK 报文之后也会进入 ESTABLISHED 状态. 至此服务端确定了客户端发送, 接收信息功能正常, 链接建立成功.


