1.概述

     ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
     ICMP报文是在IP数据报内部被传输的。
     ICMP报文的格式如图所示。
     
  • 类型字段:可以有15个不同的值,来描述特定类型的ICMP报文。
  • 代码:进一步描述类型的不同条件
  • 检验和:ICMP的检验和是必需的。
2.ICMP报文的类型
     各种类型的ICMP报文如图所示。
不同类型由报文中的类型字段和代码字段共同决定。图中最后两列表明ICMP报文是一份查询报文还是一份差错报文。
以下情况不会导致产生ICMP差错报文:
  • ICMP差错报文(避免无休止的循环下去,但是ICMP查询报文有可能产生ICMP差错报文)
  • 目的地址是广播地址或者多博地址的IP数据报
  • 作为链路层广播的数据报
  • 不是IP分片的第一片。
  • 源地址不是单个主机的数据报。这就是说,源地址不能为零地址,环回地址,广播地址或者多博地址。

3.ICMP地址掩码请求与应答

     ICMP地址掩码请求与应答用于无盘系统引导过程中获取自己的子网掩码。系统广播它 ICMP请求报文,或者使用BOOTP协议。ICMP地址掩码请求和应答报文如图所示。
     
     ICMP报文中的标识符和序列号字段由发送端任意选择指定。
4.ICMP时间戳请求与应答
     ICMP时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计算的毫秒数,协调的同一时间(UTC)。ICMP时间戳请求和应答报文如图所示。
请求端填写发起时间戳,然后发送报文。应答系统收到请求报文时填写接收时间戳。在发送应答时填写发送时间戳。
5.ICMP端口不可达差错
     ICMP端口不可达差错报文,是收到一个UDP数据报而目的端口与某个正在使用的进程不相符,则返回一个ICMP不可达报文。
     ICMP报文是主机之间交换的,而不用目的端口号。
     ICMP的一个规则是:ICMP差错报文必须包括生成该差错报文的数据报IP首部,还必须至少包括跟在该IP首部后面的前8个字节。如图所示。
     
6.ICMP主机与网络不可达差错
     当路由器收到一份IP数据报但又不能转发时候,就要发送一份ICMP“主机不可达”差错报文。
7.ICMP重定向差错
     当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。
     重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。
     ICMP重定向报文的格式如图所示。
     ICMP重定向报文的接收者必须查看三个IP地址
  • 导致重定向的IP地址(即ICMP重定向报文的数据位于IP数据报的首部)
  • 发送重定向报文的路由器的IP地址(包含重定向信息的IP数据报中的源地址)
  • 应该采用的路由器IP地址。

ICMP重定向不同代码值含义

     

ICMP重定向报文只能有路由器产生。

8.ICMP路由器发现报文
     主机在引导以后要广播或多播传送一份路由请求报文。一台或更多的路由器响应一份路由器通告报文。
     ICMP路由器请求报文的格式如图所示:
     ICMP路由器通告报文格式:
     
 
主要用来更新路由表。

TCP/IP详解学习笔记(5)-- ICMP:internet 控制报文协议的更多相关文章

  1. TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...

  2. TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】

    转自:http://blog.csdn.net/goodboy1881/article/details/670761 1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议(是一种尽力传送的协 ...

  3. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  4. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  5. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  6. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  7. TCP/IP详解学习笔记- 概述

    TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构      网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统.      如图所 ...

  8. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

  9. TCP/IP详解学习笔记(1)-- 概述

    1.TCP/IP的分层结构      网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统.      如图所示.       1)链路层(数据链路层 ...

  10. TCP/IP详解学习笔记(3)-- IP:网际协议

    1.概述      IP是TCP/IP协议族中最为核心的协议.所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输.      IP提供不可靠,无连接的数据报传送服务. 不可靠:它不能保 ...

随机推荐

  1. MyEclipse 8.5配置Tomcat 7.0

    MyEclipse 8.5配置Tomcat 7.0 在窗口(Windows)->首选项(Prefrences)->MyEclipse->Servers->Tomcat 6.x下 ...

  2. 43.Android之ListView中BaseAdapter学习

    实际开发中个人觉得用的比较多是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gallery.Spinner ...

  3. 【poj1274】 The Perfect Stall

    http://poj.org/problem?id=1274 (题目链接) 题意 懒得写了 Solution 二分图匹配裸题.注意清空数组. 代码 // poj3020 #include<alg ...

  4. Mac OS X终端下apache操作

    重启apache:sudo /usr/sbin/apachectl restart 关闭apache:sudo /usr/sbin/apachectl stop 开启apache:sudo /usr/ ...

  5. 破解受保护的excel中的密码

    今天朋友给我发了一张excel表,她说不能删除数据,让我帮忙弄弄,我当时就觉得这张表应该是受到保护了,就在视图选项中准备撤销保护,但是却需要密码,后来在网上查找了 下资料,发现有个方法可以将密码破解出 ...

  6. javascript设计模式-装饰模式

    装饰模式:在不改变原类(对象)和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象.在设计原则中,有一条,多用组合,少用继承,装饰模式正是这一原则的体现. UML ...

  7. POJ2677 Tour(DP+双调欧几里得旅行商问题)

    Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3929   Accepted: 1761 Description ...

  8. C# 抓取网页Html源码 (网络爬虫)

    http://www.cnblogs.com/wxxian001/archive/2011/09/07/2169519.html 刚刚完成一个简单的网络爬虫,因为在做的时候在网上像无头苍蝇一样找资料. ...

  9. iBatisnet系列(二) 配置运行环境和日志处理

    http://hjf1223.cnblogs.com/archive/2006/04/24/383119.aspx 刚爬完鼓山回来,想到这篇刚刚开始,不敢怠慢,洗完澡休息一下就到电脑旁边来了.现在我开 ...

  10. Docker系列之(三):Docker微容器Alpine Linux

    1. 前言 使用Docker创建容器时,基础镜像通常选择Ubuntu或Centos,不管哪个镜像的大小都在100MB以上. Alpine Linux是一个面向安全的轻型的Linux发行版. Alpin ...