【网络协议】ICMP协议、Ping、Traceroute

    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差错报文。

时间: 2024-08-07 04:30:57

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

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

ICMP Internet控制报文协议通常被认为是IP层的组成部分,一般被IP层或更高层(TCP.UDP)使用.ICMP报文是在IP数据报内部被传输的.如图: ICMP报文的格式如下: 报文的前4个字节都一样: 8bit类型,8bit代码,16bit检验和.ICMP报文有不同的报文类型,不同类型由这个8bit的类型和8bit的代码共同决定.一个类型下可能有多个代码.比如: 类型0表示回显应答(ping应答):类型1表示目的不可达,其中代码0表示网络不可达,代码1表示主机不可达,代码2表示协议不可

ccna基础 第三节ARP协议 ICMP协议

创作:http://www.ie-lab.cn/ 原文地址:https://blog.51cto.com/14277585/2377873

计算机网络基础:ARP协议 --- IP协议 --- ICMP + IGMP协议

ARP协议 ARP高速缓存:ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间.凡超过生存时间的项目就从高速缓存中删除掉. ARP是解决同一局域网上的主机或路由器的IP地址和硬件地址的映射问题. IP协议 利用IP协议可以使这些性能各异的网络从用户看起来好像是一个统一的网络. ICMP协议 为了提高IP数据报交付成功的机会,在网际层用了网际控制报文协议ICMP. ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告. ICMP报文格式 ICMP协议的应用 PING PING用来测

4.ICMP协议,ping和Traceroute

1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机.给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因.ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成.而前 16bit就组成了ICMP

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

转自:http://blog.csdn.net/goodboy1881/article/details/670761 ———————————————————————————————————————————————————————— 1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将

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

????日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 ping 命令及其对应的 ICMP 协议. ICMP 协议 ????ICMP 全称 Internet Control Message Protocol,指互联网控制报文协议. ????网络本身是不可靠的,数据包在传输过程中,可能会发生很多突发事件并导致数据传输失败.而网络层的 IP 协议是一个无连接的协

PING的原理以及ICMP协议

主要内容: 1.ping的原理以及工作过程 2.ICMP协议 3.ICMP的应用:ping,traceroute 1.ping的原理以及工作过程  ping的原理  ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接. ping 使用的是ICMP协议,它发送icmp回送请求消息给目的主机.ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机.如果源主机在一定时间内收到应答,则认为主机可达. ICMP协议通过IP协议发送的,IP协议是

《网络协议》ICMP 协议

ICMP 协议概述 ICMP 经常被认为是 IP 层的一个组成部分,它传递差错报文以及其他需要注意的信息.ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用.ICMP 报文是在 IP 数据报内部传输的.IP 协议是不可靠协议,不能保证 IP 数据报能够成功的到达目的主机,无法进行差错控制,而 ICMP 协议能够协助 IP 协议完成这些功能.下面是 ICMP 报文的数据结构: 类型:一个 8 位类型字段,表示 ICMP 数据包类型: 代码:一个 8 位代码域,表示指定类型中的一个

Ping命令与ICMP协议

ICMP协议 ICMP是"Internet Control Message Ptotocol"(Internet控制消息协议)的缩写.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息 ping命令 ping命令通常用来作为网络可用性的检查.ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络. ping和ICMP的关系 ping命令发送数据使用的是ICMP协议. ping的原理 向指定的网络地址发送一定长度的数据包,