UDP與TCP

wuliao-yxy發表於2020-10-21

TCP: 一種面向連線的, 可靠的基於位元組流的傳輸層協議

特點: 點對點通訊, 可靠性高, 但是佔用系統資源多, 效率低

UDP: 一種無連線的傳輸層協議, 面向事務的簡單不可靠資訊傳遞服務

特點: 傳輸不可靠, 可能丟失, 但是可以廣播傳送, 且開銷小

在這裡插入圖片描述

TCP的傳送端在將報文傳送給接收端時, 接收端需要傳送確認包給傳送端, 如果傳送端沒有接收到確認包, 或者接收端根本就沒有接收到報文, 則傳送端會超時重發一個新的報文給接收端

雖然UDP開銷小, 但使用UDP並不是為了提高吞吐量, 而是為了解決延遲問題, 同時短連線可以降低嵌入式終端的能耗, 對於伺服器也可以減少資源的使用

TCP三次握手, 四次揮手

三次握手: client請求建立連線傳送一個報文, 標誌位SYN=1, 代表建立連線, 同時生成隨機序列號seq(32位序列號)

server傳送一個確認訊息包, 標誌位SYN=1, 生成一個seq, 同時標誌位ACK=1, 代表確認建立連線, 同時序列號ack=seq+1(client生成的seq), 此時client已經可以沒有問題, 傳送的資訊server可以收到, 也可以收到server發過來的資訊, 但server還不知道client是否可以接收到自己傳送的資訊

於是需要第三次握手, 此時client傳送一個報文ACK=1, 序列號ack=seq+1(server生成的seq)

在這裡插入圖片描述

四次揮手: client斷開連線, 傳送一個報文, 標誌物FIN=1, 代表斷開連線, 傳送seq(根據之前傳送的報文慢慢增長)

server收到後, 也傳送一個報文, ACK=1, ack=seq+1, 確認斷開連線, 此時client已經斷開連線, 但是server可能還未準備好斷開連線可能需要client等一會才會斷開

當server準備好斷開連線, 也需要重複上述兩次揮手
在這裡插入圖片描述

相關文章