linux - 应用层TCP的确认机制
巴扎黑
巴扎黑 2017-04-17 15:53:26
0
5
474
巴扎黑
巴扎黑

全部回覆(5)
Peter_Zhu

你是說TCP協定?
TCP協定本身就包含了確認送達和自動重傳的機制,只要你使用TCP連接,就不需要考慮這個問題。

左手右手慢动作

TCP是一種協議,一般由你的機器設備進行實現,你無需關注TCP的重傳。一般你的應用層,例如HTTP,網路層就是TCP,在呼叫HTTP協定時無需關注下層協定實現,下層網路協定對上層協定是透明的

刘奇

用Modbus協定的機制跟你探討一下,主站和從站通訊屬於請示應答機制。當主站給從站發送一個請求時,假如從站未及時回复,超過延時時間之後,主站會連續給從站下發5次。透過超時時間和重發次數來盡可能保證每次的請求都成功,假如重發5次均失敗,則判定此次發送失敗,此時物理鏈路可能發生異常,後續未發完的數據也不再發送。

PHPzhong

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協議層實現,你只管用就是了.
如果想知道細節,你可以參考 這篇文章

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!