HTTP三次握手
位码即TCP标志位,有6中标示:
SYN
--建立联机(synchronous)
ACK --确认(acknowledgement)
PSH --传送(push)
FIN --结束(finish)
RST
--重置(reset)
URG --紧急(urgent)
Sequence number
-- 顺序号码
Acknowledge number -- 确认号码
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立连接:
第一次握手:主机A发送位码syn=1,随机产生seq number=123456的数据包发送到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq + 1),syn=1,ack=1,随机产生seq=7654321的包
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number +1 以及位码ack是否为1,若正确,主机A会再次发送ack number=(主机B的seq + 1),ack=1,主机B收到后确认seq的值与ack=1则建立连接
完成三次握手,主机A与主机B开始传送数据。
实例:
IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1
第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;
第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837(主机A的seq+1),syn=1,ack=1,随机产生seq=1739326486的包;
第三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487(主机B的seq+1),ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。
TCP四次挥手过程
第一次挥手:Client 给 Server 发送TCP包。用来关闭 Client 到 Server 的数据传输。将标志位 FIN 和 ACK 置为1,确认序号为 Z=1
第二次挥手:Server 收到 FIN 后,发回一个 ACK (标志位 ACK =1),确认序号为收到的序号加1,即 X = X +1 =2,序号为收到的确认序号 = Z
第三次挥手:Server 关闭与 Client 的连接,发送一个 FIN。标志位 FIN 和 ACK 置为1,序号 Y=1,确认序号为 X=2
第四次挥手:Client 收到 Server 发送的 FIN 之后,发回 ACK 确认(标志位 ACK=1),确认序号为收到的序号加1,即 Y+1=2,序号为收到的确认序号 X=2