ICMP(Internet Control Message Protocol)網際控制報文協議初識

ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起著重要的作用。

它工作在OSI七層模型的中的第三層——網絡層。

每一個ICMP消息都將包含引發這條ICMP消息的數據包的完全IP包頭,這樣,端點系統就會知道實際上哪一個數據包沒有發送到目的地.另外引發此ICMP消息的數據包的前8個字節也將包括在內,這通常是TCP或者UDP包頭.
ICMP報文的結構如下圖所示:

ICMP

其中類型(TYPE)和代碼(CODE)共同確定了ICMP傳輸的消息。而檢驗和則用于驗證ICMP的完整性。TYPE和CODE的對應表如下:

ICMP對應表

  • 面向無連接
  • 是TCP/IP協議族的一個子協議,屬于網絡層協議
  • 傳遞的是控制信息
  • PING和Tracert等命令就是基于ICMP協議
  • ICMP就是一個“錯誤偵測與回報機制”
  • 偵測遠端主機是否存在
  • 建立及維護路由資料
  • 重導資料傳送路徑(ICMP重定向:在特定的情況下,雅思英語當路由器檢測到一臺機器使用非優化路由的時候,它會向該主機發送一個ICMP重定向報文,請求主機改變路由。)

當我們使用PING命令進行主機探測時,使用的就是ICMP協議。

ICMP協議本身的特點決定了它非常容易被用于攻擊網絡上的路由器和主機。

  • “Ping of Death” 攻擊的原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機。(操作系統已經取消了發送ICMP數據包的大小的限制,解決了這個漏洞)
  • 向目標主機長時間、連續、大量地發送ICMP數據包,也會最終使系統癱瘓。大量的ICMP數據包會形成“ICMP風暴”,使得目標主機耗費大量的CPU資源處理,疲于奔命。

對于“ICMP風暴”問題,解決方案1是在路由器上對ICMP數據包進行帶寬限制,將ICMP占用的帶寬控制在一定的范圍內,這樣即使有ICMP攻擊,它所占用的帶寬也是非常有限的,對整個網絡的影響非常少

解決方案2是設置一個防火墻,過濾ICMP包。一些現有的防火墻就會屏蔽ICMP包。

轉載于:https://www.cnblogs.com/zhangyiqinga/p/9753664.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396605.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396605.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux設置RSA密鑰登錄

一、怎么實現雙向免密登錄 前提 所有服務器/etc/ssh/sshd_config文件的以下三行未被注釋 RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys舉例: 兩臺服務器:192.168.100.134 192.168.1.140免密碼登錄是分用戶的…

python面向對象__str__和__repr__方法

__str__方法 class Animal:def __init__(self,name,color):self.namenameself.colorcolordef __str__(self):resself.name的顏色是self.colorreturn res batAnimal(蝙蝠,黑色) print(蝙蝠的特征:%s % bat) # 蝙蝠的特征:蝙蝠的顏色是黑色 對象輸出或者打印就會執行__str__方法…

函數sprintf真好用

描述:C 庫函數 int sprintf(char *str, const char *format, ...) 發送格式化輸出到 str 所指向的字符串。 聲明: int sprintf(char *str, const char *format, ...) 參數: str -- 這是指向一個字符數組的指針,該數組存儲了 C 字符…

oracle 刪除主鍵_大數據量刪除的思考 4

譯者 湯健 沃趣科技數據庫技術專家出品 沃趣科技在本系列的前一期文章中,我制作了一些圖,突出顯示了按表掃描執行大量刪除操作和按索引范圍掃描執行大量刪除之間的主要區別。根據所涉及的數據模式,選擇正確的策略可能對隨機I/Os的數量、生…

redis 持久化 + 主從復制+ 集群

2019獨角獸企業重金招聘Python工程師標準>>> 一、 Linux 下的 Redis 安裝 && 啟動 && 關閉 && 卸載 http://blog.csdn.net/zgf19930504/article/details/51850594 注:設置 redis.conf bind***.***.*.(127.0.0.1) redis啟動&…

怎么運行c語言_C語言 原來是這樣調用硬件的

大家都知道我們可以使用C語言寫一段程序來控制硬件工作,但你知道其工作原理嗎?網友北極C語言在實際運行中,都是以匯編指令的方式運行的,由編譯器把C語言編譯成匯編指令,CPU直接執行匯編指令。所以這個問題就變成&#…

四、元祖、字典

一、元祖(tuple):tu(11,"hello",(0,1),[11,"111"],33,) 元祖的特點:元祖中一級元素不可被修改,不能被增加或刪除,多級元素可以被修改,一般寫元祖的時候,推薦在后面添加逗號“&#xff…

