確保可靠性的TCP協議【雜談】
阿新 • • 發佈:2021-08-08
回首這幾年,凡是做的好的東西背後都有【習慣】在支撐,凡是做的不好的東西背後都缺乏穩定【習慣】。習慣就是【系統】。
今天給大家簡單聊一聊【確保可靠性的TCP協議】。
按層次分,TCP位於傳輸層,提供可靠的位元組流服務。
所謂的位元組流服務(Byte Stream Service)是指,為了方便傳輸,將大塊資料分割成以報文段(segment)為單位的資料包進行管理。而可靠的傳輸服務是指,能夠把資料準確可靠地傳給對方。一言以蔽之,TCP協議為了更容易傳送大資料才把資料分割,而且TCP協議能夠確認資料最終是否送達到對方。
為了準確無誤地將資料送達目標處,TCP協議採用了三次握手(three-way handshaking )建立連線。用TCP協議把資料包送出去後,TCP不會對傳送後的情況置之不理,它一定會向對方確認是否成功送達。握手過程中使用了TCP的標誌(flag)--SYN(synchronize)和ACK(acknowledgement).
傳送端首先發送一個帶 SYN 標誌的資料包給對方。接收端收到後,回傳一個帶有 SYN / ACK 標誌的資料包以示傳達確認資訊。最後,傳送端再回傳一個帶 ACK 標誌的資料包,代表 “握手” 結束。
若在握手過程中某個階段莫名終斷,TCP協議會再次以相同的順序傳送相同的資料包。
除了上次三次握手,TCP協議還有其他各種手段來保證通訊的可靠性。
協議對比:
1、TCP
- TCP 是面向連線的傳輸控制協議。
- TCP 具有高可靠性,確保傳輸資料的正確性,不出現丟失或亂序。
- TCP 協議可以保證接收端毫無差錯地接收到傳送端發出的位元組流,為應用程式提供可靠的通訊服務。(對可靠性要求高的通訊系統往往使用 TCP 傳輸資料。比如 HTTP 運用 TCP 進行資料的傳輸。)
2、UDP
- UDP 提供了無連線的資料報服務。
- UDP 在傳輸資料前不建立連線,不對資料報進行檢查與修改,無須等待對方的應答,所以會出現分組丟失、重複、亂序,應用程式需要負責傳輸可靠性方面的所有工作。
- UDP 具有較好的實時性,工作效率較 TCP 協議高。
- UDP 段結構比 TCP 的段結構簡單,因此網路開銷也小。
以下為歷史文章連結:
【軟體測試基礎】
【網際網路協議】
以上原文來自我的公眾號【不只是測試】,掃描加關注哦O(∩_∩)O~