一、HTTP协议三次握手过程
1.1名词解释。
SYN(Synchronous 发送方和接收方相互确认序号,表示连接操作 ,建立联机)
Seq(Sequence number 顺序号码)
ACK(Acknowledge ACK控制位,客户端向服务器发送第一个网络包时,由于服务器还没有接收过网络包, 所以需要将 ACK 比特设为 0,客户端亦是)
Ack(Acknowledge number 确认号码)
1.2握手过程详解
参照下图所示进行解释:
(1)第一次握手:主机A发送位码为SYN=1,随机产生Seq(seq number)=123456的数据包到服务器,主机B由SYN=1知道,主机A要求建立联机。
(2)第二次握手:主机B收到请求后要确认联机信息,向A发送Ack(ack number)=123457(主机A的Seq+1),SYN=1,ACK=1,以及随机产生Seq(seq number)=654321的包。
(3)第三次握手:主机A收到后检查Ack(ack number)是否正确,即主机A第一次发送的Seq+1,以及位码ACK是否为1,若正确,主机A会再发送Ack(ack number)=(主机B的Seq+1),ACK=1,主机B收到后确认Seq值与ACK=1则连接建立成功。
(4)完成三次握手,主机A与主机B开始传送数据。
举例解释:
(1) IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
(2) IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 Ack 3626544837
(3) IP 192.168.1.116.3337 > 192.168.1.123.7788: Ack 1739326487,ACK 1
(1)第一次握手:192.168.1.116发送位码SYN=1,随机产生Seq(seq number)=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机。
(2)第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送Ack(ack number)=3626544837(192.168.1.116的Seq+1),SYN=1,ACK=1,随机产生Seq(seq number)=1739326486的包。
(3)第三次握手:192.168.1.116收到后检查Ack(ack number)是否正确,即是否为第一次发送的Seq(seq number)+1,以及位码ACK是否为1,若正确,192.168.1.116会再发送Ack(ack number)=1739326487(192.168.1.123的Seq+1),ACK=1,192.168.1.123收到后确认Seq(seq number)=Seq+1,ACK=1则连接建立成功。