ICMP 协议

在之前网络层的介绍中,我们知道 IP 提供一种无连接的、尽力而为的服务。这就意味着无法进行流量控制与差错控制。因此在 IP 数据报的传输过程中,出现各种的错误是在所难免的,为了通知源主机 IP 数据报传输过程中遇到的问题,因此设计了因特网控制报文协议(ICMP)。

虽然说 ICMP 协议将 IP 协议封装在内部,所以大多数人将 ICMP 视为传输层的协议,但实际上 ICMP 是 IP 协议的重要组成部分,所以将其放在网络层更为合适。

ICMP 的报文一般有两种,查询报文和查询报文

查询报文:例如我们在使用 ping 命令,子网掩码查询,时间戳查询等情况时,都会发送查询报文。

差错报文:而差错报文是在当对应的路由器或者终端设备收到查询报文后,产生了一系列问题。把出现的问题,回复给发起者的报文就是差错报文。

但考虑到整体网络资源的占用上,在如下情况下,是不会产生差错报文的:

  1. 差错报文不会产生差错报文 - 防止 ICMP 无限产生和传送差错报文
  2. 目的地址是广播或多播的 IP 数据包
  3. 链路层广播的数据包
  4. 不是 IP 分片的第一片 - IP 是尽力而为,自然不需要可靠性
  5. 源地址不是某个主机的数据包

ICMP 类型

由于 ICMP 本身就是为了弥补 IP 协议不可靠的特性,起到排错目的,所以它的 Header 并不复杂。

正如图中所示的,对于 ICMP Header 来说,比较重要的就是 Type (8 bit)和 Code (8 bit) 字段,用来表示各种错误的情况。

其中完整的介绍可以参考这篇 wiki,下面就介绍上常用的部分。

Type code Description
0 0 Echo 回复报文,如 Ping 命令的回复报文。
3 0 网络不可达
3 1 主机不可达
3 3 协议不可达
3 4 端口不可达
3 6 网络不知道
3 7 主机不知道
8 0 Echo 请求报文,如 Ping 命令的请求报文。
13 0 时间戳请求报文

下面我们抓个包,来看一下。

Ping 命令测试网络连通性

这里在主机上 Ping 下百度,通过 Wireshark 抓到的数据包如下:

先看一下 Echo Request 包,对应 Type 为8,Code 为0:

Echo Reply 包 - Type 为 0,Code 为 0:

Traceroute 测试网络连通性

在 IP 协议中,为了防止出现环路而设置了 TTL 字段。该字段也在 traceroute 中起到了很大的作用,通过设置 TTL 的数值,来获取数据报的传递过程。

TTL:当 IP 数据包进行传送时,每经过一个路由器,TTL 指就会减一,当 TTL = 0 时,该 IP 数据报会被丢弃。

下面就来了解下 Traceroute 的通信过程,用到的拓扑如下:

当主机收到目的主机的 IP 后,会给目的主机发送一个 TTL = 1 的 UDP 数据包。

而经过第一个路由器后,TTL - 1 变成 0.这时路由器会把数据报丢弃,然后把丢弃的数据包的 IP 头部封装起来,回复主机一个差错报文。如下:

这个过程主机会发三次,也就是说会产生 3 个 TTL =1 的 UDP,如下

接着会在再次发送 3 个 TTL = 2 的 UDP 报文,如下

第二个路由器,会再次向主机发送一个差错报文,如下:

这里需要注意的:由于第二台路由器已经相当于是目的地,所以将数据包拆到传输层,但由于传输层上的端口标识了应用层的应用,而在该路由器上不在该应用,进而回复了端口不可达的报文。

由于图中只经过 2 个路由器,所以截止发送到 TTL = 2

并且我们可以从 TTL = 2 的回复差错报文看出,只有两个差错报文。其中有个差错报文出现了丢失,并且没有给主机回复差错报文丢失的情况

