Tcp应用层是否还需要应答机制

新手上路,请多包涵

比如发送某个消息,调write接口只能确定消息写到缓冲区。Tcp底层会重发这个消息到收到应答。在应用层怎么获取到某个消息发送失败/成功了信息?是否需要应用层在加应答机制。

阅读 2.4k
2 个回答

看业务上的需要.
一条消息如果要确保被接收或者处理,是需要应用层应答机制的.

比如说有中间件,你发出的消息被中间件接收了,tcp层发送成功,
但是中间件给后端时失败,那么这条消息是需要重传,tcp层是无法感知的,
所以需要应用层来处理.

幂等消息,对端需要确保对应的业务逻辑不会二次处理.
比如加钱消息,需要固定唯一流水号来确保这笔钱已经加上,不会重复加.

时序消息,对端需要确保消息的连续,重传中间丢失的消息.
比如发生A->B->C的顺序操作,中间层有BUG导致ABC三条消息都回了确认,只有AC到达了最终端,那么最终端需要能检测出消息的连续性并要发送端重传B消息.

应该说只有应用层的回复才能保证消息到达(at-least-once)的语义。

更下层的 “发送成功” 是无法定义也没意义的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题