一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

TCP/IP詳解(2)鏈路層,第二章筆記整理

 筆錄收藏 2012-09-10

一:鏈路層有時也叫數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層。通常包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機(jī)中對應(yīng)的網(wǎng)絡(luò)接口卡。它們一起處理與電纜(或其他傳輸媒介)的物理接口細(xì)節(jié)。

鏈路層主要有三個目的:

(1)為I P模塊發(fā)送和接收I P數(shù)據(jù)報;

(2)為A R P模塊發(fā)送A R P請求和接收A R P應(yīng)答;

(3)為R A R P發(fā)送R A R P請求和接收R A R P應(yīng)答。

T C P / I P支持多種不同的鏈路層協(xié)議,這取決于網(wǎng)絡(luò)所使用的硬件,如以太網(wǎng)、令牌環(huán)網(wǎng)、F D D I(光纖分布式數(shù)據(jù)接口)及R S-2 3 2串行線路等。

下面主要講解:

兩個串行接口鏈路層協(xié)議( S L I P和P P P) ,以及大多數(shù)實現(xiàn)都包含的環(huán)回( l o o p b a c k)驅(qū)動程序。

 

二:以太網(wǎng)和IEEE802封裝

 

三:SLIP串行線路IP

S L I P的全稱是Serial Line IP。它是一種在串行線路上對I P數(shù)據(jù)報進(jìn)行封裝的簡單形式,在RFC 1055[Romkey 1988]中有詳細(xì)描述。S L I P適用于家庭中每臺計算機(jī)幾乎都有的 R S - 2 3 2串行端口和高速調(diào)制解調(diào)器接入I n t e r n e t。
下面的規(guī)則描述了S L I P協(xié)議定義的幀格式:
1) IP數(shù)據(jù)報以一個稱作E N D(0 x c 0)的特殊字符結(jié)束。同時,為了防止數(shù)據(jù)報到來之前的線路噪聲被當(dāng)成數(shù)據(jù)報內(nèi)容,大多數(shù)實現(xiàn)在數(shù)據(jù)報的開始處也傳一個 E N D字符(如果有線路噪聲,那么E N D字符將結(jié)束這份錯誤的報文。這樣當(dāng)前的報文得以正確地傳輸,而前一個錯誤報文交給上層后,會發(fā)現(xiàn)其內(nèi)容毫無意義而被丟棄)。
2) 如果I P報文中某個字符為 E N D,那么就要連續(xù)傳輸兩個字節(jié) 0 x d b和0 x d c來取代它。0 x d b這個特殊字符被稱作S L I P的E S C字符,但是它的值與A S C I I碼的E S C字符(0 x 1 b)不同。
3) 如果I P報文中某個字符為S L I P的E S C字符,那么就要連續(xù)傳輸兩個字節(jié) 0 x d b和0 x d d來取代它。

 

SLIP的缺點(diǎn):

1每一段必須知道堆放的IP地址。沒有辦法把本端的IP地址通知給另一端

2數(shù)據(jù)幀中沒有類型字段

3SLIP沒有在數(shù)據(jù)幀中加上校驗和(類似于以太網(wǎng)中的CRC字段)

盡管存在這些缺點(diǎn),SLIP仍然是一種廣泛使用的協(xié)議。

 

四:壓縮的SLIP

由于串行線路的速率通常較低( 19200 b/s或更低) ,而且通信經(jīng)常是交互式的(如 Te l n e t和R l o g i n,二者都使用T C P) ,因此在S L I P線路上有許多小的T C P分組進(jìn)行交換。為了傳送1個字節(jié)的數(shù)據(jù)需要2 0個字節(jié)的I P首部和2 0個字節(jié)的T C P首部,總數(shù)超過4 0個字節(jié)(1 9 . 2節(jié)描述了R l o g i n會話過程中,當(dāng)敲入一個簡單命令時這些小報文傳輸?shù)脑敿?xì)情況) 。

既然承認(rèn)這些性能上的缺陷,于是人們提出一個被稱作 C S L I P(即壓縮S L I P)的新協(xié)議,它在RFC 1144[Jacobson 1990a]中被詳細(xì)描述。C S L I P一般能把上面的4 0個字節(jié)壓縮到3或5個字節(jié)。它能在C S L I P的每一端維持多達(dá)1 6個T C P連接,并且知道其中每個連接的首部中的某些字段一般不會發(fā)生變化。對于那些發(fā)生變化的字段,大多數(shù)只是一些小的數(shù)字和的改變。這些被壓縮的首部大大地縮短了交互響應(yīng)時間。
現(xiàn)在大多數(shù)的S L I P產(chǎn)品都支持C S L I P。作者所在的子網(wǎng)(參見封面內(nèi)頁)中有兩條
SLIP鏈路,它們均是CSLIP鏈路。

 

五:PPP點(diǎn)對點(diǎn)協(xié)議

 

 

總的來說,P P P比S L I P具有下面這些優(yōu)點(diǎn):

(1) PPP支持在單根串行線路上運(yùn)行多種協(xié)議,不只是I P協(xié)議;

(2)  每一幀都有循環(huán)冗余檢驗;

(3)  通信雙方可以進(jìn)行I P地址的動態(tài)協(xié)商(使用I P網(wǎng)絡(luò)控制協(xié)議);

(4)  與C S L I P類似,對T C P和I P報文首部進(jìn)行壓縮;

(5) 鏈路控制協(xié)議可以對多個數(shù)據(jù)鏈路選項進(jìn)行設(shè)置。為這些優(yōu)點(diǎn)付出的代價是在每一幀的首部增加 3個字節(jié),當(dāng)建立鏈路時要發(fā)送幾幀協(xié)商數(shù)據(jù),以及更為復(fù)雜的實現(xiàn)。

盡管P P P比S L I P有更多的優(yōu)點(diǎn),但是現(xiàn)在的S L I P用戶仍然比P P P用戶多。隨著產(chǎn)品
越來越多,產(chǎn)家也開始逐漸支持PPP,因此最終PPP應(yīng)該取代SLIP。

 

六:環(huán)路接口

平時我們用127.0.0.1來嘗試自己的機(jī)器服務(wù)器好使不好使。走的就是這個loopback接口。對于環(huán)回接口,有如下三點(diǎn)值得注意:

1傳給環(huán)回地址(一般是127.0.0.1)的任何數(shù)據(jù)均作為I P輸入。

2傳給廣播地址或多播地址的數(shù)據(jù)報復(fù)制一份傳給環(huán)回接口,然后送到以太網(wǎng)上。這是 因為廣播傳送和多播傳送的定義包含主機(jī)本身。

3任何傳給該主機(jī)IP地址的數(shù)據(jù)均送到環(huán)回接口。

 

七:最大傳輸單元MTU

 如果I P層有一個數(shù)據(jù)報要傳,而且數(shù)據(jù)的長度比鏈路層的 M T U還大,那么I P層就需要進(jìn)行分片(f r a g m e n t a t i o n) ,把數(shù)據(jù)報分成若干片,這樣每一片都小于 M T U