CCNA - Part7:网络层 - ICMP 应该是你最熟悉的协议了的更多相关文章

  1. CCNA 学习记录(三)通过仿真理解ARP协议

    拓扑图 配置 路由器R2: GigabitEthernet 0/0/0 IP Address: 192.168.1.1 Subnet Mask: 255.255.255.0 Serial 0/1/0 ...

  2. CCNA网络工程师学习进程(6)vlan相关协议的配置与路由器简单配置介绍

        前面已经介绍了大部分与vlan技术相关的交换机的协议的配置,更深层次的还有STP协议和以太网端口聚合技术,接着还会简单介绍一下路由器的基本应用.     (1)STP(Spanning-tre ...

  3. (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  4. 网络层 IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  5. 2016.7.9 计算机网络复习要点第四章之网际控制报文协议ICMP

    1.ICMP允许主机或路由器报告差错情况和提交有关异常情况的报告:为了更有效地转发IP数据报和提高交付成功的机会: 2.ICMP不是高层协议,因为ICMP报文是装在IP数据报中的,作为其中数据部分,所 ...

  6. TCP/IP入门(2) --网络层

    /** 本篇博客由 126(127不可用) 2^24 -2 B 2^14 -1 128.1 191.255 2^16 -2 C 2^21 -1 192.0.1 223.255.255 2^8 -2 D ...

  7. [HTTP] tcp/ip详解 链路层 网络层 传输层 应用层

    1.可以把七层协议简化成四层协议链路层 网络层 传输层 应用层 2.通过路由器连接的两个网络网络层ip提供的是一个逐跳协议,提供了一种不可靠的服务,中间有可能会丢传输层tcp在ip的基础上提供了可靠的 ...

  8. 计算机基础:计算机网络-chapter4 网络层

    网络层的使用:如 ping,tracert,原理是ICMP 一.什么叫网络,网络层做什么,通过什么实现,这章的内容, 什么叫网络,实现这些需要做什么 将全世界范围内数以百万计的网络都互连起来,并且能够 ...

  9. ICMP协议、DNS、ARP协议、ping、DHCP协议

    1.ICMP协议 1)ICMP协议,即:网络控制消息协议(Internet Control Message Protocol) 2)ICMP是网络层协议,因为ICMP报文是装在IP数据报中,作为它的数 ...

随机推荐

  1. Python数据处理常用工具(pandas)

    目录 数据清洗的常用工具--Pandas 数据清洗的常用工具 Pandas常用数据结构series和方法 Pandas常用数据结构dataframe和方法 常用方法 数据清洗的常用工具--Pandas ...

  2. 005.OpenShift访问控制-权限-角色

    一 Kubetcl namespace 1.1 namespace描述 Kubernetes namespace提供了将一组相关资源组合在一起的机制.在Red Hat OpenShift容器平台中,p ...

  3. Spring Cloud面试题万字解析(2020面试必备)

    1.什么是 Spring Cloud? Spring cloud 流应用程序启动器是 于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Tas ...

  4. 尚硅谷ajax视频教程2

    7.7. 尚硅谷_佟刚_Ajax_典型应用_验证用户名是否可用 整个项目的目录路径如下所示 我们首先新建立一个web工程,在webroot下面新建立一个script的文件夹,导入jquer文件 接下来 ...

  5. 暑假集训Day2 互不侵犯(状压dp)

    这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...

  6. DOM-BOM-EVENT(6)

    6.BOM 6.1.什么是BOM? BOM(Browse Object Model),浏览器对象模型,没有相关标准,是约定俗成的东西,定义了一些操作浏览器的方法和属性,大部分方法都是通过window对 ...

  7. SpringBoot中VO,DTO,DO,PO的概念、区别和用处

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhuguang10/article/de ...

  8. POJ 3463 Sightseeing 【最短路与次短路】

    题目 Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the ...

  9. 不就是语法和长难句吗—笔记总结Day1

    CONTENTS 第一课 简单句 第二课 并列句 第三课 名词(短语)和名词性从句 第四课 定语和定语从句 第五课 状语和状语从句 第六课 英语的特殊结构 第一课 奋斗的开始——简单句 一.什么是英语 ...

  10. Nginx 介绍和安装(centos7)

    本文是作者原创,版权归作者所有.若要转载,请注明出处 什么是 nginx ? Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高 ...