TCP的连接建立与连接释放
1.TCP的连接建立
- B 的TCP 服务器进程先创建传输控制块TCB, 准备接受客户进程的连接请求。然后服务器进程就处于LISTEN (收听)状态,等待客户的连接请求。如有,即作出响应。
- A 的TCP 客户进程也是首先创建传输控制模块TCB 。然后,在打算建立TCP 连接时,向B 发出连接请求报文段,这时首部中的同步位SYN= 1, 同时选择一个初始序号seq=x 。TCP 规定, SYN 报文段(即SYN= 1 的报文段,同步序列编号)不能携带数据,但要消耗掉一个序号。这时, TCP 客户进程进入SYN-SENT (同步已发送)状态。
- B 收到连接请求报文段后,如同意建立连接,则向A 发送确认。在确认报文段中应把SYN 位和ACK 位都置1, 确认号是ack = x + I, 同时也为自己选择一个初始序号seq= y 。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时TCP 服务器进程进入SYN-RCVD (同步收到)状态。
- TCP 客户进程收到B 的确认后,还要向B 给出确认。确认报文段的ACK 置1, 确认号ack=y+ I, 而自己的序号seq=x+l 。TCP 的标准规定, ACK 报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq=x+l 。这时, TCP 连接已经建立, A