ICMP协议

ICMP常常被觉得是IP层的一个组成部分,它是网络层的一个协议。它传递差错报文以及其它须要注意的信息。ICMP报文通常被IP层或更高层(TCP、UDP等)使用,它是在IP数据报内传输的。

ICMP报文大致分为两类:查询报文和差错报文。

先来看差错报文。当传送IP数据报错误发生时(比方主机不可达、网络不可达等),ICMP协议将会发送一个ICMP差错报文给源主机,好让主机做出对应的处理,也因此IP层以上的一些协议有可能做到可靠传输。

书中给出了ICMP差错报文中的一些组合(类型和代码的组合)描写叙述:如网络不可达、网络不可达、协议不可达、port不可达等。

这里说下port不可达的意思:UDP的规则之中的一个是,假设收到一份UDP数据报而目的port与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文,将报文中的类型和代码的组合设定为port不可达。Traceroute程序就是利用port不可达来产生ICMP差错报文的。

另外,在大多数情况下,传送IP数据报错误发生,会产生一个ICMP错误报文。但以下各种情况都不会导致产生ICMP差错报文:

  • ICMP差错报文不会产生差错报文(ICMP查询报文可能会产生ICMP差错报文);
  • 目的地址是广播地址和多播地址的IP数据报;
  • 作为链路层广播的数据报;
  • 不是IP分片的第一片
  • 源地址不是单个主机的数据报。
    这些规则是为了防止过去同意ICMP差错报文对广播分组影响所带来的广播风暴。
    再来看ICMP查询报文。查询报文主要用途有:
  • 子网掩码查询。
  • 时间戳查询。
  • ping查询。

    ping程序

ping是ICMP的一个非常著名的应用。ping程序时对两个TCP/IP系统连通性进行測试的基本工具,它仅仅利用ICMP回显请求和回显应答报文。而不用经过传输层,pingserver一般在内核中试下ICMP的功能。

当某一个站点訪问不了时。我们就能够ping一下这个站点,看下连通情况。比方下图:

这里先ping到google的server,我们能够看到连通性不是非常好,丢包率为50%,而我们又ping了下Github的server,连通性比較好,丢包率为0%。

    Traceroute程序

Traceroute是ICMP协议的还有一个重要应用。主要用来侦測源主机到目的主机之间所经过的路由的情况。Traceroute使用ICMP报文和IP首部中的TTL字段,其原理非常easy,開始时发送一个TTL字段为1的UDP数据报,而后每次收到ICMP超时报文后,再发送一个TTL字段加1的UDP数据报,以确定路径中的每一个路由器,而每一个路由器在丢弃UDP数据报时都会返回一个ICMP超时报文,终于到达目的主机后,因为ICMP选择了一个不可能的值作为UDPport(大于30000)。

这样目的主机就会发送一个port不可达的ICMP差错报文。

【网络协议】ICMP协议、Ping、Traceroute的更多相关文章

  1. [协议]ICMP协议剖析

    1.ICMP简介 ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议. ICMP的协议号为1. ICMP报文就像是IP报文的小弟,总顶着IP报文的名头 ...

  2. TCP/IP协议---ICMP协议及ping、traceroute

    ICMP Internet控制报文协议通常被认为是IP层的组成部分,一般被IP层或更高层(TCP.UDP)使用.ICMP报文是在IP数据报内部被传输的.如图: ICMP报文的格式如下: 报文的前4个字 ...

  3. ICMP协议概述

    • ICMP是三层协议,和IP.ARP.ICMP同属三层    • IP协议中的6是代表上层的TCP协议,17代表UDP协议,1代表同层的ICMP协议    • ICMP协议主要用来探测       ...

  4. 三、ARP协议和ICMP协议

    一.ARP协议 网络设备有数据要发送到另一台网络设备时,必须要知道对方的网络层地址(IP).IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送.数据帧必 ...

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

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

  6. 4.ICMP协议,ping和Traceroute

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

  7. 网络协议 5 - ICMP 与 ping:投石问路的侦察兵

        日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 pi ...

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

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

  9. 网络协议 5 - ICMP 与 Ping

    日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 ping 命 ...

随机推荐

  1. ArrayList 扩容原理

    面试中经常问到的问题之一就是List的扩容机制了,他是怎么做到扩容的,大家都能答出来底层是数组,复制一个数组来扩容,但是再具体一点来说,大家就不知道该怎么说了,如果不看源码说这么多确实就差不多了,但是 ...

  2. php 过滤敏感关键词

    php 过滤敏感关键词 function badwords($content){ $keywords=M("config")->where("name='badwo ...

  3. 【专题系列】单调队列优化DP

    Tip:还有很多更有深度的题目,这里不再给出,只给了几道基本的题目(本来想继续更的,但是现在做的题目不是这一块内容,以后有空可能会继续补上) 单调队列——看起来就是很高级的玩意儿,显然是个队列,而且其 ...

  4. POJ 3083 BFS+DFS 40行

    题意:给你一个迷宫. 先输出当左转优先的时候走的路程长度,再输出当右转优先时走的路程长度,最后输出从起点到终点的最短路程长度. 嗯嗯 奴哥活跃气氛的题.随便写了写.. 此题 知道了思路以后就是水题了. ...

  5. C#WebForm里面aspx,ajax请求后台。。。

    虽然WebForm里面有那些基本控件,后台CS里面也有许许多多的控件的方法.但是不见得有些标签不需要进行后台的访问,下面介绍一下三种aspx中访问后台的方式.. 第一种:WebMethod (静态方法 ...

  6. SQLServer2008 使用sql语句访问excel数据

    exec sp_configure 'show advanced options',1  reconfigure  exec sp_configure 'Ad Hoc Distributed Quer ...

  7. sql学习--update

    两种修改形式 第一种:静态插入 ,notes='began career selling ...balabala' where jc='johnny ca' 第二种: --注意别名和on后边的表连接不 ...

  8. VUE-搜索过滤器

    先看看效果 首先引入 <script src="https://cdn.jsdelivr.net/npm/vue"></script> HTML部分 < ...

  9. python核心编程中的对象值比较VS对象身份比较(转载)

    转载地址: https://blog.csdn.net/Mluka/article/details/51076786 在python核心编程第四章中,P69在优化下面这段代码时提出了:对象值比较VS对 ...

  10. 09 Django组件之用户认证组件

    没有学习Django认证组件之前使用装饰器方法 from django.shortcuts import render, HttpResponse, redirect from app01.MyFor ...