互联网控制报文协议(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. Centos 7下编译安装PHP7.2(与Nginx搭配的安装方式)

    一.下载源码包 百度云网盘下载地址:https://pan.baidu.com/s/1li4oD3qjvFyIaEZQt2NVRg 提取码:4yde 二.安装php依赖组件 yum -y instal ...

  2. Python日历模块

    Python日历模块 calendar: 0:星期一是第一天 6:星期日是最后一天 注:形参 w,I,c 可以不写,正常使用,使用默认形参即可 calendar(year,w=2,I=1,c=6): ...

  3. metaclass 拦截类的创建,并返回

    def upper_attr(future_class_name, future_class_parents, future_class_attr): #遍历属性字典,把不是__开头的属性名字变为大写 ...

  4. PHP sscanf() 函数

    实例 Parse a string: <?php高佣联盟 www.cgewang.com$str = "age:30 weight:60kg";sscanf($str,&qu ...

  5. PHP similar_text() 函数

    实例 计算两个字符串的相似度并返回匹配字符的数目: <?php高佣联盟 www.cgewang.comecho similar_text("Hello World",&quo ...

  6. TF签名是什么?比企业签名好在哪里?

      现在苹果企业签名的服务大致分为三类,苹果企业签名.超级签名和TF签名,而TF签名TF签名又称 TestFlight 签名,是目前最稳定的签名方式. ​   「优势」   关键词:零风险;限制少;安 ...

  7. 小谢第50问:vuex的五个属性-使用-介绍

    一.Vuex 是什么? 官网:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 关键词:状态 ...

  8. DotNet Core

    安装 dotnet add package Pomelo.EntityFrameworkCore.MySql 使用 MySQL 作为后端     在继承 DbContext 类中重写 OnConfig ...

  9. Netty(二):如何处理io请求?

    文接上一篇.上篇讲到netty暴露一个端口出来,acceptor, handler, pipeline, eventloop 都已准备好.但是并没体现其如何处理接入新的网络请求,今天我们就一起来看看吧 ...

  10. 博客主题推荐——复杂&简单

    首先感谢原作者cjunn提供的主题autm,以下配置都基于此主题设定.很多小伙伴喜欢现在的样式,分享如下.只需简单几步即可. 如果你想使用本博客主题样式,并希望能得到远程推送更新,只需查看 快速部署. ...