網路規劃與管理技術:第 四章 TCP/IP 協定與分析 上一頁 |
4-8 UDP 協定與分析
4-8-1 UDP 協定簡介 Internet 除了提供可靠性服務的 TCP 連接外,也提供非連接方式傳輸稱之為『使用者電報傳輸協定』(User Datagram Protocol, UDP)是『非連接方式』(Connectionless)。UDP 傳輸協定比 TCP簡單,沒有連線要求、連線終止、以及流量控制的管理程序。它的優點是傳輸速率較快,主要應用於較少量、即時性傳輸,而對資料正確性的要求較不高(如語音或視訊)的環境下使用。而其缺點則是無法提供正確性較高的資料傳輸。採用 UDP 傳輸可能會有資料重覆、資料未依序到達、資料遺失等等問題,必須由使用者自行解決。但從一方面來思考,Internet 網路上有許多應用系統,它們之間的傳輸量很低,而且需要即時反映訊息,如果採用 TCP 連線反而會浪費許多連結時間,而影響傳輸效率,在這種情況之下使用 UDP 的效率相對應較高,譬如 DNS 伺服系統或 SNMP 協定。因此,可以做一個簡單的結論,再傳輸量比較少或需要及時反映的環境下,使用 UDP 協定傳輸會優於 TCP 協定。但在許多情況下,使用者很難去決定到底應該使用何種協定來傳輸目前的資料,因此,在許多系統在同一傳輸埠口上,提供有 TCP 和 UDP 兩種協定讓使用使者連接,如果使用者的資料不需要分割,也就是說,一個 UDP 封包可以承載的話,那就使用 UDP 協定傳輸,如果需要多筆封包傳輸,則使用 TCP 協定傳輸。 UDP 封包與 IP 封包之包裝方式如圖 4-20 所示,圖 4-25 為 UDP 封包格式,因其為非連接方式,所以沒有順序號碼、確認號碼和其它控制欄位,而各欄位功能如下: ● 來源埠口(Source Port):發送端之傳輸埠口。 ● 目的埠口(Destination Port):接收端之傳輸埠口。 ● 長度(Length):該封包所承載資料(Data)的長度。 ● 檢查集(Checksum):該封包之錯誤檢查的檢查集。
圖 4-25 UDP 之封包格式 至於『檢查集』欄位的產生就較為複雜,因此,有些應用環境為了提高效率,而將此欄位填入 0,而不使用錯誤檢查的功能。檢查集所檢查的範圍除了 UDP 標頭和所承載的資料外,還包含一些 IP 標頭的欄位,我們將所檢查的欄位組成一個稱之為『虛擬標頭』(Pseudo Header),其內容如下: ● IP Source Address:(4 Bytes)IP 標頭之來源 IP 位址。 ● IP Destination Address:(4 Bytes)IP 標頭之目的 IP 位址。 ● Protocol:(1 Byte)IP 標頭之協定號碼欄位。 ● Length:(2 Bytes)UDP 標頭之長度欄位。 ● Padding:(1 Bytes)補滿虛擬標頭成為偶數位元組長度,以方便計算 Checksum。 虛擬標頭的檢查方法是傳送端欲發送資料之前,首先建構虛擬標頭,再計算出檢查集的檢查碼,將其填入 UDP 的檢查集欄位,並捨棄虛擬標頭而不將其傳送過去。接收端收到 UDP 封包後,也再建立虛擬標頭來計算檢查碼,如果所計算出來的檢查碼和檢查集欄位的值相同,便判斷該 UDP 封包沒有發生錯誤。使用虛擬標頭檢查可視為 UDP 封包的雙重保全機制,如果封包在傳遞中發生錯誤,而下層通訊沒有檢查出來,虛擬標頭可以做第二道防線的檢查。 4-8-2 UDP 擷取與分析 - Wireshark (A) 系統分析 採用 UDP 協定大多是訊息資料較短的應用,最常用的是 DNS 查詢訊息。當工作站欲連結某一個 URL(Uniform Resource Locator) 網址的主機時,它事先必須向 DNS Server 詢問該網址的 IP 位址,才可以利用該 IP 位址連結到該主機。詢問成功之後,工作站會將 URL 對應的 IP 位址儲存於 DNS cache 內,下次遇到同樣的 URL 名稱,就不需要再向 DNS Server 詢問。 因此,我欲利用 DNS 查詢擷取到 UDP 封包,必須先清除掉工作站內的 DNS cache (命令 ipconfig /flushdns),再執行某一命令連結一個 URL 網址即可(執行 > ping www.tsnisn.idv.tw)。因 DNS cache 已被清除,工作站勢必發出 DNS 查詢訊息給 DNS Server。
圖 4-26 UDP 封包擷取(ping www.tsnien.idv.tw) (B) 擷取工具 此實習題目,需要用到下列工具: █ Wireshark 網路封包分析器(安裝於 Windows 7) █ Windows 命令提示字元: ● 命令 ipconfig /flushdns:清除 DNS 快取紀錄。 ● 命令 ipconfig /displaydns | more:顯示 DNS 快取紀錄內容。 ● 命令 ping www.tsnien.idv.tw:產生 DNS 查詢訊息,此為 UDP 協定封裝。 (C) 擷取封包步驟 (1) 開啟Wireshark: █ 擷取條件:host 192.168.1.102 (windows IP)、 █ 顯示篩選條件:udp.port==53、 █ 再選擇介面卡,如下: (2) 開啟Windows 命令提示字元(利用管理員身分開啟): █ 執行 > ipconfig /flushdns 命令、 █ 執行 >ping www.tsnien.idv (3) 在 Wireshark 視窗按暫停。 (D) UDP 協定分析 圖中第 3 封包是主機(192.168.1.102) 發出的第一個 DNS 查詢訊息,該網路的 Default Gateway 是 192.168.1.1,因此,需由這裏出去。其 UDP 封包標頭的各欄位分析如下: ● Source Port:51331 ● Destination Port:53 (DNS 服務埠口) ● Length:43 ● Checksum:0x83f4 ● Data:Domain Name System(query) 4-8-3 UDP 擷取與分析 – Packet Tracer (A) 系統分析 採用 UDP 協定大多是訊息資料較短的應用,最常用的是 DNS 查詢訊息。當工作站欲連結某一個 URL 網址的主機時,它事先必須向 DNS Server 詢問該網址的 IP 位址,才可以利用該 IP 位址連結到該主機。詢問成功之後,工作站會將 URL 對應的 IP 位址儲存於 DNS cache 內,下次遇到同樣的 URL 名稱,就不需要再向 DNS Server 詢問。 因此,我欲利用 DNS 查詢擷取到 UDP 封包,必須先清除掉工作站內的 DNS cache (命令 ipconfig /flushdns),再執行某一命令連結一個 URL 網址即可(執行 > ping PC1..tsnisn.idv.tw)。因 DNS cache 已被清除,工作站勢必發出 DNS 查詢訊息給 DNS Server。 (B) 網路規劃 吾人利用 Packet Tracer 設計一個簡單網路,包含有三個 PC 電腦,期望網路環境如下:
因此,我們需要在 Packet Tracer 上選擇下列裝置: (1) Hub-PT:模擬集線器 (Hub) 一只。提供 PC 電腦之間連線。 (2) PC-PT:模擬 PC 主機二只。PC0 與 PC1 主機使用。 (3) Server-PT:模擬伺服器主機一只。開啟 DNS Service,並增加一筆位址資源紀錄( pc1.tsnien.idv.tw = 192.168.0.2), 如下: (4) 規劃網路如下:(請下載 UDP 封包擷取.pkt) (C) 網路設定 █ 集線器 Hub 不需任何設定。 █ PC0 與 PC2 須設定相關網路參數,如下(如 PC0):Gateway = 192.168.0.254、DBS Server = 192.168.0.250、IP Address = 192.168.0.1、Subnet Mask = 255.255.255.0。 █ DNS_Service:Gateway = 192.168.0.254、DBS Server = 192.168.0.250、IP Address = 192.168.0.250、Subnet Mask = 255.255.255.0。 (D) 擷取封包步驟 (1) 步驟 1:Packet Tracer 採用 Simulation 模式,編輯 Edit Filters ,點選 UDP,表示只擷取 UDP 封包。 (2) 步驟 2:先在 PC0 上清除 DNS Cache,再 ping www.pc1.tsnien.idv.tw,如下:
(3) 步驟 3:在 packet Tracer 上按『Auto Capture/Play』暫停。 (E) UDP 協定分析 (1) 步驟 1:在 Packet Tracer 按 『Auto Capture/Play』,則可觀察到擷取到 UDP (DNS 封包) 的封包。 (2) 步驟 2:分析 UDP 封包標頭,如下: ●Source Port = 1026、Destination Port = 53。 ● Length = 41、Checksum =0。 |
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|