简介

ICMP(Internet 控制报文协议,Internet Control Message Protocol , RFC 792)。主要用于在IP主机与路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。可以用于手机网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。

ICMP报文

ICMP报文是基于IP包的(也就是基于网络层)

不管是 ICMPv4 还是 ICMPv6 都采用如下格式:

分类

ICMP报文可以分为两大类:

  • 差错报文(error message),有关IP数据报传递的ICMP报文
  • 查询/信息类报文(query / informational message)

ICMPv4 报文

在IPv4中,协议(Protocol)字段值为1表示该报文携带了ICMPv4

ICMPv4根据类型字段的不同而代表不同的含义:

E(差错类报文)/ I (信息类报文),*表示常见报文,+表示[RFC4884] 扩展对象

ICMPv6 报文

ICMPv6 负责的不仅仅只是差错和信息类报文,也负责了大量IPV6路由器和主机的配置

在ICMPv6 类型中,差错报文的报文类型从0到127,信息类的报文类型从128到255.

应用

ICMP的作用是根据类型和代码决定的,目前ICMP中许多类型都被其他协议替代,目前用的最的的类型是回显应答(ping 应答),回显(ping 请求),超时(TTL)。如ping 程序中。

ping

Ping程序目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答

源地址ping程序发出的回显与回显应答



根据设备的不同ttl的值也会不一样

目的地址发出的不可达

traceroute

路由跟踪,主要用于查看源到目的的路径信息,从而检查中间节点已经整个网络是否可用。当网络出现故障时,用该命令可以定位错误。

运行如下命令,到出口的路径是否正常(192.168.100.5为出口地址)

➜ ~ traceroute 192.168.100.5

traceroute to 192.168.100.5 (192.168.100.5), 64 hops max, 52 byte packets

 1  moshujia.cn (192.168.124.1)  72.598 ms  23.765 ms  4.736 ms

 2  192.168.24.254 (192.168.24.254)  8.905 ms  5.795 ms  6.632 ms

 3  192.168.100.5 (192.168.100.5)  9.466 ms  16.580 ms  14.073 ms

traceroute 程序运行结果如下

红色为UDP
黑色为ICMP

从图中可以看出,中间节点都向源地址发送一个TTL超时的通知来表示传输期间生存时间超时。

当到达目的地址,目的主机会发送一个端口不可达的通知。并且ICMP发送和接受的端口都为33609(这是随机的,但是都超过30000)。UDP发送和接受的端口相同,但是会随着发送/接受次数的增加而增加

具体如下图所示

上图简化了192.168.24.254这个中间节点。

参考

TCP/IP 详解 卷一

ICMP 介绍的更多相关文章

  1. icmp介绍以及arp攻击

    目录 一.ip数据包格式 二.ICMP协议介绍 三.ARP协议介绍 四.ARP攻击原理 一.ip数据包格式 网络层的功能: 定义了基于ip协议的逻辑地址 连接不同的媒介类型 选择是数据通过网络的最佳途 ...

  2. ICMP路由重定向攻击

    ICMP介绍 ICMP(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息.控 ...

  3. 趣学CCNA 路由与交换

    第1章 OSI和TCP/IP 11.1 协议与协议分层 31.2 OSI参考模型 61.2.1 物理层 91.2.2 数据链路层 91.2.3 网络层 101.2.4 传输层 101.2.5 会话层 ...

  4. ICMP、ARP协议介绍和ping命令

    交换机工作原理和常用的简单命令    一.ICMP协议      1)ICMP协议的封装    二.ARP协议      1)什么是ARP协议      2)ARP相关命令    三.Ping命令的使 ...

  5. Linux基础介绍【第二篇】

    远程连接Linux的原理 SHH远程连接介绍 当前,在几乎所有的互联网企业环境中,最常用的Linux提供远程连接服务的工具就是SSH软件,SSH分为SSH客户端和SSH服务端两部分.其中,SSH服务端 ...

  6. python select网络编程详细介绍

    刚看了反应堆模式的原理,特意复习了socket编程,本文主要介绍python的基本socket使用和select使用,主要用于了解socket通信过程 一.socket模块 socket - Low- ...

  7. [翻译]Telnet简单介绍及在windows 7中开启Telnet客户端

    文章翻译自 http://social.technet.microsoft.com/wiki/contents/articles/910.windows-7-enabling-telnet-clien ...

  8. iptables中文介绍 、基本使用操作命令(转)

    iptables 命令介绍   原文链接http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html iptables防火墙可 ...

  9. RSVP协议的基本概念介绍

    2010-06-12 14:12 佚名 互联网 字号:T | T 对于RSVP协议的简单介绍和图解.通过文章,我们将对这个含义的基本概念和结构,以及工作方式等方面的知识有所了解.希望对大家有所帮助. ...

