大家都知道HTTP是通过三次握手建立连接机制和四次握手关闭连接机制。接下来就详细讲解一下这些流程的细节。
首先明确一下一些词的含义。
* SYN
* seq
* ack
*
HTTP连接机制
最初客户端和服务端都是处于关闭状态,客户端主动打开连接,服务端被动打开连接。
客户端首先创建传输控制模块TCB,然后向服务端发出连接请求文段,这是首部中的同步位SYN=1,初始序号seq=x。
服务端收到请求报文后,如果同意连接,则向客户端发送确认,在确认报文中把SYN和ACK的都置为1,确认号ack=x+1,初始序号seq=y。
客户端收到确认报文后,还要向服务端发出确认,确认报文的ACK=1, ack=y+1,同时初始序号seq=x+1。
当服务端收到客户端的连接确认后,进入ESTABLISHED状态。
HTTP为什么是三次连接?
客户端发送一次确认,是为了防止由于网络延迟等原因,已失效的连接请求报文突然又传送到了B,进而产生错误。