为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是因特网的标准协议。但ICMP不是高层协议,而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

  ICMP报文分为了两类类:ICMP差错报告报文,ICMP询问报文,通知类。ICMP报文包括8个字节的报头和长度可变的数据部分。对于不同的报文类型,报头的格式一般是不相同的,但是前3个字段(4个字节)对所有的ICMP报文都是相同的。

ICMP差错报文种类:

  • 终点不可达:当路由器或主机不能交付数据报时就像源点发送终点不可达报文。
  • 源点抑制:源点抑制提供了拥塞控制,当路由器或者主机因拥塞丢弃数据报时,每个被丢弃的数据报都要向源点发送源点抑制报文;源点抑制作用有:1:告诉源点数据报被丢弃2:要求源点放慢发包速度.
  • 超时:有两种情况:生存时间(实际是跳数)递减为0,数据报被丢弃,向源点发送ICMP超时报文,这种报文只有可能是路由器发送。当目的主机收到一个分片时,就会启动一个分片计时器,如果计时器内分片没完全到达,则发送超时报文并丢弃已经收到的所有分片
  • 参数问题:数据报首部出现错误或者首部缺少一些选项发送此报文,主机和路由器都可能发送此报文。
  • 改变路由(重定向):路由器要经常更新自己的路由表,网络上主机的数量远远大于路由器的数量,如果主机也动态更新,将产生无法忍受的通信量,所以主机使用静态路由选择,一般情况下,开始时主机只知道默认路由地址,IP数据报将被发送到默认路由器,但也许此数据报应该被发到另外的路由器,默认路由器知道这种情况后,转发此数据报,并向源点发送改变路由ICMP, 让主机刷新自己的路由表,主机的路由表通过这种方式进行更新。

ICMP询问报文种类:

  • 回送请求和回答:一般用于源主机或源路由器判断目的主机或目的路由器能否与其通信,主机和路由器都能发送此报文,此报文包括了回送请求报文和回送回答报文,ping命令便是此报文。
  • 时间戳请求和回答:括时间戳请求报文和时间戳回答报文,它能够确定IP数据报在两台机器的往返时间,即使两个路由器本地时间不同步,但他们的往返时间仍然是精确的。

网际报文控制协议ICMP的更多相关文章

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

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

  2. 国际控制报文协议ICMP

    国际控制报文协议ICMP ICMP简介 ICMP 用于主机或路由器报告差错情况和提供有关异常情况的报告(检测网络错误). ICMP 不是高层协议,而是 IP 层的协议. ICMP 报文的格式 ICMP ...

  3. 【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP

    第24章     RL-TCPnet之网络控制报文协议ICMP 本章节为大家讲解ICMP(Internet Control Message Protocol,网络控制报文协议),通过前面章节对TCP和 ...

  4. TCP/IP的网际层协议——ICMP

    ICMP经常被认为是IP层的一个组成部分.它携带于IP数据包中,ICMP封装在IP数据包内部: IP首部 ICMP数据包 下面是一份差错报文的例子: 最右边的+或者-代表该报文是查询报文还是错误报文. ...

  5. TCP/IP详解学习笔记(9)-- 广播,多播,IGMP:网际组管理协议

    1.概述      IP有三种地址:单播地址, 广播地址,多播地址.      广播和多播仅应用于UDP.      每个以太网帧包含源主机和目的主机的以太网地址.通常每个以太网帧发往单个目的主机,目 ...

  6. 广播,多播,IGMP:网际组管理协议

    广播,多播,IGMP:网际组管理协议 1.概述      IP有三种地址:单播地址, 广播地址,多播地址.      广播和多播仅应用于UDP.      每个以太网帧包含源主机和目的主机的以太网地址 ...

  7. LACP链路聚合控制协议

    LACP链路聚合控制协议 来源: https://www.cnblogs.com/taosim/articles/4378691.html http://storage.chinabyte.com/6 ...

  8. http报文和协议首部

    http报文和协议首部 http报文 3>报文格式 request 报文 <method> <request-URL> <version> <heade ...

  9. 运输层3——传输控制协议TCP概述

    目录 1. TCP最主要的特点 2. TCP的连接 3. socket在不同场景中的含义 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户 ...

随机推荐

  1. AtCoder Beginner Contest 055题解

    A.当a=1就把a改成14,b=1就把b改成14,然后比较a,b大小即可. #include <iostream> #include <algorithm> #include ...

  2. java中的==、equals()、hashCode()源码分析

    转载自:http://www.cnblogs.com/xudong-bupt/p/3960177.html 在Java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际 ...

  3. 关于WdatePicker.js的结束时间大于开始时间

    简单笔记 : WdatePicker.js 要使结束时间大于开始时间只要在线束时间的 minDate:'#F{$dp.$D(\'stimeParam\')}' 即可:不多说 详细代码如下: <t ...

  4. Activity间传递数据

     1.从当前的Activity传递数据到下一个Activity: (1)发送方(当前的Activity): Bundle bundle = new Bundle(); bundle.putString ...

  5. SpringMVC 自定义全局日期转换器

    第一步: 编写自定义转换器的类 /* * 自定义日期转换器 */ public class CustomDateConverter implements Converter<String, Da ...

  6. JavaWeb总结(八)—EL表达式

    一.EL表达式简介 EL全名Expression Language.主要有以下作用. 1.获取数据 EL表达式主要用于替换JSP页面的脚本表达式,以及各种类型的Web域中检索Java对象.获取数据.( ...

  7. 基于Spring开发——自定义标签及其解析

    1. XML Schema 1.1 最简单的标签 一个最简单的标签,形式如: <bf:head-routing key="1" value="1" to= ...

  8. 利用sub lr,lr,#4:程序是如何进行返回的?

    1: ARM采用的是3级流水线 ARM的流水线结构为:   取指 -----> 译码 ------> 执行 ARM代码:                  PC           PC- ...

  9. 第五章 HQL实用技术

    第五章   HQL实用技术5.1  使用HQL查询语句(面向对象查询语句)    5.1.1 编写HQL语句        5.1.1.1 from子句                    例:fr ...

  10. socket.io的编程实现

    socket.io实例 一.环境要求 客户端需要引用socket.io.js文件 服务端需要按照node环境,以及npm install socket.io用来安装服务端的socket.io 二.客户 ...