在Windows下的注冊表可以找到相關(guān)的MTU大小。

 

MTU對SLIP和CSLIP鏈路的傳輸延的計算,這里就不講了。

PPP(Point to Point Protocol)點(diǎn)對點(diǎn)協(xié)議
  它是用于串行接口的兩臺計算機(jī)的通信協(xié)議,是為通過電話線連接計算機(jī)和服務(wù)器而彼此通信而制定的協(xié)議。網(wǎng)絡(luò)服務(wù)提供商可以提供您點(diǎn)對點(diǎn)連接,這樣提供商的服務(wù)器就可以響應(yīng)您的請求,將您的請求接收并發(fā)送到網(wǎng)絡(luò)上,然后將網(wǎng)絡(luò)上的響應(yīng)送回。PPP是使用IP協(xié)議,有時它被認(rèn)為是TCP/IP協(xié)議族的一員。PPP協(xié)議可用于不同介質(zhì)上包括雙絞線,光纖和衛(wèi)星傳輸?shù)娜p工協(xié)議,它使用HDLC進(jìn)行包的裝入。PPP協(xié)議既可以處理同步通信也可以處理異步通信,可以允許多個用戶共享一個線路,又可發(fā)進(jìn)行SLIP協(xié)議所沒有的差錯控制。
TCP/IP(Transmission Control Protocol/Internet Protocol)傳輸控制協(xié)議/Internet協(xié)議
   TCP/IP協(xié)議起源于美國國防高級研究計劃局。提供可靠數(shù)據(jù)傳輸?shù)膮f(xié)議稱為傳輸控制協(xié)議TCP,好比貨物裝箱單,保證數(shù)據(jù)在傳輸過程中不會丟失;提供無連接數(shù)據(jù)報服務(wù)的協(xié)議稱為網(wǎng)絡(luò)協(xié)議IP,好比收發(fā)貨人的地址和姓名,保證數(shù)據(jù)到達(dá)指定的地點(diǎn)。TCP/IP協(xié)議是互聯(lián)網(wǎng)上廣泛使用的一種協(xié)議,使用TCP/IP協(xié)議的因特網(wǎng)等網(wǎng)絡(luò)提供的主要服務(wù)有:電子郵件、文件傳送、遠(yuǎn)程登錄、網(wǎng)絡(luò)文件系統(tǒng)、電視會議系統(tǒng)和萬維網(wǎng)。它是Interent的基礎(chǔ),它提供了在廣域網(wǎng)內(nèi)的路由功能,而且使Internet上的不同主機(jī)可以互聯(lián)。從概念上,它可以映射到四層:網(wǎng)絡(luò)接口層,這一層負(fù)責(zé)在線路上傳輸幀并從線路上接收幀;Internet層,這一層中包括了IP協(xié)議,IP協(xié)議生成Internet數(shù)據(jù)報,進(jìn)行必要的路由算法,IP協(xié)議實際上可以分為四部分:ARP,ICMP,IGMP和IP;再上向就是傳輸層,這一層負(fù)責(zé)管理計算機(jī)間的會話,這一層包括兩個協(xié)議TCP和UDP,由應(yīng)用程序的要求不同可以使用不同的協(xié)議進(jìn)行通信;最后一層是應(yīng)用層,就是我們熟悉的FTP,DNS,TELNET等。熟悉TCP/IP是熟悉Internet的必由之路。

UDP(User Datagram Protocol)用戶數(shù)據(jù)報協(xié)議
  它是定義用來在互連網(wǎng)絡(luò)環(huán)境中提供包交換的計算機(jī)通信的協(xié)議,此協(xié)議默認(rèn)認(rèn)為網(wǎng)路協(xié)議(IP)是其下層協(xié)議。UDP是TCP的另外一種方法,象TCP一樣,UDP使用IP協(xié)議來獲得數(shù)據(jù)單元(叫做數(shù)據(jù)報),不象TCP的是,它不提供包(數(shù)據(jù)報)的分組和組裝服務(wù)。而且,它還不提供對包的排序,這意味著,程序程序必須自己確定信息是否完全地正確地到達(dá)目的地。如果網(wǎng)絡(luò)程序要加快處理速度,那使用UPD就比TCP要好。UDP提供兩種不由IP層提供的服務(wù),它提供端口號來區(qū)別不同用戶的請求,而且可以提供奇偶校驗。在OSI模式中,UDP和TCP一樣處于第四層,傳輸層。

可以說PPP是一種連接方式,TCP、UDP是傳送數(shù)據(jù)的方式

 

TCP/IP成功的原因之一是它幾乎能在任何數(shù)據(jù)鏈路計數(shù)上運(yùn)行。

***********************************************************************************************************************************************************************************************************************************

[置頂] TCP/IP詳解(3)IP:網(wǎng)際協(xié)議,第三章筆記整理 

一.引言:

IP是TCP/IP協(xié)議族中最為核心的協(xié)議,所有的TCP,UDP,ICMP和IGMP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸。要注意的是,IP不是可靠的協(xié)議,這是說,IP協(xié)議沒有提供一種數(shù)據(jù)未傳達(dá)以后的處理機(jī)制--這被認(rèn)為是上層協(xié)議--TCP或UDP要做的事情。所以這也就出現(xiàn)了TCP是一個可靠的協(xié)議,而UDP就沒有那么可靠的區(qū)別。

 

二.IP首部:

IP數(shù)據(jù)報格式如下,普通的IP首部長為20個字節(jié),除非含有選項字段

四個字節(jié)的32bit,首先是0-7bit,8-15,16-23,24-31

服務(wù)類型TOS,其中3位是優(yōu)先權(quán)字段(已經(jīng)忽略),4bit的TOS分別代表最小延時,最大吞吐量,最高可靠性和最小費(fèi)用。

Te l n e t和R l o g i n這兩個交互應(yīng)用要求最小的傳輸時延,因為人們主要用它們來傳輸少量的交互數(shù)據(jù)。另一方面, F T P文件傳輸則要求有最大的吞吐量。最高可靠性被指明給網(wǎng)絡(luò)管理(S N M P)和路由選擇協(xié)議。用戶網(wǎng)絡(luò)新聞( Usenet news, NNTP)是唯一要求最小費(fèi)用的應(yīng)用。

ICMP,IGMP,UDP,TCP在它們格子的首部中均含有同時覆蓋首部和數(shù)據(jù)檢驗和碼。

I C M P、I G M P、U D P和T C P都采用相同的檢驗和算法,盡管T C P和U D P除了本身的首部和數(shù)據(jù)外,在I P首部中還包含不同的字段。在RFC中有關(guān)于如何計算I n t e r n e t檢驗和的實現(xiàn)技術(shù)。由于路由器經(jīng)常只修改 T T L字段(減1) ,因此當(dāng)路由器轉(zhuǎn)發(fā)一份報文時可以增加它的檢驗和,而不需要對 I P整個首部進(jìn)行重新計算。 R F C為此給出了一個很有效的方法。

 

