(4)TCP 连接的建立(三次握手)
TCP 是一个面向连接的可靠的传输控制协议,在每次数据传输之前首先需要建立连接,连接建立成功后才开始传输数据,数据传输结束后还要断开连接。
由于TCP使用的网络层协议IP只提供不可靠、无连接的传送服务,为确保连接的建立和终止都是可靠的,TCP使用三次握手(Three-Way Handshake)的方式来建立可靠的连接。
TCP 使用报头中的SYN(Synchronization Segment,同步段)来描述创建一个连接的三次握手中的消息。另外,握手过程确保TCP 只有在两端一致同意的情况下,才会打开一个连接。
TCP 的三次握手建立连接的过程如下:
1) 由发起方HostA 向被叫方HostB 发出连接请求。将段的序列号标为a,SYN 置位。由于是双方发的第一个包,ACK 无效。
2) HostB 收到连接请求后,读出序列号为a,发送序列号为b 的包,同时将ACK 置为有效,将确认号置为a+1,同时将SYN 置位。
3) HostA 收到HostB 的连接确认后,对该确认再次作确认。HostA 收到确认号为a+1、序列号为b 的包后,发送序列号为a+1、确认号为b+1 的段进行确认。
4) HostB 收到确认报文后,连接建立。
这样,一个双向的TCP 连接就建立好了,双方可以开始传输数据。
(5)TCP 连接的拆除(四次分手)
TCP 用FIN(Finish Segment,结束段)来描述关闭一个连接的消息。
上图所示是一个常规的TCP连接终止过程。当数据传输结束后,需要断开连接,其过程描如下:
1) HostA 要求终止连接,发送序列号为p 的段,FIN 置为有效,同时确认此前刚收到的段。
2) HostB 收到HostA 发送的段后,发送ACK 段,确认号为p+1,同时