随机推荐

  1. 『现学现忘』Git基础 — 20、Git中忽略文件补充

    目录 1.忽略文件常遇到的问题 2.忽略文件配置优先级 3.忽略已跟踪文件的改动(本机使用) 4.autocrlf和safecrlf参数说明 (1)提出问题 (2)autocrlf说明 (3)safe ...

  2. Oracle19c单实例数据库配置OGG单用户数据同步测试

    目录 19c单实例配置GoldenGate 并进行用户数据同步测试 一.数据库操作 1.开启数据库附加日志 2.开启数据库归档模式 3.开启goldengate同步 4.创建goldengate管理用 ...

  3. 数据管理技术发展,数据库应用发展史,数据库分类,MySQL

    计算机数据管理技术发展 1. 自由管理阶段 用户以文件形式将数据组织起来,并附属在各自的应用程序下.    1.数据不保存     当时计算机主要用于科学计算,一般不需要将数据长期保存,只是计算某一课 ...

  4. IX交换中心网络架构分析

    拓扑如上 IX功能介绍 IX交换中心,客户接入交换中心只收取端口费用,在交换中心网内的流量不收取任何费用,一个交换中心是否值得接入主要看该ix所接入的用户 假如客户A是做视频网站,用的视频源是IQY的 ...

  5. 难对齐、难保障、难管理?一文了解字节跳动如何解决数据SLA治理难题

    基于字节跳动分布式治理的理念,数据平台数据治理团队自研了SLA保障平台,目前已在字节内部得到广泛使用,并支持了绝大部分数据团队的SLA治理需求,每天保障的SLA链路数量过千,解决了数据SLA难对齐.难 ...

  6. 循环中的scanf处理了换行符怎么破

    这种情况一般在循环中要求输入一个字符时容易出现问题. 问题在于缓冲区,缓冲区中存留了换行符,所以... 运行下面代码: int main(void){ char a=0; while(1){ scan ...

  7. Python 中的内存管理

    Python 中一切皆对象,这些对象的内存都是在运行时动态地在堆中进行分配的,就连 Python 虚拟机使用的栈也是在堆上模拟的.既然一切皆对象,那么在 Python 程序运行过程中对象的创建和释放就 ...

  8. 附001.Python多版本环境管理

    一 环境背景 由于Python的版本过多,且不同版本之间差异性较大.同时又因系统底层需要调用当前版本Python,所以不能随意变更当前系统Python版本.因此,在多版本共存的情况下,Python多环 ...

  9. Linux namespace技术应用实践--调用宿主机命令(tcpdump/ip/ps/top)检查docker容器网络、进程状态

    背景 最近偶然听了几堂极客时间的云原生免费公开课程,首次接触到了Linux namespace技术,并了解到这正是现在风头正劲的容器技术基石,引起了自己探究一二的兴趣,结合课程+网络搜索+实践操作,也 ...

  10. docker服务部署、迁移与备份、dockerfile、私有仓库

    今日内容概要 服务部署 迁移与备份 dockerfile 私有仓库 内容详细 1.服务部署 # 装 mysql redis --->源码编译安装-->启 动 # 有了docker后,容器操 ...