三IP路由選擇:

當(dāng)一個IP數(shù)據(jù)包準(zhǔn)備好了的時候,IP數(shù)據(jù)包(或者說是路由器)是如何將數(shù)據(jù)包送到目的地的呢?它是怎么選擇一個合適的路徑來"送貨"的呢?

最特殊的情況是目的主機(jī)和主機(jī)直連,那么主機(jī)根本不用尋找路由,直接把數(shù)據(jù)傳遞過去就可以了。至于是怎么直接傳遞的,這就要靠ARP協(xié)議了,后面會講到。

稍微一般一點(diǎn)的情況是,主機(jī)通過若干個路由器(router)和目的主機(jī)連接。那么路由器就要通過ip包的信息來為ip包尋找到一個合適的目標(biāo)來進(jìn)行傳遞,比如合適的主機(jī),或者合適的路由。路由器或者主機(jī)將會用如下的方式來處理某一個IP數(shù)據(jù)包

  1. 如果IP數(shù)據(jù)包的TTL(生命周期)以到,則該IP數(shù)據(jù)包就被拋棄。
  2. 搜索路由表,優(yōu)先搜索匹配主機(jī),如果能找到和IP地址完全一致的目標(biāo)主機(jī),則將該包發(fā)向目標(biāo)主機(jī)
  3. 搜索路由表,如果匹配主機(jī)失敗,則匹配同子網(wǎng)的路由器,這需要“子網(wǎng)掩碼(1.3.)”的協(xié)助。如果找到路由器,則將該包發(fā)向路由器。
  4. 搜索路由表,如果匹配同子網(wǎng)路由器失敗,則匹配同網(wǎng)號(第一章有講解)路由器,如果找到路由器,則將該包發(fā)向路由器。
  5. 搜索陸游表,如果以上都失敗了,就搜索默認(rèn)路由,如果默認(rèn)路由存在,則發(fā)包
  6. 如果都失敗了,就丟掉這個包。

這再一次證明了,ip包是不可靠的。因為它不保證送達(dá)。

路由表中的每一項都包含下面這些信息。

1目的IP地址

2下一站路由器

3標(biāo)志是網(wǎng)絡(luò)地址還是主機(jī)地址,標(biāo)志下一站路由器是否為真正的下一站路由器

4為數(shù)據(jù)報的傳輸指定一個網(wǎng)絡(luò)接口

四.子網(wǎng)尋址:

IP地址的定義是網(wǎng)絡(luò)號+主機(jī)號。但是現(xiàn)在所有的主機(jī)都要求子網(wǎng)編址,也就是說,把主機(jī)號在細(xì)分成子網(wǎng)號+主機(jī)號。最終一個IP地址就成為 網(wǎng)絡(luò)號碼+子網(wǎng)號+主機(jī)號

 

五.子網(wǎng)掩碼:

C類地址的子網(wǎng)掩碼是255.255.255.0

B類地址的子網(wǎng)掩碼是255.255.0.0

...以此類推

子網(wǎng)掩碼轉(zhuǎn)化為二進(jìn)制,為一的代表網(wǎng)絡(luò)位,以零的代表主機(jī)位

IP AND 子網(wǎng)掩碼=網(wǎng)絡(luò)號

IP AND 子網(wǎng)掩碼取非=主機(jī)號

2的主機(jī)號位(0的部分)=主機(jī)數(shù)

下面是兩個具體的例子:

a.欲將B類IP地址168.195.0.0劃分成27個子網(wǎng)

解1)27化成二進(jìn)制=11011

    2)該二進(jìn)制為5位數(shù),所以N=5

    3)將B類地址的子網(wǎng)掩碼的255.255.0.0的主機(jī)地址前5位置1,得到255.255.248.0.即為劃分27個子網(wǎng)的B類IP地址168.195.0.0的子網(wǎng)掩碼

b.欲將IP地址168.195.0.0劃分為若干子網(wǎng),每個子網(wǎng)有700臺主機(jī)

解1)700化為二進(jìn)制=1010111100

    2)該二進(jìn)制位數(shù)=10,即N=10

    3)將B類地址的子網(wǎng)掩碼255.255.0.0的后面10位變成0,得255.255.252.0,即為劃分成主機(jī)700臺的B類IP地址168.195.0.0的子網(wǎng)掩碼

 

六.兩個命名

1ipconfig/all(windows),ifconfig(linux)

2netstat

 

小結(jié):

如果目的主機(jī)在直接相連的網(wǎng)絡(luò)上,那么就把數(shù)據(jù)報直接傳給目的主機(jī),否則傳給默認(rèn)路由器。在進(jìn)行路由選擇決策時,主機(jī)和路由器都使用路由表。在表中有三種類型的路由:特定主機(jī)型、特定網(wǎng)絡(luò)型和默認(rèn)路由型。路由表中的表目具有一定的優(yōu)先級。在選擇路由時,主機(jī)路由優(yōu)先于網(wǎng)絡(luò)路由,最后在沒有其他可選路由存在時才選擇默認(rèn)路由。
I P路由選擇是通過逐跳來實現(xiàn)的。數(shù)據(jù)報在各站的傳輸過程中目的 I P地址始終不變,但是封裝和目的鏈路層地址在每一站都可以改變。大多數(shù)的主機(jī)和許多路由器對于非本地網(wǎng)絡(luò)的數(shù)據(jù)報都使用默認(rèn)的下一站路由器。

 

兩個小題:

202.105.192.0/24沒有劃分子網(wǎng),C類IP地址,子網(wǎng)掩碼為255.255.255.0,/24為掩碼位數(shù)

問題:分配給某校園網(wǎng)的地址塊是202.105.192.0/18,該校園網(wǎng)包含多少個C類網(wǎng)絡(luò)?

解,因為次IP是C類IP地址,且掩碼位數(shù)不為24,則劃分了子網(wǎng)。

1.IP地址=網(wǎng)絡(luò)號+子網(wǎng)號+主機(jī)號

2.網(wǎng)絡(luò)號和子網(wǎng)號全是1,主機(jī)號全是0

3.因為子網(wǎng)掩碼位數(shù)代表的全是1

4.所以子網(wǎng)位數(shù)=子網(wǎng)掩碼位數(shù)(24)-子網(wǎng)掩碼位數(shù)(18)=6

5.所以包含了2的6次方-2個網(wǎng)絡(luò),除去一個全0和全1的情況。

 

補(bǔ)充:

屬于同一個網(wǎng)段的兩臺主機(jī)進(jìn)行通信是不需要通過路由器的,除了一種情況,使用了VLAN,虛擬局域網(wǎng)。

