ICMP (互聯網控制消息協議 )是什么

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

互聯網控制消息協議(英語:Internet?Control?Message?Protocol,縮寫:ICMP)是互聯網協議族的核心協議之一。

它用于TCP/IP網絡中發送控制消息,提供可能發生在通信環境中的各種問題反饋,通過這些信息,使管理者可以對所發生的問題作出診斷,然后采取適當的措施解決。

ICMP?依靠IP來完成它的任務,它是IP的主要部分。它與傳輸協議(如TCP和UDP)顯著不同:它一般不用于在兩點間傳輸數據。它通常不由網絡程序直接使用,除了ping和traceroute這兩個特別的例子。?IPv4中的ICMP被稱作ICMPv4,IPv6中的ICMP則被稱作ICMPv6。

技術細節

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)消息來實現的。

ICMP報文結構

報頭

ICMP報頭從IP報頭的第160位開始(IP首部20字節)(除非使用了IP報頭的可選部分)。

Bits160-167168-175176-183184-191
160TypeCode校驗碼(checksum)
192ID序號(sequence)
  • Type?- ICMP的類型,標識生成的錯誤報文;
  • Code?- 進一步劃分ICMP的類型,該字段用來查找產生錯誤的原因.;例如,ICMP的目標不可達類型可以把這個位設為1至15等來表示不同的意思。
  • Checksum?- 校驗碼部分,這個字段包含有從ICMP報頭和數據部分計算得來的,用于檢查錯誤的數據,其中此校驗碼字段的值視為0。
  • ID?- 這個字段包含了ID值,在Echo Reply類型的消息中要返回這個字段。
  • Sequence?- 這個字段包含一個序號,同樣要在Echo Reply類型的消息中要返回這個字段。

?

填充數據

填充的數據緊接在ICMP報頭的后面(以8位為一組):

  • Linux的"ping"工具填充的ICMP除了8個8位組的報頭以外,默認情況下還另外填充數據使得總大小為64字節。
  • Windows的"ping.exe"填充的ICMP除了8個8位組的報頭以外,默認情況下還另外填充數據使得總大小為40字節。

?

報文類型

類型代碼狀態描述查詢差錯
0 -?Echo Reply0?echo響應 (被程序ping使用)?
1 and 2?未分配保留?
3 - 目的不可達0?目標網絡不可達?
1?目標主機不可達?
2?目標協議不可達?
3?目標端口不可達?
4?要求分段并設置DF flag標志?
5?源路由失敗?
6?未知的目標網絡?
7?未知的目標主機?
8?源主機隔離(作廢不用)?
9?禁止訪問的網絡?
10?禁止訪問的主機?
11?對特定的TOS 網絡不可達?
12?對特定的TOS 主機不可達?
13?由于過濾 網絡流量被禁止?
14?主機越權?
15?優先權終止生效?
4 - 源端關閉0棄用源端關閉(擁塞控制)?
5 - 重定向0?重定向網絡?
1?重定向主機?
2?基于TOS 的網絡重定向?
3?基于TOS 的主機重定向?
6?棄用備用主機地址??
7?未分配保留??
8 -?請求回顯0?Echo請求?
9 - 路由器通告0?路由通告?
10 - 路由器請求0?路由器的發現/選擇/請求?
11 - ICMP 超時0?TTL 超時?
1?分片重組超時?
12 - 參數問題:錯誤IP頭部0?IP 報首部參數錯誤?
1?丟失必要選項?
2?不支持的長度??
13 - 時間戳請求0?時間戳請求?
14 - 時間戳應答0?時間戳應答?
15 - 信息請求0棄用信息請求?
16 - 信息應答0棄用信息應答?
17 - 地址掩碼請求0棄用地址掩碼請求?
18 - 地址掩碼應答0棄用地址掩碼應答?
19?保留因安全原因保留??
20 至 29?保留Reserved?for robustness experiment??
30 - Traceroute0棄用信息請求??
31?棄用數據報轉換出錯??
32?棄用手機網絡重定向??
33?棄用Where-Are-You(originally meant for?IPv6)??
34?棄用Here-I-Am(originally meant for IPv6)??
35?棄用Mobile Registration Request??
36?棄用Mobile Registration Reply??
37?棄用Domain Name Request??
38?棄用Domain Name Reply??
39?棄用SKIP Algorithm Discovery Protocol,?Simple Key-Management for Internet Protocol??
40??Photuris, Security failures??
41?實驗性的ICMP for experimental mobility protocols such as?Seamoby?[RFC4065]??
42 到 255?保留保留??
235?實驗性的RFC3692(?RFC 4727)??
254?實驗性的RFC3692(?RFC 4727)??
255?保留保留

?

?

?

特別說明:以上內容大部分收集、整理自**百科。

?

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

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

相關文章

股票數據相關性分析

導入相關包 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection import akshare as ak from sklearn import cluster, covariance, manifold %matplotlib inline #Jupyter Notebook顯示圖形專用 plt…

分享一個輔助分析內存泄漏的腳本

最近給系統做了一點優化,前幾天去查看系統監控,想看看上線前后cpu使用率曲線變化情況。查看的時候意外發現上線前后內存占用相差不少,20%以上。 本來我沒怎么在意這個問題,因為我們系統會在運行過程中緩存部分數據內容。但客戶覺得…

