互联网控制报文协议(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. python自带函数

    callable() #是否可以被执行,是否可以被调用 chr() #返回整数i对应的ASCII字符.与ord()作用相反.参数x:取值范围[0, 255]之间的正数. ord() #参数是一个asc ...

  2. Android上传图片的两种方式

    参考:https://www.jianshu.com/p/f47943880cea

  3. MySQL 容器修改配置文件后无法启动问题(终极解决办法)

    docker inspect 容器名称或容器 ID 例如:  docker inspect mysql cd /var/lib/docker/overlay2/1d7877d715b9c730103e ...

  4. 11-14序列化模块之json、pickle、shelve

    序列化的目的 1.以某种存储形式使自定义对象持久化: 2.将对象从一个地方传递到另一个地方. 3.使程序更具维护性. 序列化--转向一个字符串数据类型序列--及时字符串 何处用到: 数据存储 网络上传 ...

  5. recv & recvfrom

    #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd, void *buf, size_ ...

  6. luogu P5410 模板 扩展 KMP Z函数 模板

    LINK:P5410 模板 扩展 KMP Z 函数 画了10min学习了一下. 不算很难 思想就是利用前面的最长匹配来更新后面的东西. 复杂度是线性的 如果不要求线性可能直接上SA更舒服一点? 不管了 ...

  7. luogu P4726 【模板】多项式指数函数 多项式 exp 牛顿迭代 泰勒展开

    LINK:多项式 exp 做多项式的题 简直在嗑药. 前置只是 泰勒展开 这个东西用于 对于一个函数f(x) 我们不好得到 其在x处的取值. 所以另外设一个函数g(x) 来在x点处无限逼近f(x). ...

  8. Hadoop的序列化

    普通的序列化需要将类型的继承结构也序列化,但是hadoop只序列化对象本身,忽略继承关系,因为hadoop中传输的自定义类型一般都是简单的类型,这样可以减少传输的序列化数据,降低网络带宽的使用.

  9. 云计算&存储测试:FIO工具入门与实战

    一.关于FIO 1.1 简介 FIO是一个开源的I/O压力测试工具,主要是用来测试磁盘的IO性能,也可测试cpu,nic的IO性能.它可以支持13种不同的I/O引擎,包括:sync,mmap, lib ...

  10. Python3 网络爬虫:漫画下载,动态加载、反爬虫这都不叫事

    一.前言 作者:Jack Cui 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那 ...