A. ICMP報文類型及作用(簡答)
總體上被分為兩種類型:差錯報文和信息報文。差錯報文的報文類型從0到127;信息報文的類型從128到255。
ICMP報文包含在IP數據報中,屬於IP的一個用戶,IP頭部就在ICMP報文的前面,所以一個ICMP報文包括IP頭部、ICMP頭部和ICMP報文,IP頭部的Protocol值為1就說明這是一個ICMP報文,ICMP頭部中的類型(Type)域用於說明ICMP報文的作用及格式。
此外還有一個代碼(Code)域用於詳細說明某種ICMP報文的類型,所有數據都在ICMP頭部後面。ICMP報文格式具體由RFC 777,RFC 792規范。
(1)網路安全icmp序號的規律擴展閱讀
ICMP協議對於網路安全具有極其重要的意義。ICMP協議本身的特點決定了它非常容易被用於攻擊網路上的路由器和主機。
比如,可以利用操作系統規定的ICMP數據包最大尺寸不超過64KB這一規定,向主機發起「Ping of Death」(死亡之Ping)攻擊。「Ping of Death」 攻擊的原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機。
此外,向目標主機長時間、連續、大量地發送ICMP數據包,也會最終使系統癱瘓。大量的ICMP數據包會形成「ICMP風暴」,使得目標主機耗費大量的CPU資源處理,疲於奔命。
B. 什麼是TCP和ICMP
TCP:傳輸控制協議(英語:TransmissionControlProtocol,縮寫:TCP)是一種面向連接的、可靠的、基於位元組流的傳輸層通信協議,由IETF的RFC793定義。在簡化的計算機網路OSI模型中,它完成第四層傳輸層所指定的功能。
TCP旨在適應支持多網路應用的分層協議層次結構。 連接到不同但互連的計算機通信網路的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。
TCP假設它可以從較低級別的協議獲得簡單的,可能不可靠的數據報服務。 原則上,TCP應該能夠在從硬線連接到分組交換或電路交換網路的各種通信系統之上操作。
ICMP:互聯網控制消息協議(英語:,縮寫:ICMP)是互聯網協議族的核心協議之一。
它用於網際協議(IP)中發送控制消息,提供可能發生在通信環境中的各種問題反饋。通過這些信息,使管理者可以對所發生的問題作出診斷,然後採取適當的措施解決。
ICMP 協議應用在許多網路管理命令中,下面以 ping 和 tracert 命令為例詳細介紹 ICMP 協議的應用。
(1) ping 命令使用 ICMP 回送請求和應答報文
在網路可達性測試中使用的分組網間探測命令 ping 能產生 ICMP 回送請求和應答報文。目的主機收到 ICMP 回送請求報文後立刻回送應答報文,若源主機能收到 ICMP 回送應答報文,則說明到達該主機的網路正常。
(2)路由分析診斷程序 tracert 使用了 ICMP時間超過報文
tracert 命令主要用來顯示數據包到達目的主機所經過的路徑。通過執行一個 tracert 到對方主機的命令,返回數據包到達目的主機所經歷的路徑詳細信息,並顯示每個路徑所消耗的時間。
(2)網路安全icmp序號的規律擴展閱讀:
ICMP是在RFC 792中定義的互聯網協議族之一。通常用於返回的錯誤信息或是分析路由。ICMP錯誤消息總是包括了源數據並返回給發送者。 ICMP錯誤消息的例子之一是TTL值過期。每個路由器在轉發數據報的時候都會把IP包頭中的TTL值減1。
如果TTL值為0,「TTL在傳輸中過期」的消息將會回報給源地址。 每個ICMP消息都是直接封裝在一個IP數據包中的,因此,和UDP一樣,ICMP是不可靠的。
雖然ICMP是包含在IP數據包中的,但是對ICMP消息通常會特殊處理,會和一般IP數據包的處理不同,而不是作為IP的一個子協議來處理。在很多時候,需要去查看ICMP消息的內容,然後發送適當的錯誤消息到那個原來產生IP數據包的程序,即那個導致ICMP消息被發送的IP數據包。
很多常用的工具是基於ICMP消息的。traceroute是通過發送包含有特殊的TTL的包,然後接收ICMP超時消息和目標不可達消息來實現的。
ping則是用ICMP的"Echo request"(類別代碼:8)和"Echo reply"(類別代碼:0)消息來實現的。
C. ICMP是什麼ping有是什麼
ICMP是Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。
ping是DOS命令,通常用於檢測網路連接和故障。Ping是Internet包資源管理器,用於測試網路連接量的程序。Ping向目的地發送ICMP回聲清除消息,並報告是否接收到所需的ICMP回聲響應。
(3)網路安全icmp序號的規律擴展閱讀
控制消息是指網路通不通、主機是否可達、路由是否可用等網路本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起著重要的作用。
ICMP協議是一種面向無連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網路安全具有極其重要的意義。
它是TCP/IP協議族的一個子協議,屬於網路層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。
當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。ICMP報文在IP幀結構的首部協議類型欄位(Protocol 8bit)的值=1。
D. 為什麼PING別人的IP地址PING不通呢
原因:對方電腦開啟了防火牆造成的。
1、首先在電腦桌面找到控制面板點擊進入;
E. 網路ICMP原理
①路由在轉發ARP請求分組時不改變源地址信息(不改變任何信息)。回送時也不改變,連接在路由器上的主機在同樣一個廣播域中,ARP請求分組時廣播發出。路由器中沒有添加路由時,使用默認路由0 0,往所有非源埠發,沒有默認路由的話,數據包就直接丟棄了。
②既然PING通了,路由器中就應該有相應的路由信息了才對,之後應該能順利通信才是呀!ICMP屬於網路層協議,既然能接收到ICMP數據包(PING功能),應該進行其他操作也沒問題才是呀。路由器恢復默認設置試試。
我上網搜了搜關於ping屏不能訪問的問題,確實跟網路無關,要不就是網路中IP沖突,要不就是系統中的許可權設置有問題。
補充:
你說的使用\\IP這種形式來訪問主機,訪問不通。這種情況可能是windows系統的組策略設置有問題。
試試:打開組策略,本地計算機策略→計算機配置→Windows設置→安全設置→本地策略→用戶權利指派。在右側找到「拒絕從網路訪問這台計算機」,打開,去掉其中的「Guest」項。
如果使用軟體可能訪問(例如用飛鴿傳書),那還是主機設置有問題,和網路(路由器)無關。
F. TCP,UDP,ICMP是什麼意思啊
ICMP
英文原義:Internet Control Message Protocol
中文釋義:(RFC-792)Internet控制消息協議
註解:該協議是TCP/IP協議集中的一個子協議,屬於網路層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。我們可以通過Ping命令發送ICMP回應請求消息並記錄收到ICMP回應回復消息,通過這些消息來對網路或主機的故障提供參考依據。
應 用:要使用該協議,我們可以進行相應的ICMP設置,比如在Windows XP中,首先打開「網路連接」,右鍵單擊啟用Internet連接防火牆的「網路連接」,選擇「屬性」打開屬性窗口。接著,選擇「高級」選項卡,單擊右下角「設置」按鈕。然後,在高級設置窗口中選擇「ICMP」選項卡,在其中就可以進行相應的設置,包括允許傳入的回顯請求等。
ICMP是「Internet Control Message Protocol」(Internet控制消息協議)的縮寫。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網路通不通、主機是否可達、路由是否可用等網路本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起著重要的作用。
我們在網路中經常會使用到ICMP協議,只不過我們覺察不到而已。比如我們經常使用的用於檢查網路通不通的Ping命令,這個「Ping」的過程實際上就是ICMP協議工作的過程。還有其他的網路命令如跟蹤路由的Tracert命令也是基於ICMP協議的。
ICMP的重要性
ICMP協議對於網路安全具有極其重要的意義。ICMP協議本身的特點決定了它非常容易被用於攻擊網路上的路由器和主機.
比如,可以利用操作系統規定的ICMP數據包最大尺寸不超過64KB這一規定,向主機發起「Ping of Death」(死亡之Ping)攻擊。「Ping of Death」 攻擊的原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機。
此外,向目標主機長時間、連續、大量地發送ICMP數據包,也會最終使系統癱瘓。大量的ICMP數據包會形成「ICMP風暴」,使得目標主機耗費大量的CPU資源處理,疲於奔命。
應對ICMP攻擊
雖然ICMP協議給黑客以可乘之機,但是ICMP攻擊也並非無葯可醫。只要在日常網路管理中未雨綢繆,提前做好准備,就可以有效地避免ICMP攻擊造成的損失。
對於「Ping of Death」攻擊,可以採取兩種方法進行防範:第一種方法是在路由器上對ICMP數據包進行帶寬限制,將ICMP佔用的帶寬控制在一定的范圍內,這樣即使有ICMP攻擊,它所佔用的帶寬也是非常有限的,對整個網路的影響非常少;第二種方法就是在主機上設置ICMP數據包的處理規則,最好是設定拒絕所有的ICMP數據包。
設置ICMP數據包處理規則的方法也有兩種,一種是在操作系統上設置包過濾,另一種是在主機上安裝防火牆。
Vista系統常用英文專業詞語
ICMP,互聯網控制信息協議(Internet CONTROL Message Protocol),用於錯誤報告和調試。ICMP回應請求,並回應流行的Ping命令所使用的回復信息。
G. ICMP協議詳解
ICMP(Internet Control Message Protocol,網際報文控制協議)是Internet協議族的核心協議之一,它主要用來在網路計算機的操作系統中發送出錯信息,比如,提示請求的服務不可用,或者主機或者路由不可達.
ICMP依靠IP協議來完成其任務,通常也是IP協議的一個集成部分.和傳輸層協議如TCP和UDP的目的不同,它一般並不用來在端系統之間來傳送數據.它通常不被用戶網路程序直接使用,例外的情況是像Ping和tracert這樣的診斷程序.
IPv4版本的ICMP也被稱作ICMPv4,IPv6中也有對應的版本IPv6.
ICMP協議 - 什麼是ICMP協議
ICMP是「Internet Control Message Protocol」(Internet控制消息協議)的縮寫。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網路通不通、主機是否可達、路由是否可用等網路本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起著重要的作用。
我們在網路中經常會使用到ICMP協議,只不過我們覺察不到而已。比如我們經常使用的用於檢查網路通不通的Ping命令,這個「Ping」的過程實際上就是ICMP協議工作的過程。還有其他的網路命令如跟蹤路由的Tracert命令也是基於ICMP協議的。
ICMP協議 - ICMP協議格式
ICMP報文類型
ICMP報文大體可以分為兩種類型,即ICMP差錯報文和ICMP詢問報文。但細分又可分為很多類型,如表1所示。
表一 ICMP報文類型
ICMP回射請求和應答報文頭部格式
ICMP報文被封裝在IP數據報內部傳輸。如圖1所示,是ICMP回射請求和應答報文頭部格式。
圖1 ICMP回射請求和應答報文頭部格式
各種ICMP報文的前32bits都一樣,它們是:
8bits類型和8bits代碼欄位:一起決定了ICMP報文的類型。常見的有:
類型8、代碼0:回射請求。
類型0、代碼0:回射應答。
類型11、代碼0:超時。
16bits校驗和欄位:包括數據在內的整個ICMP數據包的校驗和,其計算方法和IP頭部校驗和的計算方法是一樣的。
對於ICMP回射請求和應答報文來說,接下來是16bits標識符欄位:用於標識本ICMP進程。
最後是16bits序列號欄位:用於判斷回射應答數據報。
2.3 ICMP目標不可達報文
如圖2所示,是ICMP目標不可達報文頭部格式。
圖2 ICMP目標不可達報文頭部格式
其中代碼欄位的不同值又代表不同的含義,如,0代表網路不可達、1代表主機不可達等,見表1。
2.4 ICMP超時報文頭部格式
如圖3所示,是ICMP超時報文頭部格式。
圖3 ICMP超時報文頭部格式
其中:
類型11+代碼0:表示傳輸期間生存時間為0。
類型11+代碼1:表示數據報組裝期間生存時間為0。
由於篇幅有限,這里不再分析其他類型ICMP協議數據包的格式。
ICMP協議 - ICMP的重要性
ICMP協議對於網路安全具有極其重要的意義。ICMP協議本身的特點決定了它非常容易被用於攻擊網路上的路由器和主機。例如,在1999年8月海信集團「懸賞」50萬元人民幣測試防火牆的過程中,其防火牆遭受到的ICMP攻擊達334050次之多,占整個攻擊總數的90%以上!可見,ICMP的重要性絕不可以忽視!
比如,可以利用操作系統規定的ICMP數據包最大尺寸不超過64KB這一規定,向主機發起「Ping of Death」(死亡之Ping)攻擊。「Ping of Death」 攻擊的原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機。
此外,向目標主機長時間、連續、大量地發送ICMP數據包,也會最終使系統癱瘓。大量的ICMP數據包會形成「ICMP風暴」,使得目標主機耗費大量的CPU資源處理,疲於奔命。
ICMP協議 - 應對ICMP攻擊
雖然ICMP協議給黑客以可乘之機,但是ICMP攻擊也並非無葯可醫。只要在日常網路管理中未雨綢繆,提前做好准備,就可以有效地避免ICMP攻擊造成的損失。
對於「Ping of Death」攻擊,可以採取兩種方法進行防範:第一種方法是在路由器上對ICMP數據包進行帶寬限制,將ICMP佔用的帶寬控制在一定的范圍內,這樣即使有ICMP攻擊,它所佔用的帶寬也是非常有限的,對整個網路的影響非常少;第二種方法就是在主機上設置ICMP數據包的處理規則,最好是設定拒絕所有的ICMP數據包。
設置ICMP數據包處理規則的方法也有兩種,一種是在操作系統上設置包過濾,另一種是在主機上安裝防火牆。具體設置如下:
1.在Windows 2000 Server中設置ICMP過濾
Windows 2000 Server提供了「路由與遠程訪問」服務,但是默認情況下是沒有啟動的,因此首先要啟動它:點擊「管理工具」中的「路由與遠程訪問」,啟動設置向導。在其中選擇「手動配置伺服器」項,點擊【下一步】按鈕。稍等片刻後,系統會提示「路由和遠程訪問服務現在已被安裝。要開始服務嗎?」,點擊【是】按鈕啟動服務。
服務啟動後,在計算機名稱的分支下會出現一個「IP路由選擇」,點擊它展開分支,再點擊「常規」,會在右邊出現伺服器中的網路連接(即網卡)。用滑鼠右鍵點擊你要配置的網路連接,在彈出的菜單中點擊「屬性」,會彈出一個網路連接屬性的窗口,如圖1所示。
圖1
圖1中有兩個按鈕,一個是「輸入篩選器」(指對此伺服器接受的數據包進行篩選),另一個是「輸出篩選器」(指對此伺服器發送的數據包進行篩選),這里應該點擊【輸入篩選器】 按鈕,會彈出一個「添加篩選器」窗口,再點擊【添加】按鈕,表示要增加一個篩選條件。
在「協議」右邊的下拉列表中選擇「ICMP」,在隨後出現的「ICMP類型」和「ICMP編碼」中均輸入「255」,代表所有的ICMP類型及其編碼。ICMP有許多不同的類型(Ping就是一種類型),每種類型也有許多不同的狀態,用不同的「編碼」來表示。因為其類型和編碼很復雜,這里不再敘述。
點擊【確定】按鈕返回「輸入篩選器」窗口,此時會發現「篩選器」列表中多了一項內容(如圖2所示)。點擊【確定】按鈕返回「本地連接」窗口,再點擊【確定】按鈕,此時篩選器就生效了,從其他計算機上Ping這台主機就不會成功了。
圖2
2. 用防火牆設置ICMP過濾
現在許多防火牆在默認情況下都啟用了ICMP過濾的功能。如果沒有啟用,只要選中「防禦ICMP攻擊」、「防止別人用ping命令探測」就可以了,如圖3所示。
H. ICMP攻擊原理
ICMP的全稱是 Internet Control Message Protocol 。從技術角度來說,ICMP就是一個「錯誤偵測與回報機制」,其目的就是讓我們能夠檢測網路的連線狀況,也能確保連線的准確性,其功能主要有:
· 偵測遠端主機是否存在。
· 建立及維護路由資料。
· 重導資料傳送路徑。
· 資料流量控制。
ICMP常用類型
ICMP常用類型 ICMP在溝通之中,主要是透過不同的類別(Type)與代碼(Code) 讓機器來識別不同的連線狀況。常用的類別如下表所列:
ICMP 是個非常有用的協定,尤其是當我們要對網路連接狀況進行判斷的時候。下面讓我們看看常用的 ICMP 實例,以更好了解 ICMP 的功能與作用.
TCP/IP協議介紹
TCP/IP的通訊協議
這部分簡要介紹一下TCP/IP的內部結構,為討論與互聯網有關的安全問題打下基礎。TCP/IP協議組之所以流行,部分原因是因為它可以用在各種各樣的信道和底層協議(例如T1和X.25、乙太網以及RS-232串列介面)之上。確切地說,TCP/IP協議是一組包括TCP協議和IP協議,UDP(User Datagram Protocol)協議、ICMP(Internet Control Message Protocol)協議和其他一些協議的協議組。
TCP/IP整體構架概述
TCP/IP協議並不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬體在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網路層、傳輸層、話路層、表示層和應用層。而TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。這4層分別為:
應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網路遠程訪問協議(Telnet)等。
傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據並把它傳輸到下一層中,這一層負責傳送數據,並且確定數據已被送達並接收。
互連網路層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。
網路介面層:對實際的網路媒體的管理,定義如何使用實際網路(如Ethernet、Serial Line等)來傳送數據。
TCP/IP中的協議
以下簡單介紹TCP/IP中的協議都具備什麼樣的功能,都是如何工作的:
1. IP
網際協議IP是TCP/IP的心臟,也是網路層中最重要的協議。
IP層接收由更低層(網路介面層例如乙太網設備驅動程序)發來的數據包,並把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP並沒有做任何事情來確認數據包是按順序發送的或者沒有被破壞。IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。
高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好象是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那麼,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。
2. TCP
如果IP數據包中有已經封好的TCP數據包,那麼IP將把它們向『上』傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最後到接收方。
面向連接的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收域名資料庫),但使用UDP傳送有關單個主機的信息。
3.UDP
UDP與TCP位於同一層,但對於數據包的順序錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網落時間協議)和DNS(DNS也使用TCP)。
欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連接(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨著更大的危險。
4.ICMP
ICMP與IP位於同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的『Redirect』信息通知主機通向其他系統的更准確的路徑,而『Unreachable』信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接『體面地』終止。PING是最常用的基於ICMP的服務。
5. TCP和UDP的埠結構
TCP和UDP服務通常有一個客戶/伺服器的關系,例如,一個Telnet服務進程開始在系統上處於空閑狀態,等待著連接。用戶使用Telnet客戶程序與服務進程建立一個連接。客戶程序向服務進程寫入信息,服務進程讀出信息並發出響應,客戶程序讀出響應並向用戶報告。因而,這個連接是雙工的,可以用來進行讀寫。
兩個系統間的多重Telnet連接是如何相互確認並協調一致呢?TCP或UDP連接唯一地使用每個信息中的如下四項進行確認:
源IP地址---發送包的IP地址。
目的IP地址---接收包的IP地址。
源埠---源系統上的連接的埠。
目的埠---目的系統上的連接的埠。
埠是一個軟體結構,被客戶程序或服務進程用來發送和接收信息。一個埠對應一個16比特的數。服務進程通常使用一個固定的埠,例如,SMTP使用25、Xwindows使用6000。這些埠號是『廣為人知』的,因為在建立與特定的主機或服務的連接時,需要這些地址和目的地址進行通訊。
ICMP校驗和演算法】
以下代碼在Visual Studio 2008 + Windows 7下調試通過。
lpsz指定要計算的數據包首地址,_dwSize指定該數據包的長度。
int CalcCheckSum(char* lpsz,DWORD _dwSize)
{
int dwSize;
__asm // 嵌入匯編
{
mov ecx,_dwSize
shr ecx,1
xor ebx,ebx
mov esi,lpsz
read: //所有word相加,保存至EBX寄存器
lodsw
movzx eax,ax
add ebx,eax
loop read
test _dwSize,1 //校驗數據是否是奇數位的
jz calc
lodsb
movzx eax,al
add ebx,eax
calc:
mov eax,ebx //高低位相加
and eax,0ffffh
shr ebx,16
add eax,ebx
not ax
mov dwSize,eax
}
return dwSize;
}
I. 請問什麼是ICMP
互聯網控制消息協議Internet Control Message Protocol 簡寫 ICMP ICMP協議是一種面向連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網路安全具有極其重要的意義。 它是TCP/IP協議族的一個子協議,屬於網路層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。 ICMP原理ICMP提供一致易懂的出錯報告信息。發送的出錯報文返回到發送原數據的設備,因為只有發送設備才是出錯報文的邏輯接受者。發送設備隨後可根據ICMP報文確定發生錯誤的類型,並確定如何才能更好地重發失敗的數據報。但是ICMP唯一的功能是報告問題而不是糾正錯誤,糾正錯誤的任務由發送方完成。 我們在網路中經常會使用到ICMP協議,比如我們經常使用的用於檢查網路通不通的Ping命令(Linux和Windows中均有),這個「Ping」的過程實際上就是ICMP協議工作的過程。還有其他的網路命令如跟蹤路由的Tracert命令也是基於ICMP協議的。
J. 關於ICMP的問題
ICMP是「Internet Control Message Protocol」(Internet控制消息協議)的縮寫。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網路通不通、主機是否可達、路由是否可用等網路本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起著重要的作用。
我們在網路中經常會使用到ICMP協議,只不過我們覺察不到而已。比如我們經常使用的用於檢查網路通不通的Ping命令,這個「Ping」的過程實際上就是ICMP協議工作的過程。還有其他的網路命令如跟蹤路由的Tracert命令也是基於ICMP協議的。
ICMP的重要性
ICMP協議對於網路安全具有極其重要的意義。ICMP協議本身的特點決定了它非常容易被用於攻擊網路上的路由器和主機.
比如,可以利用操作系統規定的ICMP數據包最大尺寸不超過64KB這一規定,向主機發起「Ping of Death」(死亡之Ping)攻擊。「Ping of Death」 攻擊的原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機。
此外,向目標主機長時間、連續、大量地發送ICMP數據包,也會最終使系統癱瘓。大量的ICMP數據包會形成「ICMP風暴」,使得目標主機耗費大量的CPU資源處理,疲於奔命。
應對ICMP攻擊
雖然ICMP協議給黑客以可乘之機,但是ICMP攻擊也並非無葯可醫。只要在日常網路管理中未雨綢繆,提前做好准備,就可以有效地避免ICMP攻擊造成的損失。
對於「Ping of Death」攻擊,可以採取兩種方法進行防範:第一種方法是在路由器上對ICMP數據包進行帶寬限制,將ICMP佔用的帶寬控制在一定的范圍內,這樣即使有ICMP攻擊,它所佔用的帶寬也是非常有限的,對整個網路的影響非常少;第二種方法就是在主機上設置ICMP數據包的處理規則,最好是設定拒絕所有的ICMP數據包。
設置ICMP數據包處理規則的方法也有兩種,一種是在操作系統上設置包過濾,另一種是在主機上安裝防火牆。