TCP连接建立

三路握手

TCP连接建立与终止,及状态转换_数据

三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端

必须准备好接受外来连接,这通常通过服务端调用 (socket、bind、listen) 这三步来完成,

我们称之为被动打开(a),客户端通过调用 (connect) 发起主动打开。

三路握手发生的具体过程:

1.在客户端发起主动打开之后,客户端TCP发送一个SYN(同步)分节,告诉服务器,客户将在待

建立的连接中发送的数据的初始序列号。

2.服务器ACK确认客户的SYN,同时发送一个自己的SYN分节,其中包含服务器将在同一连接中

发送的数据的初始序列号。

3.客户ACK服务器的SYN。

SYN:同步分节,通常不携带数据,其所在的IP数据报只含有一个IP首部,一个TCP首部以及可
能的TCP选项

TCP连接终止

TCP连接建立与终止,及状态转换_服务器_02

具体过程:

1.某个进程首先调用close,执行主动关闭,并且发送一个FIN分节

2.对端接收到这个FIN之后执行被动关闭。这个FIN由TCP确认ACK,并作为一个文件结束符传递

给进程。

3.接收到这个文件结束符的进程将调用close关闭它的套接字,并发送一个FIN

4.接收到这个FIN的原发送端TCP确认ACK这个FIN。

 

TCP状态转换图

TCP连接建立与终止,及状态转换_数据_03

转载请注明出处