TCP通信时序----三次握手和四次挥手

一、三次握手

        三次握手,即C/S模型下客户端与服务端连接要进行三次通信,一般由客户端主动发起,SYN是专门用来建立连接的标志位,在建立连接的过程中通常会携带数据包,如图中1000(0),1000表示数据包,(0)是数据包的大小,0表示无数据,纯建立连接,<mss 1460>,1460表示建立连接后传输数据的上限。服务器收到连接请求后同意连接会做应答,应答标志位是ACK,1001表示之前的数据都收到,SYN标志位占一个字节,所以是1001,同时服务器也会向客户端发起连接,发送SYN标志位,客户端收到服务器的连接请求,应答ACK标志位,三次握手至此建立完成,图中1、2、3位置是三次握手建立过程。三次握手由内核完成,写代码时accept函数和connect函数成功返回标志三次握手建立成功。

二、数据通信

        数据收发时ACK标志位用来确认数据成功接收,图中4位置1001(20) ACK 8001 表示客户端向服务器发送1001数据包,大小为20,8001是回执,5位置的1021就表示前1021个数据成功接收。

三、四次挥手

        断开连接一般由客户端发起,客户端发送FIN标志位(finish),服务器回执ACK标志位,一次半关闭完成,即客户端还能收到服务器的数据,但是不能发送(不能向服务器缓冲写数据),半关闭的存在是因为socket有两个缓冲区,读缓冲和写缓冲,半关闭是关闭缓冲区。服务器再发送FIN标志位,客户端回执ACK,四次挥手完毕,断开连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值