以C類IP地址為例:C類IP地址的子網(wǎng)掩碼為255.255.255.0

IP地址=網(wǎng)絡(luò)號+主機(jī)號------》IP地址=網(wǎng)絡(luò)號+網(wǎng)絡(luò)ID+主機(jī)ID這個時候就是劃分了子網(wǎng),使用VLAN,這個時候的,兩臺主機(jī)通信的時候,是要通過路由器的。

當(dāng)掩碼為24的時候,沒有劃分子網(wǎng)。

當(dāng)掩碼為26的時候,劃分了2的2次方,劃分了4個子網(wǎng),此時主機(jī)數(shù)為2的6次方-2臺

當(dāng)掩碼為22的時候,劃分了C類網(wǎng)絡(luò),劃分了2的2次方,即4個C類網(wǎng)絡(luò)(這個并不是虛擬的)。


*************************************************************************************************************************

*************************************************************************************************************

[置頂] TCP/IP詳解(4,5)ARP和RARP,第四,五章筆記整理

1  ARP協(xié)議概述  
  IP數(shù)據(jù)包常通過以太網(wǎng)發(fā)送,但是以太網(wǎng)設(shè)備并不識別32IP地址,它們是以48位以太網(wǎng)地址傳輸以太網(wǎng)數(shù)據(jù)包的。因此,IP驅(qū)動器必須把IP目的地址轉(zhuǎn)換成以太網(wǎng)網(wǎng)目的地址。在這兩種地址之間存在著某種靜態(tài)的或算法的映射,常常需要查看一張表。地址解析協(xié)議(Address Resolution ProtocolARP)就是用來確定這些映射關(guān)系的協(xié)議,位于TCP/IP協(xié)議棧中的低層,是 TCP/IP設(shè)計者利用以太網(wǎng)的廣播性質(zhì)設(shè)計出來的,主要特性和優(yōu)點(diǎn)是它的位址對應(yīng)關(guān)系是動態(tài)的﹐以查詢的方式來獲得 IP地址和MAC地址的對應(yīng)。


2  ARP工作原理  
  2.1 ARP工作過程 
  1) 首先﹐每一臺主機(jī)都會在 ARP Cache中建立一個 ARP表格﹐用來記錄 IP地址和MAC地址的對應(yīng)關(guān)系。這個 Table的每一條信息會根據(jù)自身的存活時間遞減而最終消失﹐以確保信息的真實性。

  2) 當(dāng)發(fā)送主機(jī)有一個封包要傳送給目的主機(jī)并且獲得目的主機(jī)的 IP 地址的時候﹐發(fā)送主機(jī)會先檢查自己的 ARP表格中有沒有與該 IP地址對應(yīng)的MAC地址。如果有﹐就直接使用此地址來傳送封包﹔如果沒有﹐則向網(wǎng)絡(luò)發(fā)出一個 ARP Request廣播封包﹐查詢目的主機(jī)的MAC地址。這個封包會包含發(fā)送端的 IP地址和MAC地址信息。

  3) 這時﹐網(wǎng)絡(luò)上所有的主機(jī)都會收到這個廣播封包﹐會檢查封包的 IP 欄位是否和自己的 IP 地址一致。如果不是則忽略﹔如果是則會先將發(fā)送端的MAC地址和 IP資料更新到自己的 ARP表格去﹐如果已經(jīng)有該 IP的對應(yīng)﹐則用新的信息覆蓋原來的﹔然后再回應(yīng)一個 ARP Reply封包給對方﹐告知發(fā)送主機(jī)關(guān)于自己的MAC地址﹔

  4)當(dāng)發(fā)送端接到 ARP Reply之后﹐也會更新自己的 ARP表格﹔然后就可以用此記錄進(jìn)行傳送了。

  5) 如果發(fā)送端沒有得到 ARP Reply ﹐則宣告查詢失敗。

  如圖1所示,描述了ARP廣播過程。

 

 

2.2 ARP 的查詢過程

  前面說的 ARP表格﹐只有在 TCP/IP協(xié)議被載入內(nèi)核之后才會建立﹐如果 TCP/IP協(xié)議被卸載或關(guān)閉機(jī)器﹐那么表格就會被清空﹔到下次協(xié)議載入或開機(jī)的時候再重新建立﹐而同時會向網(wǎng)絡(luò)發(fā)出一個 ARP廣播﹐告訴其它機(jī)器它的當(dāng)前地址﹐以便所有機(jī)器都能保持最正確的資料。

  然而﹐ARP cache 的大小是有所限制的﹐如果超過了界限﹐那么越長時間沒被使用過渡資料就必須清理掉﹐以騰出空間來儲存更新的資料。所以﹐當(dāng)機(jī)器收到 ARP equest 封包時﹐如果查詢對象不是自己﹐則不會根據(jù)發(fā)送端位址資料來更新自己的 ARP 表格﹐而是完全忽略該封包。同時﹐每筆存在 cache 中的資料﹐都不是永久保存的﹕每筆資料再更新的時候﹐都會被賦予一個存活倒數(shù)計時值﹐如果在倒數(shù)時間到達(dá)的時候﹐該資料就會被清掉。然而﹐如果該資料在倒數(shù)時間到達(dá)之前被使用過﹐則計時值會被重新賦予。

  當(dāng)然了﹐ARP尚有一套機(jī)制來處理當(dāng) ARP表格資料不符合實際地址資料的狀況(例如﹐在當(dāng)前連接尚未結(jié)束前﹐收到目的端的地址資料更新消息)﹔或是目的主機(jī)太忙碌而未能回答 ARP請求等狀況。

 

2.3 ARP報文格式
  ARP報文被封裝在以太網(wǎng)幀頭部中傳輸,如圖2所示,是ARP協(xié)議報文頭部格式。

 

2.4 ARP高速緩存

    ARP高效運(yùn)行的關(guān)鍵是由于每個主機(jī)上都有一個ARP高速緩存,這個高速緩存放了最近Internet地址到硬件地址之間的映射記錄,高速緩存中每一項的生存時間一般為20分鐘,起始時間從被創(chuàng)建時開始算起。我們可以通過arp -a或show arp來顯示高速緩存中所有的內(nèi)容

注意:ARP不能通過IP路由器發(fā)送廣播,所以不能用來確定遠(yuǎn)程網(wǎng)絡(luò)設(shè)備的MAC地址。對于目標(biāo)主機(jī)位于遠(yuǎn)程網(wǎng)絡(luò)的情況,IP利用ARP確定默認(rèn)網(wǎng)關(guān)(路由器)的MAC地址,并將數(shù)據(jù)包發(fā)到默認(rèn)網(wǎng)關(guān),由路由器按它自己的方式轉(zhuǎn)發(fā)數(shù)據(jù)包。

 

