TCP建立与终止

1.三次握手

(1)服务器时刻监听 准备接受外来连接 (被动连接)

(2)客户端通过调用connect (主动打开) 客户端TCP 发送一个SYN(同步) 分节, 表明服务器客户将要在(待建立连接)中发送数据的初始序列号。通常SYN部携带数据 所在IP数据报文只含有一个ip首部,一个TCP首部及可能有的TCP选项

(3)服务器需确认(ACK)客户的SYN 同时发送一个SYN分阶,它含有服务器在此次连接中发送数据的初始序列号。

实例一:

IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836

IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837

IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;

第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机产生seq=1739326486的包;

第三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。

2.TCP选项

1.MSS选项 对SYN接收端 通告 对端 的最大分节大小 也就是它在本连接的每个TCP分节中愿意接受的最大数据量 

2.窗口规模选项 。  窗口定义详解https://www.cnblogs.com/woaiyy/p/3554182.html

3.时间戳选项

3. TCP 连接终止

(1)某个应用进程首先调用close 成该段为 主动关闭  该端的TCP发送一个FIN分阶表示数据发送完毕。

(2) 接受到FIN的一端执行被动关闭 。 这个FIN由TCP确认 它的接收也作为一个文件结束符 传递给应用进程 。 FIN的接收意味着接收端应用进程在相应连接上再无额外数据可以接收。

(3)收到这个文件结束符的的应用将调用CLOSE 关闭他的套接字 。 它的TCP也发送一个FIN

(4)接受这个最终FIN的原发送端TCP(即执行主动关闭的的那一端) 确认这个FIN

你可能感兴趣的:(TCP建立与终止)