[僅供個人參考系列]tcp與udp的相關內容小結

TCP/UDP區別

TCP

  • TCP是一種面向連接的、可靠的、基於字節流的傳輸層通信協議

  • TCP面向連接,提供可靠地數據服務

  • TCP首部開銷20字節

  • TCP邏輯通信信道是全雙工的可靠信道

  • TCP連接只能是點到點的

UDP

  • UDP是參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠的信息傳遞服務

  • UDP無連接,不可靠

  • UDP首部開銷8字節

  • UDP邏輯通信信道是不可靠信道

  • UDP沒有擁塞機制,因此網絡出現擁堵不會使源主機的發送效率降低

  • UDP支持一對一,多對一,多對多的交互通信

三次握手,四次揮手,爲什麼是三次握手四次揮手

在TCP/IP協議中,TCP協議提供可靠的連接服務,採用三次握手建立一個連接,完成三次握手,客戶端與服務器開始傳送數據。

簡單點說:A與B建立TCP連接時,首先A向B發送SYN(同步請求),然後B回覆SYN+ACK(同步請求應答),最後A回覆ACK確認,這樣TCP的一次連接(三次握手)就完成了。

TCP三次握手

所謂三次握手,是指簡歷一個TCP連接時需要客戶端和服務器總共發送三個包

三次握手的目的是連接服務器指定端口,簡歷TCP連接,並同步連接雙方的序列號並交換TCP窗口大小信息。

TCP三次握手圖解:


1.第一次握手

客戶端發送一個TCP的SYN標誌位置1的包,指明客戶打算連接的服務器的端口,以及初始化序號,保存在包頭的序列號字段裏。

2.第二次握手

服務器發揮確認包應答,即SYN標誌位和ACK標誌均爲1,同時將確認序號設置爲客戶的ISN加1,即X+1。

3.第三次握手

客戶端再次發送確認包,SYN標識爲0,ACK標識爲1,並且把服務器發來的序號字段+1,放在確定字段中發送給對方,並且在數據字段寫入ISN的+1。

簡單解釋TCP三次握手:參考https://github.com/jawil/blog/issues/14

四次揮手

TCP的連接的拆除需要發送四個包,因此稱爲四次揮手。客戶端或服務器均可主動發起揮手動作。

由於TCP連接時全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成他的數據發送任務後就能發送一個FIN來終止這個方向的連接。收到一個FIN只意味着這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

爲什麼是三次握手四次揮手

這是因爲服務端的LISTEN狀態下的socket當收到SKY報文的簡歷連接的請求後,它可以把ACK和SYN放在一個報文裏來發送。但關閉連接時,當收到對方的FIN報文通知時,他僅僅表示對方沒有數據發送給你了,但未必你的所有數據都全部發送給對方了,所以你可以不是馬上回關閉socket,即你可能還會發送一些數據給對方之後,在發送FIN報文給對方來表示你同意現在可以關閉連接了,所以這裏的ACK和FIN報文多情況下都是分開發送的。

長連接和短連接

TCP在真正的讀寫操作之前,server和client之間必須建立一個連接,當讀寫操作完成後,雙方不再需要這個鏈接時他們可能釋放這個連接,連接的建立是通過三次握手,釋放則需要四次揮手,所以說每個連接的建立都是需要消耗資源和時間的。

TCP短連接

  1. client向server發起連接請求

  2. server接到請求,雙方建立連接

  3. client向server發消息

  4. server迴應client

  5. 一次讀寫完成,此時雙方任何一個都可以發起close操作

一般都是client先發起close操作,因爲一般的server不會回覆完client就立即關閉連接。

所以短連接一般只會在client和server間傳遞一次讀寫操作,短連接管理起來比較簡單,存在的連接都是有用的連接,不需要額外的控制手段

長連接

  1. client向server發起連接

  2. server接到請求後,雙方建立連接

  3. client向server發送消息

  4. server迴應client

  5. 一次讀寫完成,連接不關閉

  6. 後續讀寫操作

長/短連接的操作過程

  1. 短連接的操作步驟:建立連接 -> 數據傳輸 -> 關閉連接

  2. 長連接的操作步驟:建立連接 -> 數據傳輸 -> (保持連接) -> 數據傳輸 -> 關閉連接

長/短連接的優缺點

  1. 長連接可以省去較多的TCP建立和關閉操作,減少資源浪費,節省時間,對於比較頻繁的請求資源的客戶端比較適用於長連接

  2. 短連接對於服務器來說管理較爲簡單,存在的連接都是有用的連接,不需要額外的控制手段

發佈了128 篇原創文章 · 獲贊 70 · 訪問量 142萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章