實驗二、網路(協定)分析儀

 

實驗目的:

 

1.       認識網路協定分析儀Sniffer的基本操作,以及Internet的常用工具程式。

2.       經由學習Ethernet網路的原理,認識OSI七層協定中實體層及Data Link層的原理及操作。

3.       認識在OSI七層協定中網路層的協定運作,包括IPInternet Protocol),ARPAddress Resolution Protocol),以及ICMPInternet Control Message Protocol)。

4.       學習pingarpnetstattracert等等網路相關程式指令的使用。

5.       預報(打字、限一頁),請說明pingarpnetstattracert各指令有啥用途。

6.       同組同學請先確實理解討論過實驗內容,才不會做實驗時茫茫無頭緒。

 

實驗設備:

 

Ø         硬體部分:

1.       兩台個人電腦 (附網路卡)

2.       一台交換式集線器。

3.       一個小型的集線器。

4.       一台sniffer (乙太網路協定分析儀)

5.       Ethereal軟體。

 

實驗原理:

 

OSI將網路分成七層的模型(圖1-1),從下而上分別是實體層(Physical),資料鏈結層(Data link),網路層(Network),傳輸層(Transport),會議層(Session),表現層(Presentation),以及應用層(Application)。本實驗是探討這個模型的最低兩層,我們將在乙太網路上(Ethernet)進行實驗。

 

1.     乙太網路(Ethernet

乙太網路的實體環境有很多種,其中最常見的有∼使用Coaxial CableCoax)和使用10/100 BaseT兩種。使用Coax所連起來的實體網路,是呈Bus結構的,而使用10/100 BaseT的話,因為必須連到一個集線器(Hub),所以是呈現星狀結構的。集線器所提供的功能是把每一個portinput封包output到其它所有的port去,所以等於是一個multi-port repeater,也稱為Dumb Hub。除了接線方式不同外,這兩種方法所建起來的實體網路在功能上並沒有什麼不同,都歸屬於乙太網路(Ethernet)。

 

Application

 

SNMPDNS

TELNET FTP

Presentation

Session

Transport

TCPUDP

Network

IPICMP

Datalink

 ARP

Ethernet

Physical

1-1OSI Reference Model

 

乙太網路是一種共享媒體(shared medium),所以必須要有一個方法來決定由誰來使用傳輸媒體,也就是Medium Access ControlMAC)。乙太網路是使用CSMA/CDCarrier Sense Multiple Access / Collision Detection)的方法來做MAC,也就是先看看傳輸媒體有沒有人正在用,如果沒有的話,就開始傳送封包,萬一有其它的主機也剛好開始傳送封包的話,就會造成碰撞(collision),那麼這些正在送的主機全部必須停止傳送,等一下再試試看。所以同時間內最多只有一台可以傳送封包。這些分享傳輸媒體的主機,就稱為在同一collision domain (或稱為segment)內。

 

這種共享媒體架構之下,網路的效能會隨著主機數目的增加而變差。因為當10Mbps的頻寬不變,而使用者增加愈多時,碰撞會愈嚴重,如此每台主機能分到的頻寬也就愈少。為了解決這個問題,便有了橋接器(bridge)。橋接器可以把一個大範圍的segment分割成兩個較小的segment;如此,同一時間內就可以有兩台機器(在不同collision domain內)同時傳送封包,所以整體上來看,頻寬幾乎加倍,同時減少了不必要的交通量,並增進網路安全。

 

橋接器所能分隔的是只送往單一目的地的封包(uni-cast packet)。如果是目的地為ff:ff:ff:ff:ff:ff的廣播封包(broadcast packet),則橋接器會將之forward至另一個segment。這些用橋接器所連結起來的Ethernet segment,稱為一個broadcast domain。在同一broadcast domain裡的主機,都可以直接互通。不同broadcast domain裡的主機,就必須經由router才能互通。

 

