基于TCP协议的应用层的ACK机制

  当用TCP/IP协议进行通信时,在发送端,send首先会将数据copy到协议的缓存区,然后协议会将数据发送到接收端,接着会等待接收端协议收到数据的ack,如果没有收到ack,协议就会重发数据,在这一过程中send一直在等待,直到收到ack,当协议收到ack后才将协议缓存中的数据删除,因此从协议上来说是不会丢失数据的。但是协议没有丢失数据并不能保证接收端应用程序就一定...
摘要由CSDN通过智能技术生成

  当用TCP/IP协议进行通信时,在发送端,send首先会将数据copy到协议的缓存区,然后协议会将数据发送到接收端,接着会等待接收端协议收到数据的ack,如果没有收到ack,协议就会重发数据,在这一过程中send一直在等待,直到收到ack,当协议收到ack后才将协议缓存中的数据删除,因此从协议上来说是不会丢失数据的。

       但是协议没有丢失数据并不能保证接收端应用程序就一定会处理了数据,因此,在接收端的应用层增加ack是有必要的,因为有可能因为某些原因(比如:接收端机器配置低),应层没来得及处理数据,这也是TCP协议应用层加ack的意义所在。 

  而同样,对于在实际应用中设计应用层协议的时候,合适的ACK机制很重要。即使是基于TCP/IP的应用层,也要实现自己的ACK机制。因为TCP/IP的ACK是传输层的ACK,并不一定表示应用层已经处理了收到的消息,因为数据可能还在内核中没有被应用层读取。所以,应用层协议要有自己的ACK,进行应用层的消息确认。

  因为很多时候消息由tcp层交给应

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值