3 反向ARP  
  反向ARPReverse ARP,RARP)用于把物理地址(MAC地址)轉(zhuǎn)換到對應(yīng)的 IP 地址。例如,在無盤工作站啟動的時候,因為無法從自身的操作系統(tǒng)獲得自己的IP地址配置信息。這時,無盤工作站可發(fā)送廣播請求獲得自己的IP地址信息,而RARP服務(wù)器則響應(yīng)IP請求消息-為無盤工作站分配1個未用的IP地址(通過發(fā)送RARP應(yīng)答包)?! ?/span>
  RARP在很大程度上已被BOOTP、DHCP所替代,后面這兩種協(xié)議對RARP的改進(jìn)是可以提供除了IP地址外的其它更多的信息,如默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器IP地址等信息?!?/span>

RARP的查詢過程

  首先是查詢主機(jī)向網(wǎng)絡(luò)送出一個 RARP Request廣播封包﹐向別的主機(jī)查詢自己的 IP。在時候﹐網(wǎng)絡(luò)上的 RARP服務(wù)器就會將發(fā)送端的 IP 地址用 RARP Reply封包回應(yīng)給查詢者。這樣查詢主機(jī)就獲得自己的 IP地址了。

  不過與ARP不同的是﹐查詢主機(jī)將 RARP Request封包發(fā)送之后﹐可能得到的 RARP Reply會不止一個。因為網(wǎng)絡(luò)上可能存在不止一臺 RARP服務(wù)器(基于備份和分擔(dān)考量﹐極有可能如此設(shè)計)﹐那么﹐所有收到 RARP請求的服務(wù)器都會嘗試向查詢主機(jī)作出 RARP Reply 回應(yīng)。如果這樣的話﹐網(wǎng)絡(luò)上將充斥這種 RARP回應(yīng)﹐做成額外的負(fù)荷。這時候﹐我們有兩種方法來解決RARP的回應(yīng)問題。

  第一種方法﹐為每一個做 RARP 請求的主機(jī)分配一主服務(wù)器﹐正常來說﹐只有主服務(wù)器才回做出 RARP 回應(yīng)﹐其它主機(jī)只是記錄下接收到 RARP 請求的時間而已。假如主服務(wù)器不能順利作出回應(yīng)﹐那么查詢主機(jī)在等待逾時再次用廣播方式發(fā)送 RARP 請求﹐其它非主服務(wù)器假如在接到第一個請求后很短時間內(nèi)再收到相同請求的話﹐才會作出回應(yīng)動作。

  第二種方法也很類似﹕正常來說﹐主服務(wù)器當(dāng)收到 RARP 請求之后﹐會直接作出回應(yīng)﹔為避免所有非主服務(wù)器同時傳回 RARP 響應(yīng)﹐每臺非主服務(wù)器都會隨機(jī)等待一段時間再作出回應(yīng)。如果主服務(wù)器未能作出回應(yīng)的話﹐查詢主機(jī)會延遲一段時間才會進(jìn)行第二次請求﹐以確保這段時間內(nèi)獲得非主服務(wù)器的回應(yīng)。當(dāng)然﹐設(shè)計者可以精心的設(shè)計延遲時間至一個合理的間隔。

 

4 代理ARP  
  代理ARP(PROXY ARP)也被稱作混雜ARP(Promiscuous ARP)(RFC 925、1027)一般被像路由器這樣的設(shè)備使用--用來代替處于另一個網(wǎng)段的主機(jī)回答本網(wǎng)段主機(jī)的ARP請求。 
  下面是代理ARP的應(yīng)用之一,如圖5所示,主機(jī)PC1(192.168.20.66/24)需要向主機(jī)PC2(192.168.20.20/24)發(fā)送報文,因為主機(jī)PC1不知道子網(wǎng)的存在且和目標(biāo)主機(jī)PC2在同一主網(wǎng)絡(luò)網(wǎng)段,所以主機(jī)PC1將發(fā)送ARP請求廣播報文請求192.168.20.20的MAC地址。這時,路由器將識別出報文的目標(biāo)地址屬于另一個子網(wǎng)(注意,路由器的接口IP地址配置的是28位的掩碼),因此向請求主機(jī)回復(fù)自己的硬件地址(0004.dd9e.cca0)。之后,PC1將發(fā)往PC2的數(shù)據(jù)包都發(fā)往MAC地址0004.dd9e.cca0(路由器的接口E0/0),由路由器將數(shù)據(jù)包轉(zhuǎn)發(fā)到目標(biāo)主機(jī)PC2。(接下來路由器將為PC2做同樣的代理發(fā)送數(shù)據(jù)包的工作)。這種ARP使得子網(wǎng)化網(wǎng)絡(luò)拓?fù)鋵τ谥鳈C(jī)來說時透明的(或者可以說是路由器以一個不真實的PC2的MAC地址欺騙了源主機(jī)PC1)。

 

5 無故ARP(免費(fèi)ARP)  
  無故(Gratuitous ARP,GARP)ARP也稱為無為ARP。主機(jī)有時會使用自己的IP地址作為目標(biāo)地址發(fā)送ARP請求。這種ARP請求稱為無故ARP,GARP,主要有兩個用途:  
 ?。?)檢查重復(fù)地址(如果收到ARP響應(yīng)表明存在重復(fù)地址)?! ?br> ?。?)用于通告一個新的數(shù)據(jù)鏈路標(biāo)識。當(dāng)一個設(shè)備收到一個arp請求時,發(fā)現(xiàn)arp緩沖區(qū)中已有發(fā)送者的IP地址,則更新此IP地址的MAC地址條目。

 

6. 應(yīng)用舉例

這里進(jìn)行的操作是在linux系統(tǒng)下進(jìn)行的,Windows環(huán)境基本相同,可以在命令窗口下輸入arp直接進(jìn)行查詢.

基本命令

arp -a [ ip-address ]:表示顯示ARP映射表。如果在arp -a命令中沒有指定IP地址,則缺省顯示全部ARP映射表。

arp -d ip-address : 表示刪除ARP映射項。

arp -s ip-address ether-address [ temp ] :表示增加ARP映射項。ip-addressARP映射項的IP地址,為點(diǎn)分十進(jìn)制格式。 ether-addressARP映射項的以太網(wǎng)MAC地址,格式為XX-XX-XX-XX-XX-XX,其中XX為十六進(jìn)制數(shù)。temp表示增加的映射項為臨時,有效時間為20ms,否則將在路由器工作時間內(nèi)永遠(yuǎn)有效(可選)。如果配置靜態(tài)映射項時沒有指定temp選項,則缺省為永遠(yuǎn)有效。

需要注意arp靜態(tài)條目與動態(tài)條目的區(qū)別。在不同的系統(tǒng)中,手工設(shè)置的arp靜態(tài)條目是有區(qū)別的。在linuxwin2000中,靜態(tài)條目不會因為偽造的arp響應(yīng)包而改變,而動態(tài)條目會改變。而在win98中,手工設(shè)置的靜態(tài)條目會因為收到偽造的arp響應(yīng)包而改變.

