UDP
傳送資料前不用進行連線,資料可能出現丟包,
支援一對多,多對多,多對一的方式,也就是說 UDP 提供了單播,多播,廣播的功能。
高效,適用實時直播場景
TCP
傳送資料前需要進行三次握手連線,關閉連線需要四次揮手
三次握手,是客戶端給服務端發 SYN,請求連線,服務端回覆客戶端 SYN + ACK(acknowladge) 確認連線,客戶端收到 ACK 再回復給 服務端 ACK(acknowladge)此時連線成功,即可傳送資料 四次揮手,是客戶端發給服務端 FIN,請求關閉連線,服務端收到後傳送 ACK 表示準備關閉(因為 TCP 連線是雙向的,所以 B 仍舊可以傳送資料給 A),服務端關閉後傳送 FIN 給客戶端,表示已關閉,客戶端收到FIN 也關閉連線TCP 資料保證完整性
滑動視窗解決了資料的丟包、順序不對和流量控制問題
傳送端視窗,接受端視窗,傳送端視窗包含已傳送但未收到應答的資料和可以傳送但是還未傳送的資料,傳送端視窗資料大小由接收端視窗剩餘大小決定,接收方會把當前接收視窗的剩餘大小寫入應答報文,傳送端收到應答後根據該值和當前網路擁塞情況設定傳送視窗的大小,所以傳送視窗的大小是不斷變化的,幫助 TCP 實現了流量控制
Zero 視窗
傳送報文時,對端零視窗,傳送端會停止傳送資料,並啟動 persistent timer,該定時器定時傳送請求給對端,讓對端告知視窗大小,重試超過一定次數,TCP 可能斷開連線
擁塞處理 實現了對流量的控制,保證在全天候環境下最優的傳遞資料
四個演算法:慢開始,擁塞避免,快速重傳,快速恢復