1. 程式人生 > >網絡 UDP與TCP

網絡 UDP與TCP

套接字 OS udp協議 隨機 資源 創建 擁塞 超時 綁定

一張思維導圖搞懂 UTP與TCP技術分享圖片

  1. tcp服務器一般情況下都需要綁定,否則客戶端找不到這個服務器
  2. tcp客戶端一般不綁定,因為是主動鏈接服務器,所以只要確定好服務器的ip、port等信息就好,本地客戶端可以隨機
  3. tcp服務器中通過listen可以將socket創建出來的主動套接字變為被動的,這是做tcp服務器時必須要做的
  4. 當客戶端需要鏈接服務器時,就需要使用connect進行鏈接,udp是不需要鏈接的而是直接發送,但是tcp必須先鏈接,只有鏈接成功才能通信
  5. 當一個tcp客戶端連接服務器時,服務器端會有1個新的套接字,這個套接字用來標記這個客戶端,單獨為這個客戶端服務
  6. listen後的套接字是被動套接字,用來接收新的客戶端的鏈接請求的,而accept返回的新套接字是標記這個新客戶端的
  7. 關閉listen後的套接字意味著被動套接字關閉了,會導致新的客戶端不能夠鏈接服務器,但是之前已經鏈接成功的客戶端正常通信。
  8. 關閉accept返回的套接字意味著這個客戶端已經服務完畢
  9. 當客戶端的套接字調用close後,服務器端會recv解堵塞,並且返回的長度為0,因此服務器可以通過返回數據的長度來區別客戶端是否已經下線

  • TCP協議和UDP協議的區別是什麽
    • TCP協議是有連接的,有連接的意思是開始傳輸實際數據之前TCP的客戶端和服務器端必須通過三次握手建立連接,會話結束之後也要結束連接。而UDP是無連接的
    • TCP協議保證數據按序發送,按序到達,提供超時重傳來保證可靠性,但是UDP不保證按序到達,甚至不保證到達,只是努力交付,即便是按序發送的序列,也不保證按序送到。
    • TCP協議所需資源多,TCP首部需20個字節(不算可選項),UDP首部字段只需8個字節。
    • TCP有流量控制和擁塞控制,UDP沒有,網絡擁堵不會影響發送端的發送速率
    • TCP是一對一的連接,而UDP則可以支持一對一,多對多,一對多的通信。
    • TCP面向的是字節流的服務,UDP面向的是報文的服務。

網絡 UDP與TCP