一般情況下,ARP映射表由動態(tài)ARP協(xié)議維護(hù),在特殊情況下,才需要手工配置。另外ARP映射表只用于局域網(wǎng)內(nèi),對于廣域網(wǎng)的地址解析,有其它的配置或獲取方法(如幀中繼的逆向地址解析)。

clear arp-cache:清空ARP映射表。在某些情況下,需要清空并更新ARP映射表,這時可以用arp -d逐條刪除,也可以用clear arp-cache命令一次清空。

show arp :顯示ARP映射表。

 

7. ARP欺騙

在實現(xiàn)TCP/IP協(xié)議的網(wǎng)絡(luò)環(huán)境下,一個ip包走到哪里,要怎么走是靠路由表定義,但是,當(dāng)ip包到達(dá)該網(wǎng)絡(luò)后,哪臺機(jī)器響應(yīng)這個ip包卻是靠該ip包中所包含的硬件mac地址來識別。也就是說,只有機(jī)器的硬件mac地址和該ip包中的硬件mac地址相同的機(jī)器才會應(yīng)答這個ip包,因為在網(wǎng)絡(luò)中,每一臺主機(jī)都會有發(fā)送ip包的時候,所以,在每臺主機(jī)的內(nèi)存中,都有一個 arp--> 硬件mac 的轉(zhuǎn)換表。通常主機(jī)在發(fā)送一個ip包之前,它要到該轉(zhuǎn)換表中尋找和ip包對應(yīng)的硬件mac地址,如果沒有找到,該主機(jī)就發(fā)送一個ARP廣播包,于是,主機(jī)刷新自己的ARP緩存。然后發(fā)出該ip包。

了解這些常識后,現(xiàn)在就可以談在以太網(wǎng)絡(luò)中如何實現(xiàn)ARP欺騙了.

 

7.1同一網(wǎng)段的ARP欺騙

如圖所示,三臺主機(jī)

A: ip地址 192.168.0.1硬件地址 AA:AA:AA:AA:AA:AA
B: ip
地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB
C: ip
地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC

一個位于主機(jī)B的入侵者想非法進(jìn)入主機(jī)A,可是這臺主機(jī)上安裝有防火墻。通過收集資料他知道這臺主機(jī)A的防火墻只對主機(jī)C有信任關(guān)系(開放23端口(telnet))。而他必須要使用telnet來進(jìn)入主機(jī)A,這個時候他應(yīng)該如何處理呢?

我們這樣考慮,入侵者必須讓主機(jī)A相信主機(jī)B就是主機(jī)C,如果主機(jī)A和主機(jī)C之間的信任關(guān)系是建立在ip地址之上的。如果單單把主機(jī)Bip地址改的和主機(jī)C的一樣,那是不能工作的,至少不能可靠地工作。如果你告訴以太網(wǎng)卡設(shè)備驅(qū)動程序,自己IP192.168.0.3,那么這只是一種純粹的競爭關(guān)系,并不能達(dá)到目標(biāo)。我們可以先研究C這臺機(jī)器,如果我們能讓這臺機(jī)器暫時當(dāng)?shù)?,競爭關(guān)系就可以解除,這個還是有可能實現(xiàn)的。在機(jī)器C當(dāng)?shù)舻耐瑫r,將機(jī)器Bip地址改為192.168.0.3,這樣就可以成功的通過23端口telnet到機(jī)器A上面,而成功的繞過防火墻的限制.

上面的這種想法在這種情況下是無效的,如果主機(jī)A和主機(jī)C之間的信任關(guān)系是建立在硬件地址的基礎(chǔ)上。這個時候還需要用ARP欺騙的手段讓主機(jī)A把自己的ARP緩存中的關(guān)于192.168.0.3映射的硬件地址改為主機(jī)B的硬件地址.

我們可以人為的制造一個arp_reply的響應(yīng)包,發(fā)送給想要欺騙的主機(jī),這是可以實現(xiàn)的,因為協(xié)議并沒有規(guī)定必須在接收到arp_echo后才可以發(fā)送響應(yīng)包.這樣的工具很多,我們也可以直接用snifferpro抓一個arp響應(yīng)包,然后進(jìn)行修改.也人為地制造這個包。可以指定ARP包中的源IP、目標(biāo)IP、源MAC地址、目標(biāo)MAC地址.

這樣你就可以通過虛假的ARP響應(yīng)包來修改主機(jī)A上的動態(tài)ARP緩存達(dá)到欺騙的目的

下面是具體的步驟:

他先研究192.0.0.3這臺主機(jī),發(fā)現(xiàn)這臺主機(jī)的漏洞。

1)        根據(jù)發(fā)現(xiàn)的漏洞使主機(jī)C當(dāng)?shù)?,暫時停止工作。

2)        這段時間里,入侵者把自己的ip改成192.0.0.3

3)        他用工具發(fā)一個源ip地址為192.168.0.3MAC地址為BB:BB:BB:BB:BB:BB的包給主機(jī)A,要求主機(jī)A更新自己的arp轉(zhuǎn)換表

4)        主機(jī)更新了arp表中關(guān)于主機(jī)Cip-->mac對應(yīng)關(guān)系

5)        防火墻失效了,入侵的ip變成合法的mac地址,可以telnet

上面就是一個ARP的欺騙過程,這是在同網(wǎng)段發(fā)生的情況,但是,提醒注意的是,在BC處于不同網(wǎng)段的時候,上面的方法是不起作用的.

 

7.2 不同網(wǎng)段的ARP欺騙

所示A、C位于同一網(wǎng)段而主機(jī)B位于另一網(wǎng)段,三臺機(jī)器的ip地址和硬件地址如下:

A: ip地址 192.168.0.1硬件地址 AA:AA:AA:AA:AA:AA
B: ip
地址 192.168.1.2硬件地址
BB:BB:BB:BB:BB:BB
C: ip
地址 192.168.0.3硬件地址 CC:CC:CC:CC:CC:CC

在這種下,位于192.168.1網(wǎng)段的主機(jī)B如何冒充主機(jī)C欺騙主機(jī)A呢?顯然用上面的辦法的話,即使欺騙成功,那么由主機(jī)B和主機(jī)A之間也無法建立telnet會話,因為路由器不會把主機(jī)A發(fā)給主機(jī)B的包向外轉(zhuǎn)發(fā),路由器會發(fā)現(xiàn)地址在192.168.0.這個網(wǎng)段之內(nèi).

現(xiàn)在就涉及到另外一種欺騙方式―ICMP重定向。把ARP欺騙和ICMP重定向結(jié)合在一起就可以基本實現(xiàn)跨網(wǎng)段欺騙的目的.

ICMP重定向報文是ICMP控制報文中的一種。在特定的情況下,當(dāng)路由器檢測到一臺機(jī)器使用非優(yōu)化路由的時候,它會向該主機(jī)發(fā)送一個ICMP重定向報文,請求主機(jī)改變路由。路由器也會把初始數(shù)據(jù)報向它的目的地轉(zhuǎn)發(fā).

