IPCM协议

ICMP简介

Intenet控制报文协议ICMP(Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,它对手机各种网络协议,诊断和排除各种网络故障具有至关重要的作用。使用基于ICMP的应用时,需要对ICMP的工作原理很熟悉。

ICMP用来传递差错、控制、查询等信息。

图片.png

ICMP是TCP/IP协议簇的核心协议之一,它用在IP网络设备(PC也实现了第3层协议,所以也是网络设备)之间发送控制报文,传递差错、控制、查询等信息。

ICMP重定向

图片.png

ICMP Redirect重定向消息用于支持路由功能。如图所示,主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RT-B发送报文。网关RT-B收到报文后,检查报文信息,发现报文应该转发到源主机在同一网段的另外一个网关设备RT-A,因袭为此转发路径是更优的路径。所以RT-B会向主机发送一个Redirect消息,通知主机直接向另外一个网关RT-A发送该报文。主机收到Redirect消息后,向RT-A发送报文,RT-A会将报文转发给服务器A。

ICMP 差错检测

图片.png

ICMP Echo RequestICMP Echo Reply分别用来查询和响应某些信息,进行差错检测。

ICMP Echo消息常用于诊断源和目的之间的网络连通性,还可以提供其他信息,如报文往返时间等。

当网络设备无妨访问目标时,会自动发送ICMP目的不可达报文到发送端设备。

ICMP定义了各种错误消息,用于诊断网络连接性问题;
根据这些错误消息,源设备可以判断出数据传输失败的原因。
eg:
1.如果网路中发生了环路,导致报文在网络中循环,最终TTL超时,这种情况下网络设备会发送TTL超时消息给发送daunt设备。
2.如果目的不可达,则中间的网络设备会发送目的不可达消息给发送端设备。目的不可达的情况有多种,如果是网络设备无法找到目的网络,则发送目的网络不可达消息;如果网络设备无法找到目的主机,则发送目的主机不可达消息。

ICMP 数据包格式

包含ICMP包的数据帧:

图片.png

Type表示ICMP消息类型,Code表示统一消息类型中的不同消息。

ICMP消息封装在IP报文中,ICMP消息的格式取决于Type和Code字段,其中
Type字段为消息类型,
Code字段包含该消息类型的具体参数。
后面的校验和字段(Checksum)用于检查消息是否完整。
消息中包含32比特的可变参数,这个字段一般不使用,通常为0。在ICMP Request消息中,这个字段用来指定网关IP地址,主机根据这个地址将报文重定向到指定网关。
在Echo请求消息中,这个字段包含标识符和序号,源端根据这两个参数将受到的回复消息与本段发送的Echo请求消息进行关联。尤其是当源daunt向目的端发送了多个Echo请求时,需要根据标识符和序号将Echo请求和回复进行一一对应。

ICMP消息类型

图片.png

ICMP定义了多种消息类型,用于不同的场景。有些消息不需要Code字段来描述具体类型参数,仅用于Type字段表示消息类型。
eg:ICMP Echo回复消息的Type字段设置为0。

有些ICMP消息使用Type字段定义消息大类,用Code字段表示消息的具体类型。
eg:类型为3的消息表示目的不可达,不同的Code值(就是图上的编码)表示不可达原因,包括目的网络不可达,不同的Code值表示不可达原因,包括目的网络不可达(Code=0),目的主机不可达(Code=1),协议不可达(Code=2),目的TCP/IP端口不可达(Code=3)等。

ICMP应用ping

图片.png

ICMP的一个典型应用是Ping。Ping是检测网络联通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度,发送的ICMP报文个数,等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。

Ping常用的配置参数说明:

1. -a source-ip-address指定发送ICMP ECHO-REQUEST 报文的源IP地址。如果不指定源IP地址,将采用出接口的IP地址作为ICMP ECHO-REQUEST报文发送的源地址。
2. -c count指定发送ICMP ECHO-REQUEST报文次数。缺省情况下发送5个ICMP ECHO-REQUEST报文
3. -h ttl-value指定TTL的值。缺省值是255.
4. -t timeout指定发送完ICMP ECHO-REQUEST 后,等待ICMP ECHO-REPLY的超时时间。
图片.png

ping命令的输出信息中包括目的地址,ICMP报文长度,序号,TTL值,以及往返时间。序号是包含在Echo回复消息(Type=0)中的可变参数字段,TTL包含在消息的IP头中。

往返时间是计算的:https://networkengineering.stackexchange.com/questions/53253/where-does-the-pings-round-trip-time-store-in-the-ip-header#53253

ICMP头部.png
IP头部.png

ICMP应用 - Tracert

图片.png

ICMP的另外一个典型应用是Tracert。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文达到第二个节点后超时,该节点通用返回TTL超时消息,一次类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并更具时间戳信息计算往返时间。Tracert是检测网络丢包以及时延的有效手段,同事可以帮助管理员发现网络中的路由环路。
Tracert常用的配置参数说明如下:

-a source-ip-address 指定的tracert报文的原地址
-f first-ttl指定初始TTL。缺省值是1
-m max-ttl指定最大TTL。缺省值是30
-name 使能显示每一跳的主机名
-p port指定目的主机的UDP端口号
图片.png

Ping使用到的是哪两类ICMP消息?
Ping利用ICMP Echo请求消息(Type值为8)来发起检测目的可达性。目的端收到ICMP Echo请求消息后,根据IP报文头中的源地址向源端发送ICMP Echo回复消息(Type值为0)

当网络设备收到TTL值为-0的IP报文时,会如何操作?
如果IP数据报在达到目的之前TTL值已经降到了0,则收到IP数据报的网络设备会丢弃该数据报,并向源端发送ICMP消息通知源端TTL超时。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,475评论 0 6
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,053评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 前言 这一篇文章主要围绕了IP协议,ICMP协议和UDP协议展开,希望可以在这里大概做一个总结,将《TCP/IP协...
    Noskthing阅读 3,084评论 5 57
  • Android 滑动悬浮置顶效果的新实现 (有完整的xml代码) Material Design之Coordin...
    欢乐的乐阅读 5,269评论 1 5