TCP连接的三次握手:
第一次(A--->B),SYN=1,seq=a
第二次(B--->A),SYN=1,ACK=1,seq=b,ack=a+1
第三次(A--->B),ACK=1,seq=a+1,ack=b+1
(1)第一次握手时,
- 主机A向主机B发送一个SYN标志位为1的TCP段(也称为SYN段)。
- A选择一个随机的初始序列号(seq=a),这个相当于A主机发送的当前TCP段的序号。
(2)第二次握手时,
- 主机B收到A发送的SYN段后,确认连接请求。
- 主机B发送一个SYN标志位为1、ACK标志位为1的TCP段,表示对A的请求的确认。
- B也选择一个随机的初始序列号(seq=y),用于后续的数据传输。
- ACK字段的值被设置为A发送的初始序列号(x)加1,表示B期望收到的下一个序列号。
主机B发送一个SYN标志位为1、ACK标志位为1的TCP段,表示对A的请求的确认,B也产生一个随机的初始序列号(seq=b),用于后续的数据传输,ACK字段的值被设置为A发送的初始序列号(a)加1,表示B期望收到的下一个序列号;
(3)第三次握手时,
- 主机A发送一个ACK标志位为1的TCP段,表示对B的连接确认。
- A的序列号设置为之前发送的初始序列号(x)加1。
- ACK字段的值被设置为B发送的初始序列号(y)加1,表示A期望收到的下一个序列号