1. 程式人生 > >第六章 TCP與UDP

第六章 TCP與UDP

TCP與UDP

  • TCP(Transmission Control Protocol):面向有連線的、可靠的流協議
  • UDP(User Datagram Protocol):不具有可靠性的資料報協議
  • 傳輸協議TCP、UDP通過接收資料中的目標埠號識別目標處理程式(80埠:httpd守護程序)

套接字(Socket)

  • 應用程式利用套接字(API),可以設定對端的IP地址、埠號,並實現資料的傳送和接收。

埠號

  • MAC地址:識別統一鏈路中不同的計算機
  • IP地址:識別TCP/IP網路中互聯的主機和路由器
  • 埠號:同一臺計算機中進行通訊的不同應用程式

通訊識別

  • TCP/IP或UDP/IP通訊中通常採用5個資訊來識別一個通訊
    1. 源IP地址
    2. 目標IP地址
    3. 協議號
    4. 源埠號
    5. 目標埠號

UDP

特點

  1. 不提供複雜的控制機制,利用IP提供面向無連線的通訊服務。
  2. 即使出現網路擁堵的情況下,UDP也無法進行流量控制等避免網路堵塞的行為。
  3. 傳輸中即使丟包,UDP也不負責重發。

用途

  • 包總量較少的通訊(DNS、SNMP等)
  • 視訊、音訊等多媒體通訊(即時通訊)
  • 限定於LAN等特定網路中的應用通訊
  • 廣播通訊(廣播、多播)

TCP

特點

  1. 充分地實現了資料傳輸時各種控制功能,在IP這種無連線的網路上也能夠實現高可靠性的通訊
  2. 可以進行丟包時的重發控制
  3. 可以對順序亂掉的分包進行順序控制
  4. 是一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費

可靠性

  • 確認應答 : 在TCP中,當傳送端的資料到達接收主機時,接收端主機會返回一個已收到訊息的通知。這個訊息叫做確認應答(ACK)
  • 重發控制 : 在一定時間內傳送端沒有收到確認應答,傳送端就可以認為資料已經丟失,並進行重發。由此,即使產生了丟包,仍然能夠保證資料能夠到達對端,實現可靠傳輸。
  • 重複控制 : 在目標主機已經收到資料的情況下,源主機如果重發相同的資料(ACK丟失),這時候目標主機需要識別是否已經接收資料,並對重複的資料進行丟棄處理。
  • 序列號 :按順序給傳送資料的每一個位元組都標上號碼的編號,通過序列號(位元組和位元組之間的分隔)實現確認應答,重發控制和重複控制

三次握手,四次揮手

  • 三次握手建立連線 : 傳送SYN包作為建立連線的請求,計算MSS值(為收發雙方所能接收的較小值),MTU-IP首部長度-TCP首部長度(MTU-40位元組)
  • 四次揮手斷開連線 : 傳送FIN包作為斷開連線的請求

在這裡插入圖片描述

滑動視窗控制

  • 視窗大小 : 無需等待確認應答而可以繼續傳送資料的最大值
  • 實現 : 使用緩衝區(計算機記憶體開闢出來的一段空間),快取視窗大小的資料(比如4個段的資料),在收到接收端的ACK後,根據序列號刪除序列號之前的段資料,新增之後要傳送的資料。
  • 重發控制 : 傳送端主機如果連續3次收到同一個確認應答,就會將其所對應的資料進行重發。

其他傳輸層協議

  • UDP-Lite : (Lightweight User Datagram Protocol, 輕量級使用者資料報協議),擴充套件UDP機能的一種傳輸層協議,提供與UDP幾乎相同的功能,不過計算校驗和的範圍可以由應用自行決定。
  • SCTP : (Stream Control Transmission Protocol, 流控制傳輸協議),與TCP一樣,都是對一種提供資料到達與否相關可靠性的檢查的傳輸層協議。在SCTP的情況下,可以管理多個IP地址使其同時進行通訊,因此即使出現通訊過程當中乙太網與無線LAN之間的切換,也能夠保持通訊不中斷。
  • DCCP : (Datagram Congestion Control Protocol, 資料報擁塞控制協議),輔助UDP的傳輸層協議彌補UDP沒有擁塞控制機制的不足。

術語

  • ACK(Positive Acknowledgement): 意指已經接受到
  • NACK(Nactive Acknowledgement): 否定確認應答
  • MSS(Maximum Segment Size): 最大訊息長度