一、TCP连接的建立(三次握手)
(1)客户端A首先向B发出连接请求报文段,报文段首部中同步位SYN=1,序号seq=x,表明发送数据的第一个数据字节的序号是x。
(2)服务端B在确认报文段中同样使同步位SYN=1,使ACK=1,确认号ack=x+1,自己发送数据的序号seq=y。
(3)A收到B的确认报文后,向B给出确认,使ACK=1,确认号ack=y+1。A通知上层,TCP连接已经建立。B收到A的确认报文后,也通知上层,TCP连接建立。
二、TCP连接的释放(四次握手)
A必须等待2ML的时间:
1.为了保证 A 发送的最后一个 ACK 报文段能够到达 B。
2.防止“已失效的连接请求报文段”出现在本连接中。A在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。
三、TCP的有限状态机
粗实线箭头表示对客户进程的正常变迁。
粗虚线箭头表示对服务器进程的正常变迁。
另一种细线箭头表示异常变迁。
粗虚线箭头表示对服务器进程的正常变迁。
另一种细线箭头表示异常变迁。