交換式集線器(Switching Hub),有人稱為fast multi-port bridge,也是用來分隔segment增加網路效能用的。當以每一個port為單位來作switching時,而將port直接連到一台主機時,理論上那台主機便獨享所有的頻寬。Switching的結果會把目的地不是這個portuni-cast封包過濾掉,所以每port只看得到屬於這個port的封包,而且同時間可以有多個port平行地傳送(parallelism),網路總體頻寬因而增加。

 

1.     IPInternet Protocol

IPARPANET的網路層協定,負責做routing(封包路徑選定及傳送),fragmentation and re-assembly(封包分割及重組)。

 

0

4

8

 

16

 

 

31

Version

IHL

Type Of Service

Total Length

Identification

Flags

Fragment Offset

Time To Live

Protocol

Header Checksum

Source IP address

Destination IP address

Options (if any)

Data

2-1IP header的格式unitbit

 

l          2-1中各欄位的解釋如下:

Version

IP version

IHL

Internet Header Length, in 32bits

Type of Service

Reliability, precedence, delay, and throughput

Total Length

Length of the entire datagram, in Bytes

Identification

Uniquely identifies each datagram

Flags

"Don't Fragment" - don't fragment

"More Fragments" - more fragments are coming

Fragment Offset

The position of the fragment's data relative to the beginning of the data in the original datagram

Time To LiveTTL

The number of hops the datagram is allowed to remain "alive".  Each gateway and router decrements it by one.  When it becomes zero, the fragment is discarded.

Protocol

Identifies the upper layer protocol

Header Checksum

Checksum for the IP header

Source Address

The IP address of the source of the datagram

Destination Address

The IP address of the destination of the datagram

 

2.     ICMPInternet Control Message Protocol

ICMP是用來讓網路上的機器交換控制訊息,以處理一些網路的特殊或錯誤情況。ICMP Message有許多種Type,常見的有:

 

l          常見的ICMP Message Types

ECHO REQUEST

ECHO REPLY

測試可否連上某主機(connectivity)。當主機收到一個ECHO REQUEST的封包時,就會回一個ECHO REPLY的封包。

REDIRECT

用來改變route,收到的主機可以在routing table中加上一個dynamicroute

SOURCE QUENCH

用來通知一台主機減少送出的封包量

DESTINATION UNREACHABLE

router找不到目的主機時,或因為其它原因而使封包無法送至終點時,用來通知source的封包。

TIME EXCEED

是當封包TTL變成0了而尚未抵達終點時通知source的訊息。

 

一般常用的ping就是利用ICMP Echo Request來測試網路有沒有問題。當一台router收到一個TTL1的封包,可是目的地還沒到的時候,它會把這個封包丟了,然後送一個Time Exceed的封包給source,讓source知道它的封包在半路上被丟掉了,可以再做處理。如果封包到達了目的地,卻發現沒有process要收這個封包的時候,它就回一個Destination Unreachable的封包給source。諸如此類的協定方式,ICMP便可以用來處理一些問題。

 

3.     ARPAddress Resolution Protocol

Internet網路中,網路層的IP需要使用下層的實體網路例如:乙太網路的傳送服務來將資料封包送到目的地。但是IP層只會知道目的地的IP位址,而不知道目的地的硬體位址,所以要有一種方法從IP位址來找出對應的實體位址,而這就是ARP的功能。

 

在乙太網路裡,封包的目的位址可以是指給所有人廣播位址 ff:ff:ff:ff:ff:ff,所以要找出某一個IP位址所對應的乙太網路位址,就可以由來源端送出一個廣播封包,裡面包含了要找的IP位址和來源端的乙太網路位址,每台主機都會收到。如果這個IP位址的主機看到這個封包,它就會回一個封包給來源端主機,包含了它的乙太網路位址。然後來源端主機就可以把這個硬體位址存在ARP cache中。同時目的端主機也會記下來源端主機的硬體位址,因為很可能馬上就會用到了。圖4-1展示出ARP封包的格式。

 

0

2

4

7

Hard Type

Protocol Type

Hard Size

Prot Size

operation

sender Ethernet address

sender IP addr

sender IP addr

target Ethernet address

target IP address

 

4-1ARP封包的格式

 

