ringa_lee2017-04-17 15:55:26
TCP是一种协议,一般由你的机器设备进行实现,你无需关注TCP的重传。一般你的应用层,例如HTTP,网络层就是TCP,在调用HTTP协议时无需关注下层协议实现,下层网络协议对上层协议是透明的
怪我咯2017-04-17 15:55:26
用Modbus协议的机制跟你探讨一下,主站和从站通讯属于请示应答机制。当主站给从站发送一个请求时,假如从站未及时回复,超过延时时间之后,主站会连续给从站下发5次。通过超时时间和重发次数来尽可能保证每次的请求都成功,假如重发5次均失败,则判定此次发送失败,此时物理链路可能发生异常,后续未发完的数据也不再发送。
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层重发多次后,还是失败,那整个发送就失败了.
需要检查下网络连接并在应用层重新发送一次.