一:鏈路層有時也叫數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層。通常包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機中對應(yīng)的網(wǎng)絡(luò)接口卡。它們一起處理與電纜(或其他傳輸媒介)的物理接口細節(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ù)報進行封裝的簡單形式,在RFC 1055[Romkey 1988]中有詳細描述。S L I P適用于家庭中每臺計算機幾乎都有的 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ù)報到來之前的線路噪聲被當成數(shù)據(jù)報內(nèi)容,大多數(shù)實現(xiàn)在數(shù)據(jù)報的開始處也傳一個 E N D字符(如果有線路噪聲,那么E N D字符將結(jié)束這份錯誤的報文。這樣當前的報文得以正確地傳輸,而前一個錯誤報文交給上層后,會發(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的缺點:
1每一段必須知道堆放的IP地址。沒有辦法把本端的IP地址通知給另一端
2數(shù)據(jù)幀中沒有類型字段
3SLIP沒有在數(shù)據(jù)幀中加上校驗和(類似于以太網(wǎng)中的CRC字段)
盡管存在這些缺點,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分組進行交換。為了傳送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會話過程中,當敲入一個簡單命令時這些小報文傳輸?shù)脑敿毲闆r) 。
既然承認這些性能上的缺陷,于是人們提出一個被稱作 C S L I P(即壓縮S L I P)的新協(xié)議,它在RFC 1144[Jacobson 1990a]中被詳細描述。C S L I P一般能把上面的4 0個字節(jié)壓縮到3或5個字節(jié)。它能在C S L I P的每一端維持多達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點對點協(xié)議
總的來說,P P P比S L I P具有下面這些優(yōu)點:
(1) PPP支持在單根串行線路上運行多種協(xié)議,不只是I P協(xié)議;
(2) 每一幀都有循環(huán)冗余檢驗;
(3) 通信雙方可以進行I P地址的動態(tài)協(xié)商(使用I P網(wǎng)絡(luò)控制協(xié)議);
(4) 與C S L I P類似,對T C P和I P報文首部進行壓縮;
(5) 鏈路控制協(xié)議可以對多個數(shù)據(jù)鏈路選項進行設(shè)置。為這些優(yōu)點付出的代價是在每一幀的首部增加 3個字節(jié),當建立鏈路時要發(fā)送幾幀協(xié)商數(shù)據(jù),以及更為復(fù)雜的實現(xiàn)。
盡管P P P比S L I P有更多的優(yōu)點,但是現(xiàn)在的S L I P用戶仍然比P P P用戶多。隨著產(chǎn)品
越來越多,產(chǎn)家也開始逐漸支持PPP,因此最終PPP應(yīng)該取代SLIP。
六:環(huán)路接口
平時我們用127.0.0.1來嘗試自己的機器服務(wù)器好使不好使。走的就是這個loopback接口。對于環(huán)回接口,有如下三點值得注意:
1傳給環(huán)回地址(一般是127.0.0.1)的任何數(shù)據(jù)均作為I P輸入。
2傳給廣播地址或多播地址的數(shù)據(jù)報復(fù)制一份傳給環(huán)回接口,然后送到以太網(wǎng)上。這是 因為廣播傳送和多播傳送的定義包含主機本身。
3任何傳給該主機IP地址的數(shù)據(jù)均送到環(huán)回接口。
七:最大傳輸單元MTU
如果I P層有一個數(shù)據(jù)報要傳,而且數(shù)據(jù)的長度比鏈路層的 M T U還大,那么I P層就需要進行分片(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)點對點協(xié)議
它是用于串行接口的兩臺計算機的通信協(xié)議,是為通過電話線連接計算機和服務(wù)器而彼此通信而制定的協(xié)議。網(wǎng)絡(luò)服務(wù)提供商可以提供您點對點連接,這樣提供商的服務(wù)器就可以響應(yīng)您的請求,將您的請求接收并發(fā)送到網(wǎng)絡(luò)上,然后將網(wǎng)絡(luò)上的響應(yīng)送回。PPP是使用IP協(xié)議,有時它被認為是TCP/IP協(xié)議族的一員。PPP協(xié)議可用于不同介質(zhì)上包括雙絞線,光纖和衛(wèi)星傳輸?shù)娜p工協(xié)議,它使用HDLC進行包的裝入。PPP協(xié)議既可以處理同步通信也可以處理異步通信,可以允許多個用戶共享一個線路,又可發(fā)進行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ù)到達指定的地點。TCP/IP協(xié)議是互聯(lián)網(wǎng)上廣泛使用的一種協(xié)議,使用TCP/IP協(xié)議的因特網(wǎng)等網(wǎng)絡(luò)提供的主要服務(wù)有:電子郵件、文件傳送、遠程登錄、網(wǎng)絡(luò)文件系統(tǒng)、電視會議系統(tǒng)和萬維網(wǎng)。它是Interent的基礎(chǔ),它提供了在廣域網(wǎng)內(nèi)的路由功能,而且使Internet上的不同主機可以互聯(lián)。從概念上,它可以映射到四層:網(wǎng)絡(luò)接口層,這一層負責(zé)在線路上傳輸幀并從線路上接收幀;Internet層,這一層中包括了IP協(xié)議,IP協(xié)議生成Internet數(shù)據(jù)報,進行必要的路由算法,IP協(xié)議實際上可以分為四部分:ARP,ICMP,IGMP和IP;再上向就是傳輸層,這一層負責(zé)管理計算機間的會話,這一層包括兩個協(xié)議TCP和UDP,由應(yīng)用程序的要求不同可以使用不同的協(xié)議進行通信;最后一層是應(yīng)用層,就是我們熟悉的FTP,DNS,TELNET等。熟悉TCP/IP是熟悉Internet的必由之路。
UDP(User Datagram Protocol)用戶數(shù)據(jù)報協(xié)議
它是定義用來在互連網(wǎng)絡(luò)環(huán)境中提供包交換的計算機通信的協(xié)議,此協(xié)議默認認為網(wǎng)路協(xié)議(IP)是其下層協(xié)議。UDP是TCP的另外一種方法,象TCP一樣,UDP使用IP協(xié)議來獲得數(shù)據(jù)單元(叫做數(shù)據(jù)報),不象TCP的是,它不提供包(數(shù)據(jù)報)的分組和組裝服務(wù)。而且,它還不提供對包的排序,這意味著,程序程序必須自己確定信息是否完全地正確地到達目的地。如果網(wǎng)絡(luò)程序要加快處理速度,那使用UPD就比TCP要好。UDP提供兩種不由IP層提供的服務(wù),它提供端口號來區(qū)別不同用戶的請求,而且可以提供奇偶校驗。在OSI模式中,UDP和TCP一樣處于第四層,傳輸層。
可以說PPP是一種連接方式,TCP、UDP是傳送數(shù)據(jù)的方式
TCP/IP成功的原因之一是它幾乎能在任何數(shù)據(jù)鏈路計數(shù)上運行。
***********************************************************************************************************************************************************************************************************************************
IP是TCP/IP協(xié)議族中最為核心的協(xié)議,所有的TCP,UDP,ICMP和IGMP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸。要注意的是,IP不是可靠的協(xié)議,這是說,IP協(xié)議沒有提供一種數(shù)據(jù)未傳達以后的處理機制--這被認為是上層協(xié)議--TCP或UDP要做的事情。所以這也就出現(xiàn)了TCP是一個可靠的協(xié)議,而UDP就沒有那么可靠的區(qū)別。 二.IP首部: IP數(shù)據(jù)報格式如下,普通的IP首部長為20個字節(jié),除非含有選項字段[置頂] TCP/IP詳解(3)IP:網(wǎng)際協(xié)議,第三章筆記整理
一.引言:
四個字節(jié)的32bit,首先是0-7bit,8-15,16-23,24-31
服務(wù)類型TOS,其中3位是優(yōu)先權(quán)字段(已經(jīng)忽略),4bit的TOS分別代表最小延時,最大吞吐量,最高可靠性和最小費用。
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)是唯一要求最小費用的應(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) ,因此當路由器轉(zhuǎn)發(fā)一份報文時可以增加它的檢驗和,而不需要對 I P整個首部進行重新計算。 R F C為此給出了一個很有效的方法。
三IP路由選擇:
當一個IP數(shù)據(jù)包準備好了的時候,IP數(shù)據(jù)包(或者說是路由器)是如何將數(shù)據(jù)包送到目的地的呢?它是怎么選擇一個合適的路徑來"送貨"的呢?
最特殊的情況是目的主機和主機直連,那么主機根本不用尋找路由,直接把數(shù)據(jù)傳遞過去就可以了。至于是怎么直接傳遞的,這就要靠ARP協(xié)議了,后面會講到。
稍微一般一點的情況是,主機通過若干個路由器(router)和目的主機連接。那么路由器就要通過ip包的信息來為ip包尋找到一個合適的目標來進行傳遞,比如合適的主機,或者合適的路由。路由器或者主機將會用如下的方式來處理某一個IP數(shù)據(jù)包
這再一次證明了,ip包是不可靠的。因為它不保證送達。
路由表中的每一項都包含下面這些信息。
1目的IP地址
2下一站路由器
3標志是網(wǎng)絡(luò)地址還是主機地址,標志下一站路由器是否為真正的下一站路由器
4為數(shù)據(jù)報的傳輸指定一個網(wǎng)絡(luò)接口
四.子網(wǎng)尋址:
IP地址的定義是網(wǎng)絡(luò)號+主機號。但是現(xiàn)在所有的主機都要求子網(wǎng)編址,也就是說,把主機號在細分成子網(wǎng)號+主機號。最終一個IP地址就成為 網(wǎng)絡(luò)號碼+子網(wǎng)號+主機號
五.子網(wǎng)掩碼:
C類地址的子網(wǎng)掩碼是255.255.255.0
B類地址的子網(wǎng)掩碼是255.255.0.0
...以此類推
子網(wǎng)掩碼轉(zhuǎn)化為二進制,為一的代表網(wǎng)絡(luò)位,以零的代表主機位
IP AND 子網(wǎng)掩碼=網(wǎng)絡(luò)號
IP AND 子網(wǎng)掩碼取非=主機號
2的主機號位(0的部分)=主機數(shù)
下面是兩個具體的例子:
a.欲將B類IP地址168.195.0.0劃分成27個子網(wǎng)
解1)27化成二進制=11011
2)該二進制為5位數(shù),所以N=5
3)將B類地址的子網(wǎng)掩碼的255.255.0.0的主機地址前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臺主機
解1)700化為二進制=1010111100
2)該二進制位數(shù)=10,即N=10
3)將B類地址的子網(wǎng)掩碼255.255.0.0的后面10位變成0,得255.255.252.0,即為劃分成主機700臺的B類IP地址168.195.0.0的子網(wǎng)掩碼
六.兩個命名
1ipconfig/all(windows),ifconfig(linux)
2netstat
小結(jié):
如果目的主機在直接相連的網(wǎng)絡(luò)上,那么就把數(shù)據(jù)報直接傳給目的主機,否則傳給默認路由器。在進行路由選擇決策時,主機和路由器都使用路由表。在表中有三種類型的路由:特定主機型、特定網(wǎng)絡(luò)型和默認路由型。路由表中的表目具有一定的優(yōu)先級。在選擇路由時,主機路由優(yōu)先于網(wǎng)絡(luò)路由,最后在沒有其他可選路由存在時才選擇默認路由。
I P路由選擇是通過逐跳來實現(xiàn)的。數(shù)據(jù)報在各站的傳輸過程中目的 I P地址始終不變,但是封裝和目的鏈路層地址在每一站都可以改變。大多數(shù)的主機和許多路由器對于非本地網(wǎng)絡(luò)的數(shù)據(jù)報都使用默認的下一站路由器。
兩個小題:
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)號+主機號
2.網(wǎng)絡(luò)號和子網(wǎng)號全是1,主機號全是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的情況。
補充:
屬于同一個網(wǎng)段的兩臺主機進行通信是不需要通過路由器的,除了一種情況,使用了VLAN,虛擬局域網(wǎng)。
以C類IP地址為例:C類IP地址的子網(wǎng)掩碼為255.255.255.0
IP地址=網(wǎng)絡(luò)號+主機號------》IP地址=網(wǎng)絡(luò)號+網(wǎng)絡(luò)ID+主機ID這個時候就是劃分了子網(wǎng),使用VLAN,這個時候的,兩臺主機通信的時候,是要通過路由器的。
當掩碼為24的時候,沒有劃分子網(wǎng)。
當掩碼為26的時候,劃分了2的2次方,劃分了4個子網(wǎng),此時主機數(shù)為2的6次方-2臺
當掩碼為22的時候,劃分了C類網(wǎng)絡(luò),劃分了2的2次方,即4個C類網(wǎng)絡(luò)(這個并不是虛擬的)。
*************************************************************************************************************************
*************************************************************************************************************
1 ARP協(xié)議概述 2) 當發(fā)送主機有一個封包要傳送給目的主機并且獲得目的主機的 IP 地址的時候﹐發(fā)送主機會先檢查自己的 ARP表格中有沒有與該 IP地址對應(yīng)的MAC地址。如果有﹐就直接使用此地址來傳送封包﹔如果沒有﹐則向網(wǎng)絡(luò)發(fā)出一個 ARP Request廣播封包﹐查詢目的主機的MAC地址。這個封包會包含發(fā)送端的 IP地址和MAC地址信息。 3) 這時﹐網(wǎng)絡(luò)上所有的主機都會收到這個廣播封包﹐會檢查封包的 IP 欄位是否和自己的 IP 地址一致。如果不是則忽略﹔如果是則會先將發(fā)送端的MAC地址和 IP資料更新到自己的 ARP表格去﹐如果已經(jīng)有該 IP的對應(yīng)﹐則用新的信息覆蓋原來的﹔然后再回應(yīng)一個 ARP Reply封包給對方﹐告知發(fā)送主機關(guān)于自己的MAC地址﹔ 4)當發(fā)送端接到 ARP Reply之后﹐也會更新自己的 ARP表格﹔然后就可以用此記錄進行傳送了。 5) 如果發(fā)送端沒有得到 ARP Reply ﹐則宣告查詢失敗。 如圖1所示,描述了ARP廣播過程。 2.2 ARP 的查詢過程 前面說的 ARP表格﹐只有在 TCP/IP協(xié)議被載入內(nèi)核之后才會建立﹐如果 TCP/IP協(xié)議被卸載或關(guān)閉機器﹐那么表格就會被清空﹔到下次協(xié)議載入或開機的時候再重新建立﹐而同時會向網(wǎng)絡(luò)發(fā)出一個 ARP廣播﹐告訴其它機器它的當前地址﹐以便所有機器都能保持最正確的資料。 然而﹐ARP cache 的大小是有所限制的﹐如果超過了界限﹐那么越長時間沒被使用過渡資料就必須清理掉﹐以騰出空間來儲存更新的資料。所以﹐當機器收到 ARP equest 封包時﹐如果查詢對象不是自己﹐則不會根據(jù)發(fā)送端位址資料來更新自己的 ARP 表格﹐而是完全忽略該封包。同時﹐每筆存在 cache 中的資料﹐都不是永久保存的﹕每筆資料再更新的時候﹐都會被賦予一個存活倒數(shù)計時值﹐如果在倒數(shù)時間到達的時候﹐該資料就會被清掉。然而﹐如果該資料在倒數(shù)時間到達之前被使用過﹐則計時值會被重新賦予。 當然了﹐ARP尚有一套機制來處理當 ARP表格資料不符合實際地址資料的狀況(例如﹐在當前連接尚未結(jié)束前﹐收到目的端的地址資料更新消息)﹔或是目的主機太忙碌而未能回答 ARP請求等狀況。 2.3 ARP報文格式 2.4 ARP高速緩存 ARP高效運行的關(guān)鍵是由于每個主機上都有一個ARP高速緩存,這個高速緩存放了最近Internet地址到硬件地址之間的映射記錄,高速緩存中每一項的生存時間一般為20分鐘,起始時間從被創(chuàng)建時開始算起。我們可以通過arp -a或show arp來顯示高速緩存中所有的內(nèi)容 注意:ARP不能通過IP路由器發(fā)送廣播,所以不能用來確定遠程網(wǎng)絡(luò)設(shè)備的MAC地址。對于目標主機位于遠程網(wǎng)絡(luò)的情況,IP利用ARP確定默認網(wǎng)關(guān)(路由器)的MAC地址,并將數(shù)據(jù)包發(fā)到默認網(wǎng)關(guān),由路由器按它自己的方式轉(zhuǎn)發(fā)數(shù)據(jù)包。 3 反向ARP RARP的查詢過程 首先是查詢主機向網(wǎng)絡(luò)送出一個 RARP Request廣播封包﹐向別的主機查詢自己的 IP。在時候﹐網(wǎng)絡(luò)上的 RARP服務(wù)器就會將發(fā)送端的 IP 地址用 RARP Reply封包回應(yīng)給查詢者。這樣查詢主機就獲得自己的 IP地址了。 不過與ARP不同的是﹐查詢主機將 RARP Request封包發(fā)送之后﹐可能得到的 RARP Reply會不止一個。因為網(wǎng)絡(luò)上可能存在不止一臺 RARP服務(wù)器(基于備份和分擔考量﹐極有可能如此設(shè)計)﹐那么﹐所有收到 RARP請求的服務(wù)器都會嘗試向查詢主機作出 RARP Reply 回應(yīng)。如果這樣的話﹐網(wǎng)絡(luò)上將充斥這種 RARP回應(yīng)﹐做成額外的負荷。這時候﹐我們有兩種方法來解決RARP的回應(yīng)問題。 第一種方法﹐為每一個做 RARP 請求的主機分配一主服務(wù)器﹐正常來說﹐只有主服務(wù)器才回做出 RARP 回應(yīng)﹐其它主機只是記錄下接收到 RARP 請求的時間而已。假如主服務(wù)器不能順利作出回應(yīng)﹐那么查詢主機在等待逾時再次用廣播方式發(fā)送 RARP 請求﹐其它非主服務(wù)器假如在接到第一個請求后很短時間內(nèi)再收到相同請求的話﹐才會作出回應(yīng)動作。 第二種方法也很類似﹕正常來說﹐主服務(wù)器當收到 RARP 請求之后﹐會直接作出回應(yīng)﹔為避免所有非主服務(wù)器同時傳回 RARP 響應(yīng)﹐每臺非主服務(wù)器都會隨機等待一段時間再作出回應(yīng)。如果主服務(wù)器未能作出回應(yīng)的話﹐查詢主機會延遲一段時間才會進行第二次請求﹐以確保這段時間內(nèi)獲得非主服務(wù)器的回應(yīng)。當然﹐設(shè)計者可以精心的設(shè)計延遲時間至一個合理的間隔。 4 代理ARP 5 無故ARP(免費ARP) 這里進行的操作是在linux系統(tǒng)下進行的,Windows環(huán)境基本相同,可以在命令窗口下輸入arp直接進行查詢. 基本命令 arp -a [ ip-address ]:表示顯示ARP映射表。如果在arp -a命令中沒有指定IP地址,則缺省顯示全部ARP映射表。 arp -d ip-address : 表示刪除ARP映射項。 arp -s ip-address ether-address [ temp ] :表示增加ARP映射項。ip-address為ARP映射項的IP地址,為點分十進制格式。 ether-address為ARP映射項的以太網(wǎng)MAC地址,格式為XX-XX-XX-XX-XX-XX,其中XX為十六進制數(shù)。temp表示增加的映射項為臨時,有效時間為20ms,否則將在路由器工作時間內(nèi)永遠有效(可選)。如果配置靜態(tài)映射項時沒有指定temp選項,則缺省為永遠有效。 需要注意arp靜態(tài)條目與動態(tài)條目的區(qū)別。在不同的系統(tǒng)中,手工設(shè)置的arp靜態(tài)條目是有區(qū)別的。在linux和win2000中,靜態(tài)條目不會因為偽造的arp響應(yīng)包而改變,而動態(tài)條目會改變。而在win98中,手工設(shè)置的靜態(tài)條目會因為收到偽造的arp響應(yīng)包而改變. 一般情況下,ARP映射表由動態(tài)ARP協(xié)議維護,在特殊情況下,才需要手工配置。另外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包走到哪里,要怎么走是靠路由表定義,但是,當ip包到達該網(wǎng)絡(luò)后,哪臺機器響應(yīng)這個ip包卻是靠該ip包中所包含的硬件mac地址來識別。也就是說,只有機器的硬件mac地址和該ip包中的硬件mac地址相同的機器才會應(yīng)答這個ip包,因為在網(wǎng)絡(luò)中,每一臺主機都會有發(fā)送ip包的時候,所以,在每臺主機的內(nèi)存中,都有一個 arp--> 硬件mac 的轉(zhuǎn)換表。通常主機在發(fā)送一個ip包之前,它要到該轉(zhuǎn)換表中尋找和ip包對應(yīng)的硬件mac地址,如果沒有找到,該主機就發(fā)送一個ARP廣播包,于是,主機刷新自己的ARP緩存。然后發(fā)出該ip包。 了解這些常識后,現(xiàn)在就可以談在以太網(wǎng)絡(luò)中如何實現(xiàn)ARP欺騙了. 7.1同一網(wǎng)段的ARP欺騙 如圖所示,三臺主機 A: ip地址 192.168.0.1硬件地址 AA:AA:AA:AA:AA:AA 一個位于主機B的入侵者想非法進入主機A,可是這臺主機上安裝有防火墻。通過收集資料他知道這臺主機A的防火墻只對主機C有信任關(guān)系(開放23端口(telnet))。而他必須要使用telnet來進入主機A,這個時候他應(yīng)該如何處理呢? 我們這樣考慮,入侵者必須讓主機A相信主機B就是主機C,如果主機A和主機C之間的信任關(guān)系是建立在ip地址之上的。如果單單把主機B的ip地址改的和主機C的一樣,那是不能工作的,至少不能可靠地工作。如果你告訴以太網(wǎng)卡設(shè)備驅(qū)動程序,自己IP是192.168.0.3,那么這只是一種純粹的競爭關(guān)系,并不能達到目標。我們可以先研究C這臺機器,如果我們能讓這臺機器暫時當?shù)?,競爭關(guān)系就可以解除,這個還是有可能實現(xiàn)的。在機器C當?shù)舻耐瑫r,將機器B的ip地址改為192.168.0.3,這樣就可以成功的通過23端口telnet到機器A上面,而成功的繞過防火墻的限制. 上面的這種想法在這種情況下是無效的,如果主機A和主機C之間的信任關(guān)系是建立在硬件地址的基礎(chǔ)上。這個時候還需要用ARP欺騙的手段讓主機A把自己的ARP緩存中的關(guān)于192.168.0.3映射的硬件地址改為主機B的硬件地址. 我們可以人為的制造一個arp_reply的響應(yīng)包,發(fā)送給想要欺騙的主機,這是可以實現(xiàn)的,因為協(xié)議并沒有規(guī)定必須在接收到arp_echo后才可以發(fā)送響應(yīng)包.這樣的工具很多,我們也可以直接用snifferpro抓一個arp響應(yīng)包,然后進行修改.也人為地制造這個包??梢灾付?/span>ARP包中的源IP、目標IP、源MAC地址、目標MAC地址. 這樣你就可以通過虛假的ARP響應(yīng)包來修改主機A上的動態(tài)ARP緩存達到欺騙的目的 下面是具體的步驟: 他先研究192.0.0.3這臺主機,發(fā)現(xiàn)這臺主機的漏洞。 1) 根據(jù)發(fā)現(xiàn)的漏洞使主機C當?shù)簦瑫簳r停止工作。 2) 這段時間里,入侵者把自己的ip改成192.0.0.3 3) 他用工具發(fā)一個源ip地址為192.168.0.3源MAC地址為BB:BB:BB:BB:BB:BB的包給主機A,要求主機A更新自己的arp轉(zhuǎn)換表 4) 主機更新了arp表中關(guān)于主機C的ip-->mac對應(yīng)關(guān)系 5) 防火墻失效了,入侵的ip變成合法的mac地址,可以telnet了 上面就是一個ARP的欺騙過程,這是在同網(wǎng)段發(fā)生的情況,但是,提醒注意的是,在B和C處于不同網(wǎng)段的時候,上面的方法是不起作用的. 7.2 不同網(wǎng)段的ARP欺騙 圖所示A、C位于同一網(wǎng)段而主機B位于另一網(wǎng)段,三臺機器的ip地址和硬件地址如下: A: ip地址 192.168.0.1硬件地址 AA:AA:AA:AA:AA:AA 在這種下,位于192.168.1網(wǎng)段的主機B如何冒充主機C欺騙主機A呢?顯然用上面的辦法的話,即使欺騙成功,那么由主機B和主機A之間也無法建立telnet會話,因為路由器不會把主機A發(fā)給主機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控制報文中的一種。在特定的情況下,當路由器檢測到一臺機器使用非優(yōu)化路由的時候,它會向該主機發(fā)送一個ICMP重定向報文,請求主機改變路由。路由器也會把初始數(shù)據(jù)報向它的目的地轉(zhuǎn)發(fā). 我們可以利用ICMP重定向報文達到欺騙的目的. 下面是結(jié)合ARP欺騙和ICMP重定向進行攻擊的步驟: 1) 為了使自己發(fā)出的非法ip包能在網(wǎng)絡(luò)上能夠存活長久一點,開始修改ip包的生存時間ttl為下面的過程中可能帶來的問題做準備。把ttl改成255. (ttl定義一個ip包如果在網(wǎng)絡(luò)上到不了主機后,在網(wǎng)絡(luò)上能存活的時間,改長一點在本例中有利于做充足的廣播) 2) 下載一個可以自由制作各種包的工具(例如hping2) 3) 然后和上面一樣,尋找主機C的漏洞按照這個漏洞當?shù)糁鳈CC。 4) 在該網(wǎng)絡(luò)的主機找不到原來的192.0.0.3后,將更新自己的ARP對應(yīng)表。于是他發(fā)送一個原ip地址為192.168.0.3硬件地址為BB:BB:BB:BB:BB:BB的ARP響應(yīng)包。 5) 現(xiàn)在每臺主機都知道了,一個新的MAC地址對應(yīng)192.0.0.3,一個ARP欺騙完成了,但是,每臺主機都只會在局域網(wǎng)中找這個地址而根本就不會把發(fā)送給192.0.0.3的ip包丟給路由。于是他還得構(gòu)造一個ICMP的重定向廣播。 6) 自己定制一個ICMP重定向包告訴網(wǎng)絡(luò)中的主機:到192.0.0.3的路由最短路徑不是局域網(wǎng),而是路由,請主機重定向你們的路由路徑,把所有到192.0.0.3的ip包丟給路由。 7) 主機A接受這個合理的ICMP重定向,于是修改自己的路由路徑,把對192.0.0.3的通訊都丟給路由器. 8) 入侵者終于可以.在路由外收到來自路由內(nèi)的主機的ip包了,他可以開始telnet到主機的23口 其實上面的想法只是一種理想化的情況,主機許可接收的ICMP重定向包其實有很多的限制條件,這些條件使ICMP重定向變的非常困難. TCP/IP協(xié)議實現(xiàn)中關(guān)于主機接收ICMP重定向報文主要有下面幾條限制: 1) 新路由必須直達 2) 重定向包必須來自屈枉目標的當前路由 3) 重定向包不能通知主機用自己作路由 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映射,不要讓主機刷新設(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報文. ******************************************************* ******************************************************* ******************************************************* ******************************************************* 一.ICMP的由來 三.ICMP報文的組成 四.不產(chǎn)生ICMP報文的情況 盡管在大多數(shù)情況下,錯誤的包傳送應(yīng)該給出ICMP報文,但是在特殊情況下,是不產(chǎn)生ICMP錯誤報文的。如下 雖然里面的一些規(guī)定現(xiàn)在還不是很明白,但是所有的這一切規(guī)定,都是為了防止產(chǎn)生ICMP報文的無限傳播而定義的。 ICMP協(xié)議大致分為兩類,一種是查詢報文,一種是差錯報文。其中查詢報文有以下幾種用途: 五.ICMP的兩級封裝 每個ICMP報文都放在IP數(shù)據(jù)報的數(shù)據(jù)部分中通過互聯(lián)網(wǎng)傳遞,而IP數(shù)據(jù)報本身放在幀的數(shù)據(jù)部分中通過物聯(lián)網(wǎng)傳遞 六.ICMP報文類型 ping可以說是ICMP的最著名的應(yīng)用,當我們某一個網(wǎng)站上不去的時候。通常會ping一下這個網(wǎng)站。ping會回顯出一些有用的信息。一般的信息如下: ping這個單詞源自聲納定位,而這個程序的作用也確實如此,它利用ICMP協(xié)議包來偵測另一個主機是否可達。原理是用類型碼為0的ICMP發(fā)請 求,受到請求的主機則用類型碼為8的ICMP回應(yīng)。ping程序來計算間隔時間,并計算有多少個包被送達。用戶就可以判斷網(wǎng)絡(luò)大致的情況。我們可以看到, ping給出來了傳送的時間和TTL的數(shù)據(jù)。我給的例子不太好,因為走的路由少,有興趣地可以ping一下國外的網(wǎng)站比如sf.net,就可以觀察到一些 丟包的現(xiàn)象,而程序運行的時間也會更加的長。 Traceroute是用來偵測主機到目的主機之間所經(jīng)路由情況的重要工具,也是最便利的工具。前面說到,盡管ping工具也可以進行偵測,但是,因為ip頭的限制,ping不能完全的記錄下所經(jīng)過的路由器。所以Traceroute正好就填補了這個缺憾。 Traceroute的原理是非常非常的有意思,它受到目的主機的IP后,首先給目的主機發(fā)送一個TTL=1(還記得TTL是什么嗎?)的UDP(后面就 知道UDP是什么了)數(shù)據(jù)包,而經(jīng)過的第一個路由器收到這個數(shù)據(jù)包以后,就自動把TTL減1,而TTL變?yōu)?以后,路由器就把這個包給拋棄了,并同時產(chǎn)生 一個主機不可達的ICMP數(shù)據(jù)報給主機。主機收到這個數(shù)據(jù)報以后再發(fā)一個TTL=2的UDP數(shù)據(jù)報給目的主機,然后刺激第二個路由器給主機發(fā)ICMP數(shù)據(jù) 報。如此往復(fù)直到到達目的主機。這樣,traceroute就拿到了所有的路由器ip。從而避開了ip頭只能記錄有限路由IP的問題。 有人要問,我怎么知道UDP到?jīng)]到達目的主機呢?這就涉及一個技巧的問題,TCP和UDP協(xié)議有一個端口號定義,而普通的網(wǎng)絡(luò)程序只監(jiān)控少數(shù)的幾個號碼較 小的端口,比如說80,比如說23,等等。而traceroute發(fā)送的是端口號>30000(真變態(tài))的UDP報,所以到達目的主機的時候,目的 主機只能發(fā)送一個端口不可達的ICMP數(shù)據(jù)報給主機。主機接到這個報告以后就知道,主機到了,所以,說Traceroute是一個騙子一點也不為過:) Traceroute程序里面提供了一些很有用的選項,甚至包含了IP選路的選項,請察看man文檔來了解這些,這里就不贅述了。
IP數(shù)據(jù)包常通過以太網(wǎng)發(fā)送,但是以太網(wǎng)設(shè)備并不識別32位IP地址,它們是以48位以太網(wǎng)地址傳輸以太網(wǎng)數(shù)據(jù)包的。因此,IP驅(qū)動器必須把IP目的地址轉(zhuǎn)換成以太網(wǎng)網(wǎng)目的地址。在這兩種地址之間存在著某種靜態(tài)的或算法的映射,常常需要查看一張表。地址解析協(xié)議(Address Resolution Protocol,ARP)就是用來確定這些映射關(guān)系的協(xié)議,位于TCP/IP協(xié)議棧中的低層,是 TCP/IP設(shè)計者利用以太網(wǎng)的廣播性質(zhì)設(shè)計出來的,主要特性和優(yōu)點是它的位址對應(yīng)關(guān)系是動態(tài)的﹐以查詢的方式來獲得 IP地址和MAC地址的對應(yīng)。
2 ARP工作原理
2.1 ARP工作過程
1) 首先﹐每一臺主機都會在 ARP Cache中建立一個 ARP表格﹐用來記錄 IP地址和MAC地址的對應(yīng)關(guān)系。這個 Table的每一條信息會根據(jù)自身的存活時間遞減而最終消失﹐以確保信息的真實性。
ARP報文被封裝在以太網(wǎng)幀頭部中傳輸,如圖2所示,是ARP協(xié)議報文頭部格式。
反向ARP(Reverse 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的改進是可以提供除了IP地址外的其它更多的信息,如默認網(wǎng)關(guān)、DNS服務(wù)器的IP地址等信息?!?/span>
代理ARP(PROXY ARP)也被稱作混雜ARP(Promiscuous ARP)(RFC 925、1027)一般被像路由器這樣的設(shè)備使用--用來代替處于另一個網(wǎng)段的主機回答本網(wǎng)段主機的ARP請求?!?br> 下面是代理ARP的應(yīng)用之一,如圖5所示,主機PC1(192.168.20.66/24)需要向主機PC2(192.168.20.20/24)發(fā)送報文,因為主機PC1不知道子網(wǎng)的存在且和目標主機PC2在同一主網(wǎng)絡(luò)網(wǎng)段,所以主機PC1將發(fā)送ARP請求廣播報文請求192.168.20.20的MAC地址。這時,路由器將識別出報文的目標地址屬于另一個子網(wǎng)(注意,路由器的接口IP地址配置的是28位的掩碼),因此向請求主機回復(fù)自己的硬件地址(0004.dd9e.cca0)。之后,PC1將發(fā)往PC2的數(shù)據(jù)包都發(fā)往MAC地址0004.dd9e.cca0(路由器的接口E0/0),由路由器將數(shù)據(jù)包轉(zhuǎn)發(fā)到目標主機PC2。(接下來路由器將為PC2做同樣的代理發(fā)送數(shù)據(jù)包的工作)。這種ARP使得子網(wǎng)化網(wǎng)絡(luò)拓撲對于主機來說時透明的(或者可以說是路由器以一個不真實的PC2的MAC地址欺騙了源主機PC1)。
無故(Gratuitous ARP,GARP)ARP也稱為無為ARP。主機有時會使用自己的IP地址作為目標地址發(fā)送ARP請求。這種ARP請求稱為無故ARP,GARP,主要有兩個用途:
?。?)檢查重復(fù)地址(如果收到ARP響應(yīng)表明存在重復(fù)地址)?! ?br> ?。?)用于通告一個新的數(shù)據(jù)鏈路標識。當一個設(shè)備收到一個arp請求時,發(fā)現(xiàn)arp緩沖區(qū)中已有發(fā)送者的IP地址,則更新此IP地址的MAC地址條目。6. 應(yīng)用舉例
B: ip地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB
C: ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC
B: ip地址 192.168.1.2硬件地址 BB:BB:BB:BB:BB:BB
C: ip地址 192.168.0.3硬件地址 CC:CC:CC:CC:CC:CC
ping還給我們一個看主機到目的主機的路由的機會。這是因為,ICMP的ping請求數(shù)據(jù)報在每經(jīng)過一個路由器的時候,路由器都會把自己的ip放到該數(shù) 據(jù)報中。而目的主機則會把這個ip列表復(fù)制到回應(yīng)icmp數(shù)據(jù)包中發(fā)回給主機。但是,無論如何,ip頭所能紀錄的路由列表是非常的有限。如果要觀察路由, 我們還是需要使用更好的工具,就是要講到的Traceroute(windows下面的名字叫做tracert)。
聯(lián)系客服