ICMP
ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。
ICMP協議是一種面向無連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網絡安全具有極其重要的意義。
它是
TCP/IP協議族的一個子協議,屬於網絡層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發
數據包等情況時,會自動發送ICMP消息。
我們在網絡中經常會使用到ICMP協議,比如我們經常使用的用於檢查網絡通不通的
Ping
命令(Linux和Windows中均有),這個“Ping”的過程實際上就是ICMP協議工作的過程。還有其他的
網絡命令
如
跟蹤路由
的Tracert命令也是基於ICMP協議的。
應對ICMP攻擊
雖然ICMP協議給 黑客 以可乘之機,但是ICMP攻擊也並非無葯可醫。只要在日常 網絡管理 中未雨綢繆,提前做好准備,就可以有效地避免ICMP攻擊造成的損失。ARP
ARP協議是“Address Resolution Protocol”(地址解析協議)的縮寫。在局域網中,網絡中實際傳輸的是“幀”,幀里面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂“地址解析”就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
為了解釋ARP協議的作用,就必須理解數據在網絡上的傳輸過程。這里舉一個簡單的PING例子。
假設我們的計算機IP地址是192.168.1.1,要執行這個命令:ping192.168.1.2。該命令會通過ICMP協議發送ICMP數據包。該過程需要經過下面的步驟:
1、應用程序構造數據包,該示例是產生ICMP包,被提交給內核(網絡驅動程序);
2、內核檢查是否能夠轉化該IP地址為MAC地址,也就是在本地的ARP緩存中查看IP-MAC對應表[1];
3、如果存在該IP-MAC對應關系,那么跳到步驟7;如果不存在該IP-MAC對應關系,那么接續下面的步驟;
4、內核進行ARP廣播,發送ARP幀,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令類型為REQUEST(1),其中包含有自己的MAC地址;
5、當192.168.1.2主機接收到該ARP請求后,將源主機的IP地址及MAC更新至自己的arp緩沖中,然后發送一個ARP的REPLY(2)命令,其中包含自己的MAC地址;
6、本地獲得192.168.1.2主機的IP-MAC地址對應關系,並保存到ARP緩存中;
7、內核將把IP轉化為MAC地址,然后封裝在以太網頭結構中,再把數據發送出去;
使用arp-a命令就可以查看本地的ARP緩存內容,所以,執行一個本地的PING命令后,ARP緩存就會存在一個目的IP的記錄了。當然,如果你的數據包是發送到不同網段的目的地,那么就一定存在一條網關的IP-MAC地址對應的記錄。
知道了ARP協議的作用,就能夠很清楚地知道,數據包的向外傳輸很依靠ARP協議,當然,也就是依賴ARP緩存。要知道,ARP協議的所有操作都是內核自動完成的,同其他的應用程序沒有任何關系。同時需要注意的是,ARP協議只使用於本網絡。
