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

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

前言

上篇咱們瞭解了關於IP協議的相關知識,這裏咱們繼續討論運輸層的UDP協議.但願你有所收穫.post

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

運輸層提供了什麼服務

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

端口

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

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

爲了解決複用和分用過程當中數據不混淆的問題, 運輸層採用協議端口號(或端口)來區分.在TCP/IP體系中, 運輸層採用16位(共65535個)的端口號來標識一個端口. 端口只是具備本地意義, 表示了應用程序和運輸層交互時使用的標識.遊戲

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

讀到這裏你是否明白了爲何HTTP服務的端口默認80,HTTPS默認端口443,本地啓動的服務問啥建議使用8888了吧?圖片

端口的分類

  • 服務端使用的端口號get

    • 熟知端口(0~1023), 指派該比較重要的,你們熟知的應用使用,便於你們和他通訊, 下面是經常使用的熟知端口io

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

  • 客戶端使用的端口號

    客戶端的端口號爲(1024~65535),隨着客戶端的運行而肯定,短暫存在.

UDP協議

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

UDP 只是在IP協議之上添加了少量功能, 複用和分用及差錯檢測.其主要特色是:

  • 無鏈接
  • 盡最大努力交付, 即不提供可靠的交付
  • 面向報文. 發送方的UDP拿到上層交付的數據後直接添加本身的頭部信息後交付給下層,不會對數據進行合併或封裝; 而接收方的UDP拿到下層的數據後,去除頭部後直接交付給上層.
  • 沒有擁塞控制, 對應出現擁塞的網絡,發送方的發送速率是不會下降的.
  • 支持一對一,一對多,多對一的交互通訊
  • 首部較小,8字節.

UDP的報文格式:

包含首部和數據字段,數據字段是上層交付的數據,首部包含4個字段,各佔2字節:

  • 源端口, 須要給對方回信時選用, 不須要是爲0.
  • 目的端口, 在傳送的終點交付數據時使用.
  • 長度, UDP數據部分的長度(單位字節), 最小爲8,只有首部.
  • 校驗和, 檢查是否在傳送過程當中出錯, 有錯則丟棄.

結語

整體來看,UDP仍是比較簡單的.它適用於那些無須關心數據是否準確到達的服務, 如視頻電話, 局域網遊戲等.

  • 部分圖片來源於網絡,若有侵權,請告知。
  • 若有錯誤,還請指出。共勉!
  • 您的喜歡是最大的讚揚。
相關文章
相關標籤/搜索