windows Virtualbox下配置Ubuntu,且用ssh連接

1、軟件介紹 1)virtualbox 5.2.22 2)Ubuntu 18.04 3)git bash 2、virtualbox設置 安裝完Ubuntu后點擊該鏡像的設置,依次點擊“網絡”——“端口轉發” 將主機端口設置為一個閑置端口,子系統端口也就是Ubuntu端口設置…

專訪劉偉:軟件開發人員的內功修煉之道

摘要:數學修養對軟件開發之路起著什么作用?碼農如何修煉自己的內功并成長為優秀的軟件開發員?帶著相關思考,社區之星第10期采訪了中南大學副教授——劉偉。他對數學修養、設計模式、軟件架構和重構方面的獨特見解,相信…

多線程數據下載(akshare)

import akshare as ak import pandas as pd from multiprocessing.dummy import Pool as ThreadPool import datetime import timedef get_hs300_stock_codes():獲取滬深300股票代碼列表:return:hs300ak.index_stock_cons_sina("000300")codeshs300[code]codescodes.…

MongoDB 4.6.1 c++ driver 編譯

版權聲明:本文為博主原創文章,未經博主同意不得轉載。https://blog.csdn.net/sheismylife/article/details/25512251 這個版本號已經和之前不一樣了。有專門的github的項目。https://github.com/mongodb/mongo-cxx-driver首先獲取源碼:git cl…

地址解析協議 (ARP) 是什么

地址解析協議 (ARP) 是通過解析網路層地址來找尋數據鏈路層地址的一個在網絡協議包中極其重要的網絡傳輸協議。 ARP是通過網絡地址(例:IPv4)來定位MAC地址 (也稱為乙太地址)。 ARP已經在很多網路層和數據鏈接層之間得以實現,包括IPv4,Chaosn…

04.React事件 方法、 React定義方法的幾種方式 獲取數據 改變數據 執行方法傳值...

2019獨角獸企業重金招聘Python工程師標準>>> 一.基本用法 在以類繼承的方式定義的組件中,為了能方便地調用當前組件的其他成員方法或屬性(如:this.state),通常需要將事件處理函數運行時的 this 指向當前組件…

代碼之美——Doom3源代碼賞析

摘要:Dyad作者、資深C工程師Shawn McGrathz在空閑時翻看了Doom3的源代碼,發出了這樣的驚嘆:“這是我見過的最整潔、最優美的代碼!”“Doom 3的源代碼讓我對那些優秀的程序員刮目相看。”因此有了本文。 背景介紹: Doom…

UDP:用戶數據報協議 是什么

用戶數據報協議(英語:User Datagram Protocol,縮寫為UDP),又稱用戶數據報文協議,是一個簡單的面向數據報的傳輸層協議,正式規范為RFC 768。在TCP/IP模型中,UDP為網絡層以上和應用層以…

隨想錄(程序員和收入)

距離上一次寫博客已經很長時間了,大約過了三個星期。這三個星期發生了很多事情,這中間也有我自己的思考積累,也有工作上的變故。總之,自己想了很多,也得到了很多。每到這個時候,畢業生朋友們都在尋找工作&a…

iOS進階之正則表達式

最近一直在弄正則表達式,于是在這里整理一下,便于日后查閱。 1、常用符號 ^:字符串的開始$:字符串的結束*:表示零個或若干個?:表示零個或一個:表示一個或若干個| :表示 或 操作. &a…

akshare分析漲停板股票數據

導入包,獲取日期數據 import pandas as pd import numpy as np import akshare as ak #畫圖 import matplotlib.pyplot as plt #正確顯示中文和負號 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False #處理時間 from dateutil.parser…

DNS(域名系統) 是什么

域名系統(英文:Domain Name System,縮寫:DNS)是互聯網的一項服務。 它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。 DNS使用TCP和UDP端口53。當前,對于每一級域…

《The Art of Readable Code》學習筆記(一)

放寒假回家有些頹廢,就是不想看書。但是已經大三了,春節過后就要找實習了。哎,快樂的大學生活終于要過去了。 先從簡單的書看起吧!在圖書館借了本《The Art of Readable Code》,就是教你咋寫好優雅的代碼的&#xff0c…

文件基本處理

1 打開文件,將文件句柄賦值給一個變量 2 拿句柄對文件進行操作 3 關閉文件 將一個文件第一行寫道另外一個文件 f open("test","r",encoding"utf-8") # open找的是系統的編碼 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream詳細用法

ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間; 在C中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的文件I/O,stream這個類有兩個重要的運算符&…

如何將JAR包發布到Maven中央倉庫?

將jar包發布到Maven中央倉庫(Maven Central Repository)&#xff0c;這樣所有的Java開發者都可以使用Maven直接導入依賴&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL與HTTPS

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 關于加密 在解釋SSH、SSL與HTTPS協議之前我先介紹一下非對稱加密協議。在1976年以前&#xff0c;所有的加密都采用對稱加密&#xff0c…

北向資金運作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#獲取交易日歷 import datetime def get_cal_date(start,end):dates ak.to…