简介

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. IOC容器--1.12. 基于 Java 的容器配置

    用Java的方式配置Spring ,不使用Spring的XML配置,全权交给Java来做 JavaConfig是Spring的一个子项目,在Sring 4  之后成为核心功能 这种纯Java的配置方式 ...

  2. idea打开service窗口

  3. gol处理命令行参数 flag

    os.Args获取命令行参数 os.Args是一个srting的切片,用来存储所有的命令行参数 package main import ( "fmt" "os" ...

  4. numpy学习Ⅱ

    今天有空再把numpy看一下,补充点不会的,再去看matplotlib 回顾之前笔记,发现之前的numpy学习Ⅰ中关于numpy的行.列.维可能表述有点不清晰,这里再叙述一下 import numpy ...

  5. 从NSSRound#1学到了什么

    sql_by_sql 二次注入: 更改密码的功能形如: update user set password='%s' where username='%s'; 的语句就可以存在二次注入,即假设有个adm ...

  6. 性能测试:tcpcopy

    简介 TCPCopy是一种请求复制(所有基于tcp的packets)工具,可以把在线流量导入到测试系统中去. 曾经应用于网易的广告投放系统,urs系统,nginx hmux协议等系统,避免了上线带来的 ...

  7. 初始 Django

    Python 知识点:函数,面向对象 前端开发:HTML,CSS,JavaScript,jQuery,BootStrap MySQL 数据库 Python 的 WEB 框架 Flask:轻量化,第三方 ...

  8. leetcode 524. Longest Word in Dictionary through Deleting 通过删除字母匹配到字典里最长单词

    一.题目大意 https://leetcode.cn/problems/longest-word-in-dictionary-through-deleting 给你一个字符串 s 和一个字符串数组 d ...

  9. 830. Positions of Large Groups - LeetCode

    Question 830. Positions of Large Groups Solution 题目大意: 字符串按连续相同字符分组,超过3个就返回首字符和尾字符 思路 : 举例abcdddeeee ...

  10. 两个月吃透阿里P9推荐260页SpringBoot2企业应用实战pdf入职定P6+

    前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...