应用层TCP的确认机制

发布于 2022-09-03 19:32:12 字数 105 浏览 23 评论 0

请问在实际商业项目中,用TCP传输自定义协议的时候是不是都得让对方回复确认收到了?那么为了在对方没收到的情况下重传,是不是还得将之前发送的信息保存下来,这样会空间消耗会比较大。。有没有更好的方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

蹲墙角沉默 2022-09-10 19:32:12

你是说TCP协议?
TCP协议本身就包含了确认送达和自动重传的机制,只要你使用TCP连接,就不需要考虑这个问题。

懷念過去 2022-09-10 19:32:12

TCP是一种协议,一般由你的机器设备进行实现,你无需关注TCP的重传。一般你的应用层,例如HTTP,网络层就是TCP,在调用HTTP协议时无需关注下层协议实现,下层网络协议对上层协议是透明的

晨曦÷微暖 2022-09-10 19:32:12

用Modbus协议的机制跟你探讨一下,主站和从站通讯属于请示应答机制。当主站给从站发送一个请求时,假如从站未及时回复,超过延时时间之后,主站会连续给从站下发5次。通过超时时间和重发次数来尽可能保证每次的请求都成功,假如重发5次均失败,则判定此次发送失败,此时物理链路可能发生异常,后续未发完的数据也不再发送。

东走西顾 2022-09-10 19:32:12

TCP是可靠传输的协议,你发的每一个包,对端都需要ACK确认.
比如你传了5个包给对端, 其中3号包丢了,
那么当对端收到4号包时, 对端会给你发ACK 3,同时对端会把4号包保存下来
当对端又收到5号包时, 对端还是会给你发ACK 3, 同时对端会把5号包保存下来.
TCP协议中,当你连续收到3个 “ACK 3”时, 你这边就知道 3号包丢了,要重发, 这就叫快速重传机制.

当你重发3号包 给到对端后, 对端接收成功后,会回 ACK 6,因为4号 5号包,对端之前已经收成功了.

这个TCP帮你保证的,
如果3号包在TCP层重发多次后,还是失败,那整个发送就失败了.
需要检查下网络连接并在应用层重新发送一次.

风和你 2022-09-10 19:32:12

不用,你说的这些由TCP协议层实现,你只管用就是了.
如果想知道细节,你可以参考 这篇文章

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文