我从不生产知识,我只是知识的搬运工 。
目录
1 TCP连接的建立与终止
1.1 TCP连接三路握手
TCP连接建立过程:
(1)、服务器必须准备好接受外来的连接。这通常通过调用socket、bind、listen这三个函数来完成,称之为被动打开;
(2)、客户端通过connect发起主动打开;这将导致客户端TCP发送一个SYN(同步)分节,告诉服务器在将要建立的连接中发送的数据的初始序列号;
(3)、服务器确认(ACK)客户端的SYN,并发送一个SYN分节;
(4)、客户端确认(ACK)服务器的SYN;
1.2 TCP连接终止
TCP连接终止过程:
(1)、某个应用进程首先调用close,我们称该端执行主动关闭(active close)。该端的TCP
于是发送一个FIN分节,表示数据发送完毕;
(2)、接收到这个FIN的对端执行被动关闭(passive close);
(3)、一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致
它的TCP也发送一个FIN;
(4)、接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN;
2 TCP状态转换图
TCP为一个连接定义了11种状态,规定了如何基于当前状态及在该状态下所接收的分节从一个状态转换到另一个状态;
3 TCP连接的分组交换
下图展示了一个完整的TCP连接所发生的实际分组交换情况;
参考:
- 《UNIX网络编程卷1:套接字联网AP》