挑戰408——一週網絡——運輸層(1)

進程間的通信

運輸層是面向通信的最高層,也是用戶功能中的最底層,運輸層爲它上面的應用層提供通信服務。從IP層來說,通信的兩端是兩臺主機,IP數據報的首部明確指出了這兩臺主機的IP地址。但是從運輸層來看,真正通信的實體是在主機中運行的進程,是這臺主機的進程跟另外一臺主機的進程在交換數據。也就是說IP協議只是將數據報送到目的主機,這個數據報還停留在主機的網絡層,並沒有交付到網絡的應用層。而運輸層正是爲兩臺主機提供端到端(即應用進程之間)之間的交付服務。
總之一句話網絡層爲主機之間提供邏輯通信,而運輸層爲主機之間的應用進程之間提供端到端之間的邏輯通信

運輸層的分用與複用

複用:發送方不同的應用進程都可以使用同一個運輸層協議傳輸數據。
分用:接收方的運輸層在剝去報文首部後能把這些數據交付到不同的應用程序。

運輸層的端口

端口可以讓應用層的各種應用進程將數據交付給運輸層,運輸層也通過端口將數據交付給應用層中相應的應用程序。TCP/IP協議用16位端口號來標誌一個端口,但它只具有本地意義,互聯網中的主機相同端口號之間是沒有任何聯繫的。它只是爲了標誌本機應用進程之間與運輸層之間相互交互的層間接口。就如我們去寄快遞,不但要知道收件人所在的小區(Ip地址),還應該知道收件人所在的幾棟幾層(端口號)。一般的,端口號分爲:服務器用的端口號(上篇應用層已經提過),客戶端使用的端口號。所以我們一般用嵌套字(Socket)組合來標明一個地址。嵌套字 = IP地址 :端口號

UDP 用戶數據報協議

UDP數據報的特點

UDP只是在IP數據報服務上增加了很少的功能(差錯檢驗,分用與複用)。也就是說如果開發人員採用UDP協議開發,那麼相當於直接與IP協議打交道。
UDP的主要特點如下:

  • UDP是無連接的。也就是說在發送數據之前不需要事先建立連接。
  • UDP是盡最大努力交付的。即主機不需要維持複雜的連接狀態。
  • UDP是面向報文的。即UDP對應用層下發的數據,直接添加UDP首部後就直接下發到IP層。
  • UDP沒有擁塞控制。也就是不管網絡是否存在擁塞,UDP依舊不會降低源主機的發送速率。(這對於一些需要恆定速率發送數據的應用是很有好處的(如視頻通話,語音通話等等))。
  • UDP首部開銷少。由於不需要各種複雜的參數去維持連接狀態個建立連接,UDP的首部開銷小很多。
  • UDP支持多種通信方式

在這裏插入圖片描述

UDP數據報首部

在這裏插入圖片描述
UDP數據報首部有8個字節,一共分成4個字段,每個字段長度爲2字節。圖中的僞首部不是實際UDP數據報的首部,是爲了校驗和使用的,不發送。

  • 源端口和目的端口:源端口號和目的端口號。
  • 長度:UDP數據報的長度。(最短爲8,即只有首部)。
  • 檢驗和:檢驗UDP數據報在傳輸中是否有錯,有錯誤就丟棄。

當運輸層從IP層收到UDP數據報後,根據首部中的目的端口將數據交付給相應的應用層進程。當UDP發現收到的報文的首部目的端口不正確的時候,就將報文拋棄。並由ICMP協議發送端口不可達的差錯報文給發送方。
UDP的首部檢驗和與IP數據報的首部檢驗相似,不同之處在於:IP數據報只是檢驗數據報的首部,而UDP數據報不僅檢驗首部還檢驗數據部分。在檢驗的時候發現UDP數據報的數據部分不是偶字節,就需要填入一個全0的字節。如果校驗出UDP報文是錯誤的,便丟棄此報文。這種檢錯能力雖然不高,但是簡單快速。通過僞首部還可以檢驗源IP地址和目的IP地址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章