我們可以利用ICMP重定向報文達(dá)到欺騙的目的.

 下面是結(jié)合ARP欺騙和ICMP重定向進(jìn)行攻擊的步驟:

1)        為了使自己發(fā)出的非法ip包能在網(wǎng)絡(luò)上能夠存活長久一點(diǎn),開始修改ip包的生存時間ttl為下面的過程中可能帶來的問題做準(zhǔn)備。把ttl改成255. (ttl定義一個ip包如果在網(wǎng)絡(luò)上到不了主機(jī)后,在網(wǎng)絡(luò)上能存活的時間,改長一點(diǎn)在本例中有利于做充足的廣播)

2)        下載一個可以自由制作各種包的工具(例如hping2

3)        然后和上面一樣,尋找主機(jī)C的漏洞按照這個漏洞當(dāng)?shù)糁鳈C(jī)C

4)        在該網(wǎng)絡(luò)的主機(jī)找不到原來的192.0.0.3后,將更新自己的ARP對應(yīng)表。于是他發(fā)送一個原ip地址為192.168.0.3硬件地址為BB:BB:BB:BB:BB:BBARP響應(yīng)包。

5)        現(xiàn)在每臺主機(jī)都知道了,一個新的MAC地址對應(yīng)192.0.0.3,一個ARP欺騙完成了,但是,每臺主機(jī)都只會在局域網(wǎng)中找這個地址而根本就不會把發(fā)送給192.0.0.3ip包丟給路由。于是他還得構(gòu)造一個ICMP的重定向廣播。

6)        自己定制一個ICMP重定向包告訴網(wǎng)絡(luò)中的主機(jī):到192.0.0.3的路由最短路徑不是局域網(wǎng),而是路由,請主機(jī)重定向你們的路由路徑,把所有到192.0.0.3ip包丟給路由。

7)        主機(jī)A接受這個合理的ICMP重定向,于是修改自己的路由路徑,把對192.0.0.3的通訊都丟給路由器.

8)        入侵者終于可以.在路由外收到來自路由內(nèi)的主機(jī)的ip包了,他可以開始telnet到主機(jī)的23

其實上面的想法只是一種理想化的情況,主機(jī)許可接收的ICMP重定向包其實有很多的限制條件,這些條件使ICMP重定向變的非常困難.

TCP/IP協(xié)議實現(xiàn)中關(guān)于主機(jī)接收ICMP重定向報文主要有下面幾條限制:

1)        新路由必須直達(dá)

2)        重定向包必須來自屈枉目標(biāo)的當(dāng)前路由

3)        重定向包不能通知主機(jī)用自己作路由

4)          被改變的路由必須是一條間接路由

由于有這些限制,所以ICMP欺騙實際上很難實現(xiàn)。

 

7.3 ARP欺騙的防御

知道了ARP欺騙的方法和危害,我們給出一些初步的防御方法:

1)        不要把安全信任關(guān)心建立在ip地址或者mac地址的基礎(chǔ)上(RARP同樣存在欺騙問題),理想的關(guān)系應(yīng)該是ip+mac;

2)        設(shè)置靜態(tài)的mac->ip映射,不要讓主機(jī)刷新設(shè)置好的arp轉(zhuǎn)換表.

3)        停止使用arp,arp作為永久條目保存在對應(yīng)表中.linux下可以用ifconfig –arp使得網(wǎng)卡驅(qū)動停用arp.

4)        使用代理網(wǎng)關(guān)發(fā)送上行數(shù)據(jù).

5)        修改系統(tǒng)配置拒收ICMP重定向報文.

linux下可以通過在防火墻上拒絕ICMP重定向報文或者是修改內(nèi)核選項重新編譯內(nèi)核來拒絕接收ICMP重定向報文.

win2000下可以通過防火墻和IP策略拒絕接收ICMP報文.

*******************************************************

*******************************************************

*******************************************************

*******************************************************

 

[置頂] TCP/IP詳解(6,7,8)ICMP,Ping,Traceroute,第六七八章筆記整理

一.ICMP的由來

IP提供的盡力數(shù)據(jù)報通信服務(wù)無連接服務(wù),而并不能解決網(wǎng)絡(luò)低層的數(shù)據(jù)報丟失、重復(fù)、延遲或亂序等問題,TCP在IP基礎(chǔ)建立有連接服務(wù)解決以上問題,不能解決網(wǎng)絡(luò)故障或其它網(wǎng)絡(luò)原因無法傳輸?shù)陌膯栴}。
所以,ICMP設(shè)計的本意就是希望對IP包無法傳輸時提供報告,這些差錯報告幫助了發(fā)送方了解為什么無法傳遞,網(wǎng)絡(luò)發(fā)生了什么問題,確定應(yīng)用程序后續(xù)操作。
注意:IP中有關(guān)于差錯檢測的機(jī)制——用于檢測傳輸錯誤的頭部檢驗和
 
二.ICMP的作用

 

三.ICMP報文的組成

 

四.不產(chǎn)生ICMP報文的情況

盡管在大多數(shù)情況下,錯誤的包傳送應(yīng)該給出ICMP報文,但是在特殊情況下,是不產(chǎn)生ICMP錯誤報文的。如下

  1. ICMP差錯報文不會產(chǎn)生ICMP差錯報文(出IMCP查詢報文)(防止IMCP的無限產(chǎn)生和傳送)
  2. 目的地址是廣播地址或多播地址的IP數(shù)據(jù)報。
  3. 作為鏈路層廣播的數(shù)據(jù)報。
  4. 不是IP分片的第一片。
  5. 源地址不是單個主機(jī)的數(shù)據(jù)報。這就是說,源地址不能為零地址、環(huán)回地址、廣播地 址或多播地址。

雖然里面的一些規(guī)定現(xiàn)在還不是很明白,但是所有的這一切規(guī)定,都是為了防止產(chǎn)生ICMP報文的無限傳播而定義的。

ICMP協(xié)議大致分為兩類,一種是查詢報文,一種是差錯報文。其中查詢報文有以下幾種用途:

  1. ping查詢(不要告訴我你不知道ping程序)
  2. 子網(wǎng)掩碼查詢(用于無盤工作站在初始化自身的時候初始化子網(wǎng)掩碼)
  3. 時間戳查詢(可以用來同步時間)

五.ICMP的兩級封裝

 每個ICMP報文都放在IP數(shù)據(jù)報的數(shù)據(jù)部分中通過互聯(lián)網(wǎng)傳遞,而IP數(shù)據(jù)報本身放在幀的數(shù)據(jù)部分中通過物聯(lián)網(wǎng)傳遞

 

六.ICMP報文類型

ICMP定義了五種常用差錯報文和六種查詢報文類型,以及使用代碼表達(dá)某種類型下面不同情況的細(xì)分
 
