【网络编程】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

谢谢!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值