TCP(传输控制协议)使用三次握手(Three-Way Handshake)来建立连接。以下是详细流程:
1. 第一次握手:客户端发送SYN
- 动作:客户端向服务器发送一个SYN(Synchronize)报文,其中包含:
- 初始序列号(ISN,Initial Sequence Number),由客户端随机生成。
- 标志位
SYN=1,表示请求建立连接。
- 状态变化:
- 客户端从
CLOSED进入SYN_SENT状态。
- 客户端从
- 目的:客户端请求与服务器建立连接,并告知自己的初始序列号。
2. 第二次握手:服务器发送SYN-ACK
- 动作:服务器收到客户端的SYN报文后,向客户端发送SYN-ACK报文,其中包含:
- 服务器的初始序列号(ISN),由服务器随机生成。
- 确认号(ACK),值为客户端SYN报文的序列号加1(
客户端ISN + 1)。 - 标志位
SYN=1和ACK=1,表示确认客户端的请求并同时发起自己的连接请求。
- 状态变化:
- 服务器从
LISTEN进入SYN_RECEIVED状态。
- 服务器从
- 目的:服务器确认客户端的连接请求,并发送自己的连接请求。
3. 第三次握手:客户端发送ACK
- 动作:客户端收到服务器的SYN-ACK报文后,向服务器发送ACK报文,其中包含:
- 确认号(ACK),值为服务器SYN报文的序列号加1(
服务器ISN + 1)。 - 标志位
ACK=1,表示确认服务器的连接请求。
- 确认号(ACK),值为服务器SYN报文的序列号加1(
- 状态变化:
- 客户端从
SYN_SENT进入ESTABLISHED状态。 - 服务器收到ACK后,从
SYN_RECEIVED进入ESTABLISHED状态。
- 客户端从
- 目的:客户端确认服务器的连接请求,完成连接的建立。
总结
- 客户端:发送SYN → 收到SYN-ACK → 发送ACK → 进入
ESTABLISHED。 - 服务器:收到SYN → 发送SYN-ACK → 收到ACK → 进入
ESTABLISHED。
三次握手的目的是确保双方都能正常收发数据,并同步初始序列号,为后续可靠传输奠定基础。
1477

被折叠的 条评论
为什么被折叠?



