【讀】這一次,讓我們再深入一點 - UDP協議

_高洋_發表於2018-01-01

這是關於網路系列的第二篇文章,接下來會有更多精彩內容.敬請期待! 讓我們一起乘風破浪!

前言

上篇我們瞭解了關於IP協議的相關知識,這裡我們繼續討論運輸層的UDP協議.希望你有所收穫.

運輸層,你需要知道的基礎

運輸層提供了什麼服務

UDP 及 後來講到的TCP都屬於運輸層協議.運輸層向它上層的應用層提供通訊服務.網際層的IP協議可以通過IP資料包首部的目的地址,將資料包交付到目的地, 為什麼還需要運輸層呢? 其實,"兩臺主機間的通訊"的描述是不夠清晰的,需要通訊的實體應該是主機中的程式.可以看到,網際層是提供點到點的通訊(也就是兩臺主機之間能夠找到彼此), 而運輸層提供了端到端的通訊(也就是各個程式之間的交流).

運輸層的一個很重要的功能是複用和分用:

  • 複用, 傳送方不同的應用都可以使用用一個運輸層協議傳遞資料(加上合適的首部加以區分)
  • 分用, 接收方的運輸層在剝去報文的首部後能夠把資料正確的交付到目的應用.

為了解決複用和分用過程中資料不混淆的問題, 運輸層採用協議埠號(或埠)來區分.在TCP/IP體系中, 運輸層採用16位(共65535個)的埠號來標識一個埠. 埠只是具有本地意義, 表示了應用程式和運輸層互動時使用的標識.

不同計算機的兩個應用程式通訊時,需要獲取對方的IP地址(知道對方在哪),和對方程式的埠(找到對方的程式入口).就像我們寄信時,要寫上地址(IP地址)和收件人(埠)一樣.

讀到這裡你是否明白了為什麼HTTP服務的埠預設80,HTTPS預設埠443,本地啟動的服務問啥建議使用8888了吧?

埠的分類

  • 服務端使用的埠號

    • 熟知埠(0~1023), 指派該比較重要的,大家熟知的應用使用,便於大家和他通訊, 下面是常用的熟知埠

      FTP TELNET SMTP DNS TFTP HTTP SNMP HTTPS
      21 23 25 53 69 80 161 443
    • 登記埠(1024~49151).使用該類埠需要登記,避免重複.

  • 客戶端使用的埠號

    客戶端的埠號為(1024~65535),隨著客戶端的執行而確定,短暫存在.

UDP協議

接下來就來了解下運輸層的UDP協議(User Datagram Protocol), 後序文章會講述TCP協議(Transmission Control Protocol).

UDP 只是在IP協議之上新增了少許功能, 複用和分用及差錯檢測.其主要特點是:

  • 無連線
  • 盡最大努力交付, 即不提供可靠的交付
  • 面向報文. 傳送方的UDP拿到上層交付的資料後直接新增自己的頭部資訊後交付給下層,不會對資料進行合併或封裝; 而接收方的UDP拿到下層的資料後,去除頭部後直接交付給上層.
  • 沒有擁塞控制, 對應出現擁塞的網路,傳送方的傳送速率是不會降低的.
  • 支援一對一,一對多,多對一的互動通訊
  • 首部較小,8位元組.

UDP的報文格式:

包含首部和資料欄位,資料欄位是上層交付的資料,首部包含4個欄位,各佔2位元組:

  • 源埠, 需要給對方回信時選用, 不需要是為0.
  • 目的埠, 在傳送的終點交付資料時使用.
  • 長度, UDP資料部分的長度(單位位元組), 最小為8,只有首部.
  • 校驗和, 檢查是否在傳送過程中出錯, 有錯則丟棄.

結語

總體來看,UDP還是比較簡單的.它適用於那些無須關心資料是否準確到達的服務, 如視訊電話, 區域網遊戲等.

  • 部分圖片來源於網路,如有侵權,請告知。
  • 如有錯誤,還請指出。共勉!
  • 您的喜歡是最大的讚賞。

相關文章