傳輸層 UDP 協議

2021-09-07 12:42:28 字數 1862 閱讀 3686

從之前介紹的網路層協議來看,通訊的兩端是兩台主機,ip 資料報首部就標明了這兩台主機的 ip 位址。但是從傳輸層來看,是傳送方主機中的乙個程序與接收方主機中的乙個程序在交換資料,因此,嚴格地講,通訊雙方不是主機,而是主機中的程序

主機中常常有多個應用程序同時在與外部通訊(比如你的瀏覽器和 qq 在同時執行),下圖中,a 主機的 ap1 程序在與 b 主機的 ap3 程序通訊,同時主機 a 的 ap2 程序也在與 b 主機的 ap4 程序通訊。

兩個主機的傳輸層之間有乙個灰色雙向箭頭,寫著「傳輸層提**用程序間的邏輯通訊」。邏輯通訊:看起來是資料似乎是沿著雙向箭頭在傳輸層水平傳輸的,但實際上是沿圖中的虛線經多個協議層次而傳輸。

tcp/ip 協議棧傳輸層有兩個重要協議——udp 和 tcp,不同的應用程序在傳輸層使用 tcp 或 udp 之一:

這一節先介紹比較簡單的 udp,比較複雜的 tcp 將在下一節討論。

在第一節我們已經了解過埠的概念,埠的作用體現在傳輸層。

剛才的圖中,ap1 與 ap3 的通訊與 ap2 與 ap4 的通訊可以使用同乙個傳輸層協議來傳輸(tcp 或 udp),根據 ip 位址或 mac 位址都只能是把資料傳到正確的主機,但具體需要傳到哪乙個程序,是通過埠來辨認的。比如同時使用瀏覽器和 qq,瀏覽器占用 80 埠,而 qq 占用 4000 埠,那麼傳送過來的 qq 訊息便會通過 4000 埠顯示在 qq 客戶端,而不會錯誤地顯示在瀏覽器上。

埠號有 0~65535 的編號,其中:

應用層協議:

系統埠號:

2123

2553

6980

161udp(user datagram protocol)使用者資料報協議,它只在 ip 資料報服務之上增加了很少一點功能,它的主要特點有:

從應用層到傳輸層,再到網路層的各層次封裝:

udp 資料報可分為兩部分:udp 報頭和資料部分。其中資料部分是應用層交付下來的資料。udp 報頭總共 8 位元組,而這 8 位元組又分為 4 個字段:

現在我們動手實踐,嘗試抓取乙個 udp 資料報,並解讀其內容。

cd desktop

git clone

cd tcp_ip_5

gcc -o test test.c

這個 c 程式會向 ip 位址192.168.1.17777 埠傳送一條 "hello" 訊息。你可以用編輯器修改程式,向不同的 ip 不同的 ip 傳送不同的內容。

編譯完成後先別執行,我們還需要使用乙個知名的抓包工具tcpdump,依次輸入以下命令安裝,並執行 tcpdump:

sudo apt-get update

sudo apt-get install tcpdump

sudo tcpdump -vvv -x udp port 7777

現在最小化當前終端,另開啟乙個終端,輸入以下命令執行剛才編譯好的 c 程式 test:

cd desktop/tcp_ip_5

./test

test 程式執行結束,返回剛才執行 tcpdump 的終端檢視抓包結果:

1、使用tcpdump抓取 udp 資料報,解讀報文,並截圖。

2、修改 c 程式,向不同的 ip,不同的埠傳送不同的內容,截圖抓包結果。

傳輸層 UDP協議

資料單位 特點具體實現 要求udp首部格式 傳送udp請求的客戶端圖釋 udp 傳送的資料單位協議是 udp 報文或使用者資料報 udp 是無連線的,即傳送資料之前不需要建立連線 udp 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制 udp 是面向報文的.udp 沒有擁塞控制,很適合多...

傳輸層 UDP協議

傳輸層 udp協議 資料單位 特點具體實現 要求udp首部格式 傳送udp請求的客戶端圖釋 udp 傳送的資料單位協議是 udp 報文或使用者資料報 udp 是無連線的,即傳送資料之前不需要建立連線 udp 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制 udp 是面向報文的.udp 沒...

傳輸層 UDP協議

資料單位 特點具體實現 要求udp首部格式 傳送udp請求的客戶端圖釋 udp 傳送的資料單位協議是 udp 報文或使用者資料報 udp 是無連線的,即傳送資料之前不需要建立連線 udp 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制 udp 是面向報文的.udp 沒有擁塞控制,很適合多...