Rumah  >  Soal Jawab  >  teks badan

linux - 应用层TCP的确认机制

巴扎黑巴扎黑2765 hari yang lalu503

membalas semua(5)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-17 15:55:26

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

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 15:55:26

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

    balas
    0
  • 怪我咯

    怪我咯2017-04-17 15:55:26

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

    balas
    0
  • PHPz

    PHPz2017-04-17 15:55:26

    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层重发多次后,还是失败,那整个发送就失败了.
    需要检查下网络连接并在应用层重新发送一次.

    balas
    0
  • 高洛峰

    高洛峰2017-04-17 15:55:26

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

    balas
    0
  • Batalbalas