首页 > 代码库 > 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图示讲解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。