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