互联网控制报文协议(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. spring boot 项目连接数据库查询数据过程

    spring boot 项目搭建 pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...

  2. Android性能优化----卡顿优化

    前言 无论是启动,内存,布局等等这些优化,最终的目的就是为了应用不卡顿.应用的体验性好坏,最直观的表现就是应用的流畅程度,用户不知道什么启动优化,内存不足,等等,应用卡顿,那么这个应用就不行,被卸载的 ...

  3. proj0的具体实现 #CS61B-sp18

    https://github.com/Centurybbx/sp18-century/tree/master/proj0 proj0的具体实现在上面的Github中. 在proj0中我明显感受到国外大 ...

  4. linux下快速列出局域网中所有主机名(计算机名)的脚本

    最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本 脚本会扫描局域网arp表中所有ip,并尝试解析 ...

  5. Day08_商品规格管理

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...

  6. Django学习路37_request属性

      打印元信息,基本上都会打印出来 类字典结构的 key 键 允许重复   get 请求可以传参,但是长度有限制 最大不能超过 2K post 文件上传使用 get 参数 默认放在网址中 post 在 ...

  7. 【高并发】亿级流量场景下如何为HTTP接口限流?看完我懂了!!

    写在前面 在互联网应用中,高并发系统会面临一个重大的挑战,那就是大量流高并发访问,比如:天猫的双十一.京东618.秒杀.抢购促销等,这些都是典型的大流量高并发场景.关于秒杀,小伙伴们可以参见我的另一篇 ...

  8. PDO::quote

    PDO::quote — 为SQL语句中的字符串添加引号.(PHP 5 >= 5.1.0, PECL pdo >= 0.2.1) 说明 语法 public string PDO::quot ...

  9. Spring学习总结(8)-接口多个实现类的动态调用

    需求描述:当一个接口有2个以上的实现类时,调用方需要根据参数选择只其中一个实现类 Spring版本:5.1.8.RELEASE 1. 接口和实现类 /** * 接口 */ public interfa ...

  10. .net+uniapp 前后端数据交互相关问题记录

    uniapp 提交form表单 @submit EventHandle 携带 form 中的数据触发 submit 事件,event.detail = {value : {'name': 'value ...