TCP(Transmission Control Protocol)传输控制协议
TCP是端-端的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous 建立联机) ACK(acknowledgement 确认)
PSH(push 传送) FIN(finish 结束) RST(reset 重置) URG(urgent 紧急)
seq(Sequence number 序列号) ack_seq(Acknowledge number 确认号码)
第一次握手:主机A发送位码为SYN=1,随机产生seq=123的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack_seq=(主机A的seq+1),SYN=1,ACK=1,随机产生seq=456的包;
第三次握手:主机A收到后检查ack_seq是否正确,即第一次发送的seq+1,以及位码ACK是否为1,若正确,主机A会再发送ack_seq=(主机B的seq+1),ACK=1,主机B收到后确认seq值且ACK=1,则连接建立成功。
需要注意的是, 上图中出现的 ACK = x +1 的写法很容易让人误以为数据包中的 ACK 域的数据值被填成了 x+1 。 ACK = x+1 的实际含义是:
* TCP 包的 ACK 标志位(1 bit) 被置成了 1
* TCP 包的确认号(acknowledgement number ) 的值为 x+1