TCP是通過確認機制和超時重傳機制實現可靠傳輸
UDP
UDP它不屬於連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通數據在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。傳輸層無法保證數據的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。
關鍵在於兩點,從應用層角度考慮:
1 提供超時重傳,能避免數據報丟失。
2 提供確認序列號,可以對數據報進行確認和排序。
本端:首先在UDP數據報定義一個首部,首部包含確認序列號和時間戳,時間戳是用來計算RTT(數據報傳輸的往返時間),從何計算出合適的RTO(重傳的超時時間)。然后以等-停的方式發送數據報,即收到對端的確認之后才發送下一個的數據報。當時間超時,本端重傳數據報,同時RTO擴大為原來的兩倍,重新開始計時。
對端:接受到一個數據報之后取下該數據報首部的時間戳和確認序列號,並添加本端的確認數據報首部之后發送給對端。根據此序列號對已收到的數據報進行排序並丟棄重復的數據報。