目錄
第1關:Wireshark基本使用入門
【實驗目的】
【實驗環境】
【本地主機、平臺虛擬機之間數據傳遞】
wireshark基本用法】
1、wireshark主界面
2、抓取分組操作
3、Wireshark窗口功能
4、篩選分組操作
【實驗操作】
?編輯
第2關:Ethernet幀分析
【以太網幀格式】
1、Ethernet II幀格式
2、IEEE 802.3 幀格式:
IEEE 802.2 LLC的頭構成:
3、IEEE 802.3 SNAP
【實驗任務】
第3關:IP報文分析
1、MAC幀與數據負載
2、IP數據報格式:
3、ICMP報文格式
4、Ping 命令
5、traceroute命令與工作原理
【實驗任務】
第1關:Wireshark基本使用入門
【實驗目的】
1、掌握wireshark工具的基本使用方法
【實驗環境】
1、頭歌基于Linux的虛擬機桌面系統
2、網絡報文分析工具wireshark
3、瀏覽器firefox
【本地主機、平臺虛擬機之間數據傳遞】
1、文本的復制與粘貼 操作入口:點擊虛擬機桌面右上角“工具欄”,選擇“復制粘貼”菜單項。 特點:可雙向復制與粘貼。
2、文件傳輸 操作入口:點擊虛擬機桌面右上角“工具欄”,選擇“上傳文件”或“下載文件”菜單項。
3、截圖 可以使用本地機的截圖工具,對虛擬機桌面應用進行截圖。?
wireshark基本用法】
Wireshark是一種開源的網絡協議分析工具,主要功能有捕捉報文、解碼分析、報文統計。官方下載地址:Wireshark · Download
1、wireshark主界面
雙擊桌面上的圖標 ,可啟動Wireshark。啟動后的用戶界面如下圖所示,中間列表部分列出了所有網絡接口。
2、抓取分組操作
A.單擊中間網絡接口列表中,某一網絡接口如eth0,選中網絡接口,通過菜單“捕獲”-“開始”或工具欄中的
按鈕,開始捕獲選定接口中的網絡分組;
B.也可以雙擊中間網絡接口列表中,某一網絡接口如eth0,可以開始抓取分組;
C.通過菜單“捕獲”-“停止”或工具欄中的按鈕
停止抓取分組。
D.通過菜單“捕獲”-“重新開始”或工具欄中的按鈕
重新開始抓取。
3、Wireshark窗口功能
(1)命令菜單和工具欄 命令菜單位于窗口的最頂部,是標準的下拉式菜單。最常用菜單命令有兩個: 文件、 捕獲。 文件 菜單允許你保存捕獲的分組數據,或打開一個已被保存的捕獲分組數據文件,或退出 WireShark 程序。 捕獲 菜單允許你開始捕獲分組。 工具欄位于命令菜單的下方,提供常用功能的快捷方式。如
:開始捕獲、
:停止捕獲、
:重新抓取分組。
(2)顯示過濾規則 在該字段中,可以填寫協議的名稱或其他信息,根據此內容可以對分組列表窗口中的分組進行過濾。
(3)捕獲分組列表(報文摘要窗口) 按行顯示已被捕獲的分組內容,其中包括: WireShark 賦予的分組序號、捕獲時間、分組的源地址和目的地址、協議類型、分組中所包含的協議說明信息。單擊某一列的列名,可以使分組按指定列進行排序。 在該列表中,所顯示的協議類型是發送或接收分組的最高層協議的類型。
(4)分組頭部明細(報文解碼窗口) 顯示捕獲分組列表窗口中被選中分組的頭部詳細信息。包括:與以太網幀有關的信息,與包含在該分組中的 IP 數據報有關的信息。 單擊以太網幀或 IP 數據報所在行左邊的向右或向下的箭頭可以展開或最小化相關信息。如果利用 TCP 或 UDP 承載分組, WireShark 也會顯示 TCP 或 UDP 協議頭部信息。分組最高層協議的頭部字段也會顯示在此窗口中。
(5)分組內容窗口(報文內容窗口) 以 ASCII 碼和十六進制兩種格式顯示被捕獲幀的完整內容。
4、篩選分組操作
通常,分組列表窗口中會顯示許多類型的分組。即使僅僅是下載了一個網頁,但是還有許多其他協議在您的計算機上運行,只是用戶所看不見。可以在中間過濾窗口中輸入過濾的分組協議如http, 選擇應用按鈕,就可以只讓HTTP分組消息顯示在分組列表窗口。
【實驗操作】
1、打開wireshark ,開始抓取網絡接口eth0上的分組,將窗口最小化;
雙擊eth0開始抓取分組
2、打開瀏覽器,訪問http://www.baidu.com, 等待網頁打開完畢;
3、切換到Wireshark窗口,并停止抓取分組;
? ? ? ? 紅色按鈕停止
4、利用分組過濾功能,過濾出http分組;在報文摘要窗口中點擊選取第1個http報文;
5、對當前報文的頭部明細窗口進行截圖,保存到實驗報告中,課后分析該報文,從外到內分別使用了什么協議,對應網絡體系結構的哪一層?
6、將分組列表中出現的協議名稱,順序填入代碼文件窗口首行末尾,不可修改原有的提示內容(相同協議只填寫一次,用符號,分隔)。
7、使用Wireshark文件菜單,將所捕獲的所有http報文保存到某個自定義的文件中,并下載到本地主機中。
對當前報文的頭部明細窗口進行截圖,保存到實驗報告中,課后分析該報文,從外到內分別使用了什么協議,對應網絡體系結構的哪一層?
分析:
- Frame 3958: 數據包的編號。
- 399 bytes on wire (3192 bits), 399 bytes captured (3192 bits) on interface 0: 數據包的大小,以字節和比特表示。
- Ethernet II, Src: 32: bd:db:e7:64:4b (32: bd:db:e7:64:4b), Dst: 5e:ae:36:ab:cd:e6 (5e:ae:36:ab:cd:e6): 數據包的以太網協議頭部信息,包括源MAC地址和目的MAC地址。
- Internet Protocol Version 4,Src: 172.16.160.16, Dst: 34.107.221.82: 數據包的IP協議頭部信息,包括源IP地址和目的IP地址,使用的是IPv4協議。
- Transmission Control Protocol, Src Port: 39328, Dst Port: 80,Seq: 1, Ack: 1, Len: 333: 數據包的TCP協議頭部信息,包括源端口號和目的端口號,序列號和確認號,以及數據長度。
- Hypertext Transfer Protocol: 數據包的應用層協議頭部信息,使用的是HTTP協議。
該報文從外到內分別使用了以下協議:
1.以太網協議(Ethernet II)
2.網絡層協議(IPv4)
3.傳輸層協議(TCP)
4.應用層協議(HTTP)
對應網絡體系結構的哪一層:
1.以太網協議(Ethernet II):數據鏈路層
2.網絡層協議(IPv4):網絡層
3.傳輸層協議(TCP):傳輸層
4.應用層協議(HTTP):應用層
第2關:Ethernet幀分析
【以太網幀格式】
以太幀有很多種類型。不同類型的幀具有不同的格式和 MTU 值。但在同種物理媒體上都可同時存在。
(1)以太網第二版或者稱之為 Ethernet II 幀,DIX 幀,是最常見的幀類型。并通常直接被 IP 協議使用;
(2)Novell 的非標準 IEEE 802.3 幀變種;
(3)IEEE 802.3幀(后跟邏輯鏈路控制(LLC) 幀);
(4)子網接入協議(SNAP)幀。
1、Ethernet II幀格式
以太網中大多數的數據幀使用的是 Ethernet II 格式:
Ethernet II 類型以太網幀的最小長度為 64 字節(6+6+2+46+4),最大長度為 1518 字節(6+6+2+1500+4)。其中:
(1)前 12 字節分別標識出發送數據幀的源節點 MAC 地址和接收數據幀的目標節點 MAC 地址(2)接下來的 2 個字節標識出以太網幀所攜帶的上層數據類型,如 16 進制數0x0800代表 IP 協議數據,16 進制數0x86dd代表 IPv6 協議數據,16 進制數0x809B代表 AppleTalk 協議數據,16 進制數0x8138代表 Novell 類型協議數據等;
(3)在不定長的數據字段(Data):其長度是 46 至 1500 字節;
(4)4 個字節的幀校驗序列(Frame. Check Sequence,FCS),采用 32 位 CRC 循環冗余校驗對從“目標 MAC 地址”字段到“數據”字段的數據進行校驗。
2、IEEE 802.3 幀格式:
各字段說明如下: (1)D-MAC && S-MAC:分別表示標識目標地址和源地址。它們均為 6 個字節長。如果傳輸出去的目標地址第一位是 0,則表示這是一個普通地址;如果是 1, 則表示這是一個組地址。 (2)Length / Type :通常這個字段用于指定報文頭后所接的數據類型。通常使用的值包括:IPv4(0x0800), IPv6(0x86DD), ARP(0x0806)。 而值0x8100代表一個 Q-tagged 幀(802.1q)。通常一個基礎的以太網幀長為 1518 字節,但是更多的新標準把這個值擴展為 2000 字節。 (3)MAC Client Data: 數據主體,由 LLC及 Data 構成。最小長度為 48 字節(加上幀頭 12 字節,CRC4 字節剛好 64 字節), 當數據主體小于 48 字節時,會添加 pad 字段。選取最小長度是出于沖突檢測的考慮(CSMA/CD)。而數據字段最大長度為 1502 字節。
IEEE 802.2 LLC的頭構成:
(A)DSAP 目的服務訪問字段,1 字節長,指明幀的目的上層協議類型; (B)ASAP 源服務訪問字段,1 字節長,指明幀的源上層協議類型; (C)control 控制 1 字節或者 2 字節,長度要看被封裝的 LLC 數據類型,是 LLC 數據報(類型1)1 字節,LLC 對話的一部分(類型2)2 字節。類型1 表明是無連接的,不可靠的 LLC 數據報,控制字段用0x03指明;類型 2 表明是面向連接可靠的 LLC 會話。 (4)FCS(Frame Check Sequence):也叫 CRC(Cyclic Redundancy Check),CRC 是差錯檢測碼,用來確定接收到的幀比特是否正確。
3、IEEE 802.3 SNAP
雖然 IEEE 802.3 是標準,但沒有被業界采用。以太網 II 已成事實標準。于是 IEEE 802.3 擴展產生 IEEE 802.3 SNAP 來兼容以太網網頭部協議,在 IEEE 802.2 LLC 頭部后插入了 SNAP 頭部。 SNAP 頭部字段構成:
(1)組織代碼 3 字節長,指明維護接下來 2 字節意義的組織,對 IP 和 ARP,該字段被設置為0x00-00-00。
(2)以太網類型 如果組織代碼為0x00-00-00,接下來 2 字節就是以太網類型 IP (0x0800)ARP(0x0806)。 因為增加了 LLC 頭部的 3 字節和 SNAP 頭部的 5 字節所以有效載荷比以太網 II 少 8 個字節。
【實驗任務】
1、切換到終端窗口
?
2、查看虛擬機eth0網卡的MAC地址、IP地址、子網掩碼,并記錄到實驗報告中。 使用命令:ifconfig
3、查看虛擬機網關IP地址 使用命令:route 對應default行
4、查看虛擬機網關MAC地址 使用命令:arp 根據網關IP地址,查ARP表得到對應的MAC地址,記錄到實驗報告中。
5、打開wireshark ,開始抓取網絡接口eth0上的分組,將窗口最小化;(雙擊)
6、打開瀏覽器,訪問http://www.baidu.com, 等待網頁打開完畢;
7、切換到Wireshark窗口,并停止抓取分組;
8、利用分組過濾功能,過濾出http分組;在報文摘要窗口中點擊選取第1個http報文;
9、分析當前報文采用以太網哪種幀格式,把典型字段值記錄到到實驗報告中。
10、確定當前報文的目的MAC地址指向目標(選填:平臺虛擬機的網關MAC地址/主機的MAC地址),并填寫到代碼文件窗口第一行末尾(不要破壞“冒號”之前提示內容)。 注意:填寫內容僅限于范圍(平臺虛擬機、平臺虛擬機的網關、百度服務器、不能確定)
11、在捕獲的報文中,找到一個廣播幀,記錄廣播型MAC地址值(采用標準寫法,16進制、冒號分隔),并填寫到代碼文件窗口第二行末尾(不要破壞“冒號”之前提示內容)。
采用的是Ethernet II幀格式,5a?48?29?f6?bf?25
第3關:IP報文分析
1、MAC幀與數據負載
在TCP/IP網絡內,MAC幀的數據部分只有一個字段,其長度在46到1500字節之間,包含的信息是網絡層傳下來的數據,網絡層常見協議有IP、ARP、ICMP協議,所以MAC幀的數據字段通常是一個IP分組、ARP報文。
2、IP數據報格式:
IP數據報(IP Datagram)是一個與硬件無關的虛擬包, 由首部和數據兩部分組成,其格式如下圖所示。首部的前一部分是固定長度,共20字節,是所有IP數據報必須具有的。在首部的固定部分的后面是一些可選字段,其長度是可變的。首部中的源地址和目的地址都是IP協議地址。
1.版本:ip報文中,版本占了4位,用來表示該協議采用的是那一個版本的ip,相同版本的ip才能進行通信。一般此處的值為4,表示ipv4。
2.頭長度:該字段用四位表示,表示整個ip包頭的長度,其中數的單位是4字節。即二進制數0000-1111(十進制數0-15),其中一個最小長度為0字節,最大長度為60字節。一般來說此處的值為0101,表示頭長度為20字節。
3.Tos服務字段:該字段用8位表示。該字段一般情況下不使用。
4.總長度:該字段表示整個ip報文的長度,單位是1字節。能表示的最大字節為2^16-1=65535字節。不過由于鏈路層的MTU限制。超過1480字節后就會被分片(以太幀MTU為1500的情況下,除去20字節的包頭)
5.標識:該字段是ip軟件實現的時候自動產生的,該字段的目的不是為了接受方的按序接受而設置的,而是在ip分片以后,用來標識同一片分片的。方便ip分片的重組。
6.標志:該字段是與ip分片有關的。其中有三位,但只有兩位是有效的,分別為MF,DF,MF。MF標識后面是否還有分片,為1時,表示后面還有分片。DF標識是否能分片,為0表示可以分片
7.片偏移:該字段是與ip分片后,相應的ip片在總的ip片的位置。該字段的單位是8字節。比如,一個長度為4000字節的ip報文,到達路由器。這是超過了鏈路層的MTU,需要進行分片,4000字節中,20字節為包頭,3980字節為數據,需要分成3個ip片(鏈路層MTU為1500),那么第一個分片的片偏移就是0,表示該分片在3980的第0位開始,第1479位結束。第二個ip片的片偏移為185(1480/8),表示該分片開始的位置在原來ip的第1480位,結束在2959。第三片的片偏移為370(2960/8),表示開始的時候是2960位,結束的時候在3979位。
8.TTL:該片表示生存周期,該值占8位。ip分片每經過一個路由器該值減一,它的出現是為了防止路由環路,浪費帶寬的問題。比如,該ip在R1路由器發送到R2路由器。R2路由器又發給R1路由器。防止這種循環。window系統默認為128.
9.協議:該值標識上層的協議。占8位。其中1,標識ICMP、2標識IGMP、6標識TCP、17標識UDP、89標識OSPF。
10校驗和:該值是對整個數據包的包頭進行的校驗。占16位。
11.源地址和目的地址。標識發送ip片的源和目的ip,32位
12.可選項,一般一些特殊的要求會加在這個部分。
3、ICMP報文格式
網絡本身是不可靠的,在網絡傳輸過程中,可能會發生許多突發事件并導致數據傳輸失敗。網絡層的IP協議是一個無連接的協議,它不會處理網絡層傳輸中的故障,而位于網絡層的ICMP協議卻恰好彌補了IP的缺限,它使用IP協議進行信息傳遞,向數據包中的源端節點提供發生在網絡層的錯誤信息反饋。ICMP可以看作是IP協議的伴隨協議。ICMP報文被封裝在IP 數據報發送。
? 類型:標識生成的錯誤報文,它是ICMP報文中的第一個字段;
? 代碼:進一步地限定生成ICMP報文。該字段用來查找產生錯誤的原因;
? 校驗和:存儲了ICMP所使用的校驗和值。
? 未使用:保留字段,供將來使用,起值設為0
? 數據:包含了所有接受到的數據報的IP報頭。還包含IP數據報中前8個字節的數據;
4、Ping 命令
其主要功能是用于網絡連通測試,通信協議是ICMP,Windows系統下Ping命令格式如下:
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count]
[[-j host-list] | [-k host-list]] [-w timeout] target_name 這里對實驗中可能用到的參數解釋如下:
-t :用戶所在主機不斷向目標主機發送回送請求報文 ,直到用戶中斷;
-n count: 指定要 Ping 多少次,具體次數由后面的 count 來指定 ,缺省值為 4;
-l size: 指定發送到目標主機的數據包的大小 ,默認為 32 字節,最大值是 65,527;
-w timeout:指定超時間隔,單位為毫秒;
target_name:指定要 ping 的遠程計算機。
Unix/Linux系統下Ping命令使用格式如下:
ping [-c count] [-s size] target_name
-c count: 指定要 Ping 多少次,具體次數由后面的 count 來指定
-s size: 指定發送到目標主機的數據包的大小,默認為 32 字節
target_name:指定要 ping 的遠程計算機。
5、traceroute命令與工作原理
其主要功能是跟蹤(報文傳輸)沿途所經過的路由,通信協議是ICMP,用于unix、linux系統環境,在Windows系統環境內,對應的命令是tracert。命令格式:Traceroute 目標主機名或IP. Traceroute程序的設計是利用ICMP及IP header的TTL(Time To Live)欄位(field)。首先,traceroute送出一個TTL是1的IP datagram(其實,每次送出的為3個40字節的包,包括源地址,目的地址和包發出的時間標簽)到目的地,當路徑上的第一個路由器(router)收到這個datagram時,它將TTL減1。此時,TTL變為0了,所以該路由器會將此datagram丟掉,并送回一個「ICMP time exceeded」消息(包括發IP包的源地址,IP包的所有內容及路由器的IP地址),traceroute 收到這個消息后,便知道這個路由器存在于這個路徑上,接著traceroute 再送出另一個TTL是2 的datagram,發現第2 個路由器...... traceroute 每次將送出的datagram的TTL 加1來發現另一個路由器,這個重復的動作一直持續到某個datagram 抵達目的地。當datagram到達目的地后,該主機并不會送回ICMP time exceeded消息,因為它已是目的地了,那么traceroute如何得知目的地到達了呢?Traceroute在送出UDP datagrams到目的地時,它所選擇送達的port number 是一個一般應用程序都不會用的號碼(30000 以上),所以當此UDP datagram 到達目的地后該主機會送回一個「ICMP port unreachable」的消息,而當traceroute 收到這個消息時,便知道目的地已經到達了。 Traceroute提取發 ICMP TTL到期消息設備的IP地址并作域名解析。每次 Traceroute都打印出一系列數據,包括所經過的路由設備的域名及 IP地址,三個包每次來回所花時間。
【實驗任務】
1、切換到終端窗口
2、已知某目標機IP地址是119.38.215.130,測試IP報文由平臺虛擬機發送至目標機,沿途經過哪些路由器? 執行命令:traceroute 119.38.215.130 把得到的數據整理后,保存到實驗報告中,課后分析沿途經過哪些路由器。
3、分析沿途所經過的路由器的數目,并填寫到代碼文件窗口第一行末尾(不要破壞“冒號”之前提示內容)。 注:有兩種可能的答案,系統只認其中一種(如果你的答案系統不認,可以將其減1或加1再試)。
4、打開wireshark ,開始抓取網絡接口eth0上的分組,將窗口最小化;
5、在終端窗口內,執行如下命令: ping -c 3 -s 0 www.educoder.net 在實驗報告中解釋該命令行各參數的含義; 把得到的數據整理后,保存到實驗報告中,課后完成數據分析。
6、切換到Wireshark窗口,并停止抓取分組;
7、利用分組過濾功能,過濾出icmp分組;在報文摘要窗口中點擊選取第1個icmp報文;
8、調節分組頭部細節窗口大小,將其中IP報頭和ICMP報頭全部字段都展開,然后對該窗口進行截圖,并粘貼到實驗報告中,課后對其中主要字段進行分析解讀。
9、分析第一個icmp響應(reply)報文,把其類型值、代碼,分別填寫到代碼文件窗口的第二、三行末尾(不要破壞“冒號”之前提示內容)。
調節分組頭部細節窗口大小,將其中IP報頭和ICMP報頭全部字段都展開,然后對該窗口進行截圖,并粘貼到實驗報告中,課后對其中主要字段進行分析解讀。
圖 21 IP
這是一個IPv4的數據包,其中包含了源IP地址和目標IP地址,以及其他一些信息。具體分析如下:
- 版本號為4,表示這是IPv4協議。
- 頭部長度為20字節,即5個32位字長。
- 差分服務字段為0x14,其中DSCP為Unknown,ECN為Not-ECT。
- 總長度為28字節。
- 標識符為0x3b17,即15127。
- 標志位為0x4000,表示不分片。
- 存活時間為55。
- 協議為ICMP,即Internet控制報文協議。
- 頭部校驗和為0xdb65。
- 源IP地址為122.225.212.158。
- 目標IP地址為172.16.49.192。
圖 22 icmp
這是一個ICMP協議的回復報文,其中包含了以下信息:
- Type: 0,表示這是一個回復報文,而不是請求報文。
- Code: 0,表示這是一個Echo (ping) reply。
- Checksum: 0xfdd7,表示校驗和正確。
- Identifier (BE): 552 (0x0228),表示標識符為552。
- Identifier (LE): 10242 (0x2802),表示標識符的小端字節序為10242。
- Sequence number (BE): 0 (0x0000),表示序列號為0。
- Sequence number (LE): 0 (0x0000),表示序列號的小端字節序為0。
根據這些信息,我們可以確定這是一個回復報文,而不是請求報文,并且是一個Echo (ping) reply。標識符為552,序列號為0。校驗和正確。