TCP建立连接需要在客户和服务器之间交换三个报文段。
1.最初TCP客户进程和服务器进程都处于CLOSED(关闭)状态。TCP服务器进程创建传输控制块TCB,准备接受客户端的连接请求。然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。
注:传输控制块TCB(Transmission Control Block)存储了每一个连接中的一些重要信息,如:TCP连接表、指向发送和接受缓存的指针、指向重传队列的指针、当前的发送和接收序号等。
2.TCP客户进程也是首先创建传输控制块TCB。建立TCP连接时,向TCP服务器端发出请求报文段,这时首部中的同步位SYN = 1,同时选择一个初始序号 seq = x。这时,TCP客户进程进入SYN-SENT(同步已发送)状态。
注:TCP规定,SYN = 1 的报文段不能携带数据,但要消耗掉一个序号。
3.TCP服务器端收到连接请求报文段后,若同意建立连接,则向TCP客户端发送确认报文段,这时首部中的 同步位SYN 和 确认位ACK 都置1,确认号是 ack = x + 1,同时也选择一个初始序号 seq = y。这时,TCP服务器进程进入SYN-RCVD(同步收到)状态。
注: