互联网控制报文协议(ICMP,Internet Control Message Protocol),被主机和路由器用来彼此沟通网络层的信息
ICMP报文是承载在IP分组中的,即lCMP报文是作为IP有效载荷承载的;当一台主机收到一个指明上层协议为ICMP的IP数据报时,它分解出该数据报的内容给ICMP。
如图,ICMP报文有一个4bit类型字段、一个4bit编码字段、一个8bit检验和字段,并且包含引起该ICMP报文首次生成的IP数据报的首部+前8字节内容(以便发送方能确定引发该差错的数据报)
差错报告报文:
  • 目的不可达(类型3)
  • 源抑制
这种报文在实践中很少使用,其最初目的是执行网络层拥塞控制。
路由器发现缓存已满,到达的分组被丢弃,路由器向源主机发送源一个ICMP源抑制报文,以强制该主机减小其发送速率。
实际未采用该拥塞控制方式。TCP有自已在传输层操作的拥塞控制机制,不需要利用网络层中的反馈信息 。
  • 超时/超期
超过IP数据报生存周期,或者分段的IP数据报没有在规定时间内重组
  • 参数问题
  • 重定向
告诉发送主机,到达目的IPv4地址有更好的路由
回声探询报文:
  • 回显请求和回答
ping程序发送一个类型8编码0的回显(echo)请求到指定主机,目的主机发回一个类型0编码0的ICMP回显回答。
大多数TCP/IP实现直接在操作系统中支持ping服务器,即该ping服务器不是一个进程。
  • 时间戳请求和应答
 
几种不发送ICMP差错报告报文的特殊情况:
(1)对ICMP差错报告报文不再发送ICMP差错报告报文
(2)除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
(3)对所有多播IP数据报均不发送ICMP差错报告报文
(3)对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送ICMP 差错报告报文
 
Trareroute程序允许我们跟踪从一台主机到世界上任意一台其他主机之间的路由,是用ICMP报文来实现的:
(1)源主机向目的主机发送一系列UDP数据报,目的端口号为不可能使用的端口号
第1组IP数据报TTL=1,第2组IP数据报TTL=2……
(2)当第n组数据报(TTL=n)到达第n个路由器时,路由器丢弃数据报,向源主机发送TTL过期ICMP报文(type=11,code=0),ICMP报文携带路由器名称和IP地址信息
(3)当ICMP报文返回到源主机时,记录RTT
(4)UDP数据报最终到达目的主机,目的主机返回目的端口不可达ICMP报文(type=3,code=3)
(5)源主机停止发送UDP数据报

