84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
你是說TCP協定? TCP協定本身就包含了確認送達和自動重傳的機制,只要你使用TCP連接,就不需要考慮這個問題。
TCP是一種協議,一般由你的機器設備進行實現,你無需關注TCP的重傳。一般你的應用層,例如HTTP,網路層就是TCP,在呼叫HTTP協定時無需關注下層協定實現,下層網路協定對上層協定是透明的
用Modbus協定的機制跟你探討一下,主站和從站通訊屬於請示應答機制。當主站給從站發送一個請求時,假如從站未及時回复,超過延時時間之後,主站會連續給從站下發5次。透過超時時間和重發次數來盡可能保證每次的請求都成功,假如重發5次均失敗,則判定此次發送失敗,此時物理鏈路可能發生異常,後續未發完的數據也不再發送。
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層重發多次後,還是失敗,那整個發送就失敗了.需要檢查下網絡連接並在應用層重新發送一次.
不用,你說的這些由TCP協議層實現,你只管用就是了.如果想知道細節,你可以參考 這篇文章
你是說TCP協定?
TCP協定本身就包含了確認送達和自動重傳的機制,只要你使用TCP連接,就不需要考慮這個問題。
TCP是一種協議,一般由你的機器設備進行實現,你無需關注TCP的重傳。一般你的應用層,例如HTTP,網路層就是TCP,在呼叫HTTP協定時無需關注下層協定實現,下層網路協定對上層協定是透明的
用Modbus協定的機制跟你探討一下,主站和從站通訊屬於請示應答機制。當主站給從站發送一個請求時,假如從站未及時回复,超過延時時間之後,主站會連續給從站下發5次。透過超時時間和重發次數來盡可能保證每次的請求都成功,假如重發5次均失敗,則判定此次發送失敗,此時物理鏈路可能發生異常,後續未發完的數據也不再發送。
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層重發多次後,還是失敗,那整個發送就失敗了.
需要檢查下網絡連接並在應用層重新發送一次.
不用,你說的這些由TCP協議層實現,你只管用就是了.
如果想知道細節,你可以參考 這篇文章