Networking

在應用層回複收到的消息(在 TCP 上)告訴發送者消息已成功接收是沒有用的?

  • June 12, 2021

任何數據失去都會被檢測到並自動糾正,這就是為什麼 TCP 也被稱為可靠協議的原因。

換句話說,

傳輸層負責從源主機到目標主機的無差錯端到端數據傳輸。

TCP確實保證可靠的傳輸。提出一個問題,在應用層回複收到的消息(在 TCP 上傳輸)告訴發送方消息已成功接收是否多餘(或無用,對不起我的英語不好)?

它不是多餘的。TCP 只關心兩個系統之間的傳遞,而不關心兩個應用程序之間的傳遞。一旦成功接收到數據,就會發送 ACK。然後將數據包的有效負載放入接收方應用程序的套接字緩衝區中。因此,在應用程序(從套接字緩衝區)讀取有效負載之前,特別是在它處理有效負載之前發送 ACK,例如根據處理的有效負載對數據庫進行更改。

因此,如果客戶端在應用程序級別獲得某種確認,則客戶端只能知道應用程序已成功處理有效負載。不過,這不需要是明確的確認 - 簡單地發迴響應可能就足夠了。細節取決於應用協議的語義。

引用自:https://serverfault.com/questions/1066369