首页 > 代码库 > TCP连接与断开的API图示讲解

TCP连接与断开的API图示讲解

三次握手

建立一个tcp连接:
0.服务器必须准备好接受外来的连接。通过调用socket,bind,listen函数完成,成为被动打开(passive open);

1.客户端通过调用connect函数进行主动打开(active open)。客户tcp发送一个SYN报文,告诉服务器端客户将在连接中发送的数据的初始化序列号,一般SYN报文不携带数据。(调用connect函数实现主动打开并阻塞connect等待握手确认)

2.服务器必须确认客户的SYN,同时服务器也得发送一个SYN报文,它含有服务器将在同一连接中发送的数据的初始化序列号,服务器以单个报文向客户发送SYN和对客户SYN的ACK;(Server端原本阻塞在listen函数,因为connect函数使listen函数返回,第一次握手成立,接着Server继续执行,阻塞在accept函数)

3.客户必须发送确认服务器的SYN的ACK;(connect函数成功返回,表示客户端已确认3次握手成立(此时Server在没收到客户端确认之前还不知道),客户端发出信号使得服务器accept函数得以返回,此时3次握手成功)




四次分手
1.某个应用程序首先调用close函数,称为执行主动关闭(active close),这一端的tcp于是发送一个FIN报文,表示数据发送完毕;
2.接受到FIN的另一端执行被动关闭(passive close),这个FIN由tcp确认。它的应用程序作为文件结束符传递给接收方应用程序(放在已排到等候该应用进程接收的任何数据之后);
3.一段时间后,接收到文件结束符的应用进程将调用close函数关闭它的套接口,也发送一个FIN报文;
4.接收到这个FIN报文的原发送方tcp对它进行确认;




本文由Cout_Sev搜集整理

转载注明出处

http://blog.csdn.net/cout_sev

谢谢!


TCP连接与断开的API图示讲解