PHP編程效率的20個要點

用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則 不會,注意:只有echo能這么做,它是一種可以把多個字符串當作參數的“函數”(譯注:PHP手冊中說echo是…

ubuntu運行python ide_打造vim中的python IDE

首先先介紹幾個常用的插件:1,ctags和taglist,這個大家估計都很常用,在ubuntu下只要安裝exuberant-ctags即可啦,另外tagbar支持面向對象語言的展示" toggle Tagbar displaymap :TagbarToggle" autofocus on T…

更新和插入的并發問題_mysql經典面試題:如何讀寫分離?主從原理是啥?同步的延時問題...

面試題你有沒有做 MySQL 讀寫分離?如何實現 MySQL 的讀寫分離?MySQL 主從復制原理的是啥?如何解決 MySQL 主從同步的延時問題?考點分析高并發這個階段,肯定是需要做讀寫分離的,啥意思?因為實際上…

php實現一個簡單的四則運算計算器

php實現一個簡單的四則運算計算器(還不支持括號的優先級)。利用棧這種數據結構來計算表達式很贊。 這里可以使用棧的結構,由于php的數組“天然”就有棧的特性,這里直接就利用了數組。當然可以使用棧結構寫,道理一樣的。…

Tcp與Ip協議的客戶端和服務器編程

Tcp與Ip協議的客戶端和服務器編程 本文就TCP和Ip協議的客戶端和服務器分別進行編程,實現了客戶端和服務端進行通信的功能,服務端對多個客戶端進行監聽,并能與多個客戶端通信。 服務器端代碼如下: using System; using System.Coll…

maven建立webapp項目時顯示Cannot change version of project facet Dynamic web module to 2.5

為什么80%的碼農都做不了架構師&#xff1f;>>> 網上查了很多東西都沒啥用&#xff0c;其實直接把這段代碼加到web.xml頭部&#xff0c;自然就不報錯了 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.…

python數據結構算法 北京大學_北京大學公開課《數據結構與算法Python版》

之前我分享過一個數據結構與算法的課程&#xff0c;很多小伙伴私信我問有沒有Python版。看了一些公開課后&#xff0c;今天特向大家推薦北京大學的這門課程&#xff1a;《數據結構與算法Python版》。課程概述很多同學想要轉行機器學習&#xff0c;也確實掌握了一些機器學習模型…

20道C#練習題(一)1——10題

1.輸入三個整數&#xff0c;xyz&#xff0c;最終以從小到大的方式輸出。利用if嵌套。 Console.Write("請輸入x"); double x double.Parse(Console.ReadLine()); Console.Write("請輸入y"); double y double.Parse(Console.ReadLine()); Console.Write(&q…

fd 句柄_linux文件描述符fd(windows下的句柄)

在Linux系統中一切皆可以看成是文件&#xff0c;文件又可分為&#xff1a;普通文件、目錄文件、鏈接文件和設備文件fd&#xff1a;file descriptor文件描述符0,1,2分別給了標準輸入、標準輸出和錯誤輸出。ls -l /proc/pid/fd可以查看某個進程所使用的fd用lsof可以查看比如&…

Python——三級菜單

#三級菜單函數 menu {北京&#xff1a;&#xff5b;海淀&#xff1a;&#xff5b;五道口&#xff1a;&#xff5b;&#xff5d;中關村&#xff1a;&#xff5b;&#xff5d;上帝&#xff1a;&#xff5b;&#xff5d;&#xff5d;昌平&#xff1a;&#xff5b;&#xff5d;朝陽…

HTTPS 原理解析

http://www.cnblogs.com/zery/p/5164795.html 一 前言 在說HTTPS之前先說說什么是HTTP&#xff0c;HTTP就是我們平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的數據都是未加密的&#xff0c;也就是明文的&#xff0c;因此使用HTTP協議傳輸隱私信息非常不安全。為了保證這些隱…

python 函數參數注解_python-如何使用函數注釋來驗證函數調用類...

我最近才發現有一種叫做函數注釋的東西,但是我不太確定如何使用它.這是我到目前為止的內容&#xff1a;def check_type(f):def decorated(*args, **kwargs):counter0for arg, type in zip(args, f.__annotations__.items()):if not isinstance(arg, type[1]):msg Not the vali…

SQL Server Replication 中關于視圖的點滴

在服務器A數據庫TEST新建了一個本地發布&#xff08;Local Publications&#xff09;RPL_GES_MIS_TEST,在服務器B數據庫RPL_TEST上創建了一個本地訂閱&#xff08;Local Subscriptions&#xff09;&#xff0c;它訂閱了了這個發布RPL_GES_MIS_TEST.如下截圖所示&#xff0c;本地…