l          4-1中部分欄位的解釋如下:

Hard Size =

Hardware Address Length

Prot Size =

Protocol (IP) Address Length

Operation =

1 ARP request

2 ARP reply

3 RARP request

4 RARP reply

 

實驗步驟(Sniffer的部分,將用電腦軟體ethereal取代):

 

Fig. 1 實驗二網路連結(架構一)

 

Fig. 2 實驗二網路連結(架構二)

 

Ø         第一部分

1.       連結電腦網路如架構一,包括PC兩台以及sniffer都接往hubhub再連往switching hub

2.       設定sniffer只截取和pc1來往的封包(sniffer上設定以PC1IP位址與Ethernet位址分別做實驗),開始截取封包,並把以下每一個步驟所抓到的封包(若有的話)分別歸類存檔(請注意檔案名稱)。

3.       使用arp指令刪除pc1上所有的對照表。

4.       使用ping程式從pc1連往pc2,請試用domain nameIP address兩種方法。

5.       重作一次步驟4

6.       重新連結電腦網路如架構二,並重覆步驟2-5

 

Ø         第二部分

1.       連結電腦網路如架構一,pc1pc2,以及sniffer都接往hubhub再連往switching hub

2.       設定sniffer只截取和pc1來往的封包(sniffer上設定以PC1IP位址與Ethernet位址分別做實驗),開始截取封包,並把以下每一個步驟所抓到的封包(若有的話)分別歸類存檔。

3.       使用arp指令刪除pc1上所有的對照表。

4.       pc1上執行以下指令並記下結果(螢幕顯示抓取封包結果

> ftp ftp.ntu.edu.tw

> ping ftp.ntu.edu.tw

> arp -a

5.       pc1上執行以下指令並記下結果(螢幕顯示抓取封包結果

> netstat r

不用抓封包

> netstat e

不用抓封包

> netstat s

不用抓封包

> tracert www.yahoo.com

> ping -r 6 bbs.nsysu.edu.tw

> ping -i 1 bbs.nsysu.edu.tw

6.       tracert的結果,ping其中每hop,並記下Round Trip Time

7.       停止截取,把抓到的資料存成檔案(請注意檔案名稱)。

8.       把檔案存至軟碟並進一步分析。

 

實驗討論請於實驗完成後立即討論找資料,並整理草稿打字Wordemail給助教

 

Ø         第一部分

1.       Fig. 1Fig. 2種架構為基礎,說明這兩種網路架構有什麼不同?

2.       Sniffer上設定用IP address和用MAC Address所抓到的封包數有何不同?為什麼?(請以理論說明)

3.       在步驟45所抓到的封包有何不同?為什麼?(請以實驗取得封包說明)

4.       以網路分層的觀念解釋為什麼在不同broadcast domain的機器一定要經過router才能互通?

5.       在截取到的封包中的Ethernet header裡有destination Ethernet Address,而IP header中也有一個destination IP Address。請問,這兩個位是不是同一台機器?為什麼?

6.       可不可以利用sniffer知道網路上有沒有switching hub的存在?

7.       從實驗結果,討論要如何利用switching hub來增進網路安全。

 

Ø         第二部分

1.       執行ftp ftp.ntu.edu.tw的時候,抓到的封包的目的IP位址為何?又目的Ethernet位址是那裡(用arp查出其IP address/Domain Name)?是不是ftp.ntu.edu.tw的?為什麼?

2.       執行ping ftp.ntu.edu.tw的時候,送出的封包是那種ICMP封包?

3.       執行ping -i 1 bbs.nsysu.edu.tw的時候,收到的封包是那種ICMP封包?

4.       請問實驗中之ARP requestARP reply的封包的目的地各為那裡?

5.       在使用arp -a命令時,會送出ARP封包嗎

6.       由實驗結果,找出往www.yahoo.com的封包所經由的路徑。並且利用抓到的封包,說明traceroute是用什麼方法來找路徑的。

7.       由實驗結果,說明往www.yahoo.com的每一個hop所花的時間,並由此找出這條通路的瓶頸所在。