七.ICMP的應(yīng)用
a.ping

ping可以說是ICMP的最著名的應(yīng)用,當(dāng)我們某一個網(wǎng)站上不去的時候。通常會ping一下這個網(wǎng)站。ping會回顯出一些有用的信息。一般的信息如下:

ping這個單詞源自聲納定位,而這個程序的作用也確實如此,它利用ICMP協(xié)議包來偵測另一個主機(jī)是否可達(dá)。原理是用類型碼為0的ICMP發(fā)請 求,受到請求的主機(jī)則用類型碼為8的ICMP回應(yīng)。ping程序來計算間隔時間,并計算有多少個包被送達(dá)。用戶就可以判斷網(wǎng)絡(luò)大致的情況。我們可以看到, ping給出來了傳送的時間和TTL的數(shù)據(jù)。我給的例子不太好,因為走的路由少,有興趣地可以ping一下國外的網(wǎng)站比如sf.net,就可以觀察到一些 丟包的現(xiàn)象,而程序運(yùn)行的時間也會更加的長。
ping還給我們一個看主機(jī)到目的主機(jī)的路由的機(jī)會。這是因為,ICMP的ping請求數(shù)據(jù)報在每經(jīng)過一個路由器的時候,路由器都會把自己的ip放到該數(shù) 據(jù)報中。而目的主機(jī)則會把這個ip列表復(fù)制到回應(yīng)icmp數(shù)據(jù)包中發(fā)回給主機(jī)。但是,無論如何,ip頭所能紀(jì)錄的路由列表是非常的有限。如果要觀察路由, 我們還是需要使用更好的工具,就是要講到的Traceroute(windows下面的名字叫做tracert)。

 

b.Traceroute

Traceroute是用來偵測主機(jī)到目的主機(jī)之間所經(jīng)路由情況的重要工具,也是最便利的工具。前面說到,盡管ping工具也可以進(jìn)行偵測,但是,因為ip頭的限制,ping不能完全的記錄下所經(jīng)過的路由器。所以Traceroute正好就填補(bǔ)了這個缺憾。

Traceroute的原理是非常非常的有意思,它受到目的主機(jī)的IP后,首先給目的主機(jī)發(fā)送一個TTL=1(還記得TTL是什么嗎?)的UDP(后面就 知道UDP是什么了)數(shù)據(jù)包,而經(jīng)過的第一個路由器收到這個數(shù)據(jù)包以后,就自動把TTL減1,而TTL變?yōu)?以后,路由器就把這個包給拋棄了,并同時產(chǎn)生 一個主機(jī)不可達(dá)的ICMP數(shù)據(jù)報給主機(jī)。主機(jī)收到這個數(shù)據(jù)報以后再發(fā)一個TTL=2的UDP數(shù)據(jù)報給目的主機(jī),然后刺激第二個路由器給主機(jī)發(fā)ICMP數(shù)據(jù) 報。如此往復(fù)直到到達(dá)目的主機(jī)。這樣,traceroute就拿到了所有的路由器ip。從而避開了ip頭只能記錄有限路由IP的問題。

有人要問,我怎么知道UDP到?jīng)]到達(dá)目的主機(jī)呢?這就涉及一個技巧的問題,TCP和UDP協(xié)議有一個端口號定義,而普通的網(wǎng)絡(luò)程序只監(jiān)控少數(shù)的幾個號碼較 小的端口,比如說80,比如說23,等等。而traceroute發(fā)送的是端口號>30000(真變態(tài))的UDP報,所以到達(dá)目的主機(jī)的時候,目的 主機(jī)只能發(fā)送一個端口不可達(dá)的ICMP數(shù)據(jù)報給主機(jī)。主機(jī)接到這個報告以后就知道,主機(jī)到了,所以,說Traceroute是一個騙子一點(diǎn)也不為過:)

Traceroute程序里面提供了一些很有用的選項,甚至包含了IP選路的選項,請察看man文檔來了解這些,這里就不贅述了。

 

Traceroute實現(xiàn)有兩種方法:
一種:發(fā)生一個ICMP回應(yīng)請求報文;目的主機(jī)將會產(chǎn)生一個ICMP回應(yīng)答復(fù)報文。Microsoft實現(xiàn)(tracert)中采用該方法。
       當(dāng)回應(yīng)請求到達(dá)目的主機(jī)時,ICMP就產(chǎn)生一個答復(fù)報文,它的
      源地址等于收到的請求報文中的目的IP地址。
另一種:發(fā)生一個數(shù)據(jù)報給一個不存在的應(yīng)用進(jìn)程;目的主機(jī)將會產(chǎn)生一個ICMP目的不可達(dá)報文。大多數(shù)UNIX版本的traceroute程序采用該方法。
            Traceroute程序發(fā)送一份UDP數(shù)據(jù)報給目的主機(jī),但它選擇一個不可能的值作為UDP端口號(大于30000),使目的主機(jī)的任何一個應(yīng)用程序都不可能使用該端口。因為,當(dāng)該數(shù)據(jù)報到達(dá)時,將使目的主機(jī)的UDP模塊產(chǎn)生一份“端口不可達(dá)”錯誤的ICMP報文。這樣,Traceroute程序所要做的就是區(qū)分接收到的ICMP報文是超時還是端口不可達(dá),以判斷什么時候結(jié)束。

*******************************************  
*******************************************  
*******************************************  
*******************************************  
*******************************************  
*******************************************  
*******************************************  

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美自拍系列精品在线| 亚洲一区二区精品久久av| 国产不卡一区二区四区| 国产亚洲系列91精品| 欧美成人久久久免费播放| 91精品视频免费播放| 日韩午夜老司机免费视频| 日韩精品小视频在线观看| 国产中文字幕一二三区| 久久精品国产99国产免费| 日韩一区欧美二区国产| 久热在线视频这里只有精品| 熟女一区二区三区国产| 果冻传媒精选麻豆白晶晶| 欧美黑人精品一区二区在线| 国产精品自拍杆香蕉视频| 美女露小粉嫩91精品久久久| 成年人免费看国产视频| 国产一区欧美一区日本道| 国产成人精品资源在线观看| 91国自产精品中文字幕亚洲| 国产女性精品一区二区三区| 精品欧美日韩一二三区| 国产一区二区三区av在线| 好骚国产99在线中文| 国产精品久久香蕉国产线| 精品久久久一区二区三| 五月婷婷缴情七月丁香| 人人妻在人人看人人澡| 久七久精品视频黄色的| 国产对白老熟女正在播放| 无套内射美女视频免费在线观看| 国产精品视频第一第二区| 在线日本不卡一区二区| 国产一区二区三区av在线| 亚洲a级一区二区不卡| 中文字幕精品少妇人妻| 欧美在线视频一区观看| 我要看日本黄色小视频| 男人的天堂的视频东京热| 国产成人av在线免播放观看av |