计算机网络-网络层(6)ICMP协议的更多相关文章

  1. 计算机网络之tcp/ip协议族

    TCP/IP协议族是一个四层协议系统: 1. 数据链路层   1.1 作用  (1) 实现网卡接口的网络驱动,以处理数据在以太网线等物理媒介上的传输  (2) 网络驱动程序隐藏了不同物理网络的不同电气 ...

  2. <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方

    在TCP/IP协议族中,ICMP协议是一个介于网络层和传输层中间的一个协议,许多材料都会认为ICMP是网络层的一个部分,但是ICMP协议的报头是被包裹在IP协议之中的,而UDP协议又可以被ICMP协议 ...

  3. 地址解析协议ARP,网络层协议IP、ICMP协议

    分析所用软件下载:Wireshark-win32-1.10.2.exe 阅读导览 1. 分析并且应用ARP协议 2.分析IP协议 3.分析ICMP协议 1.分析arp报文的格式与内容 (1)ping ...

  4. 计算机网络——网络层

    一.虚拟线路与数据报线路 1. 在网络层提供有连接的计算机网络为虚电路网络: 如因特网:它需要VC(虚拟电路)号,用于建立虚拟电路的报文称为信令报文,相关的协议称为信令协议: 无连接的网络为数据报网络 ...

  5. 计网-ping服务命令与ICMP协议

    目录 一.IP协议的助手 —— ICMP 协议(网络层协议) 二.ping —— 查询报文类型的使用 三.traceroute —— 差错报文类型的使用 参考:从Wireshark抓包软件角度理解PI ...

  6. IP协议的助手 —— ICMP 协议

    IP协议的助手 —— ICMP 协议 IP协议的助手 —— ICMP 协议 ping 是基于 ICMP 协议工作的,所以要明白 ping 的工作,首先我们先来熟悉 ICMP 协议. ICMP 是什么? ...

  7. 简单了解ICMP协议

    ping命令是什么协议? 维基百科: ping是一种电脑网络工具,用来测试数据包能否通过IP协议到达特定主机.ping的运作原理是向目标主机传出一个ICMP echo@要求数据包,并等待接受echo回 ...

  8. PING的原理以及ICMP协议

    主要内容: 1.ping的原理以及工作过程 2.ICMP协议 3.ICMP的应用:ping,traceroute 1.ping的原理以及工作过程  ping的原理  ping 程序是用来探测主机到主机 ...

  9. ICMP协议

    1. ICMP简介: ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制报文协议,协议号为1,网络层协议. 它是TCP/IP协议族的一个子协议,用于在IP主机 ...

  10. ICMP协议Ping命令的应用

    ICMP的全称是 Internet Control Message Protocol ,它是TCP/IP协议族的一个子协议,属于网络层协议,用于在IP主机.路由器之间传递控制消息.从技术角度来讲,就是 ...

随机推荐

  1. LRU cache缓存简单实现

    LRU cache LRU(最近最少使用)是一种常用的缓存淘汰机制.当缓存大小容量到达最大分配容量的时候,就会将缓存中最近访问最少的对象删除掉,以腾出空间给新来的数据. 实现 (1)单线程简单版本 ( ...

  2. C#中使用ajax请求

    ajax简介 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式.快速动态网页应用的网页开发技术,无需重新加载 ...

  3. 做完这套面试题,你才敢说懂Excel

    下面的题目来自一份商品专员的面试题,其中有涉及到条件格式.自定义排序.数据验证制作下拉菜单.查找引用类函数.文本提取函数等等技能. 满满的干货技能可不是商品专员“专属”,如果你能熟练掌握,在平日工作中 ...

  4. Django开发之Ajax POST提交403报错

    问题现象 Django开发时,前端post提交数据时,由于csrf机制,如果不做处理会报403报错 问题解决 通过在data字段中添加 csrfmiddlewaretoken: '{{ csrf_to ...

  5. 学习JavaScript数据结构与算法 2/15

    第一章 JavaScript简介 js不同于C/C++,C#,JAVA,不是强类型语言. 通常,代码质量可以用全局变量和函数的数量来考量(数量越多越糟).因此,尽可能避免使用全局变量. JS数据类型 ...

  6. Python break语句

    Python break语句:当运行到 break 语句时,终止包含 break 的循环语句. 注:无论判断条件是否达到 False 或 序列是否遍历完都会停止执行循环语句和该 break 下的所有语 ...

  7. timeit_list操作测试

    ''' timeit库Timer函数 ''' from timeit import Timer def test1(): l = list(range(1000)) def test2(): l = ...

  8. list 和 [ ] 的功能不相同

    对于一个对象: list(对象) 可以进行强制转换 [对象] 不能够进行强制转换,只是在外围加上 [ ] 列表推导式中相同   2020-05-06

  9. Selenium多窗口切换代码

    # #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2020/7/31 16:05 # @Author : Gengwu # @FileNam ...

  10. Hadoop生态系统入门进阶之一

    组成系统介绍 HDFS:Hadoop 生态圈的基本组成部分是 Hadoop 分布式文件系统(HDFS).HDFS 是一种分布式文件系统,数据被保存在计算机集群上,HDFS 为 HBase 等工具提供了 ...