赞
踩
ICMP(Internet Control Message Protoco)协议是TCP/IP协议栈中的网络层的一个协议,ICMP是Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。(控制消息是指:网络通不通、主机是否可达、路由是否可用等网络本身的消息)这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。
ICMP是TCP/IP模型中网络层的重要成员,与IP协议、ARP协议、RARP协议及IGMP协议共同构成了TCP/IP模型中的网络层。
ping和tracert是两个常用网络管理命令:
- ping用来测试网络可达性。
- tracert用来显示到达目的主机的路径。
ping和tracert都利用ICMP协议来实现网络功能,它们是把网络协议应用到日常网络管理。
虽然ICMP是网络层协议,但是它不像IP协议和ARP协议一样直接传递给数据链路层,而是先封装成IP数据包然后再传递给数据链路层。所以在IP数据包中如果协议类型字段的值是1的话,就表示IP数据是ICMP报文。IP数据包就是靠这个协议来区分不同的数据包。
ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文。
类型:标明ICMP报文的作用和格式,4位。
代码:表明报文的类型,4位。
校验和:检验报文是否有误,8位。
ICMP协议主要通过Type和Code的组合来标明报文的类型。
(1)请求响应
一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或是传输失败),则接收方就会返回一个Type=0的ICMP报文。
(2)目标(网络、主机、协议)不可到达、源抑制和超时报文
在Linux中ping命令用于检测主机,执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该消息,因而得知该主机运行正常。
ping是利用ICMP报文检测网络连接。
ICMP ping就是向目标主机发送ICMP信息报文,目标主机回应ICMP信息报文或差错报文,ping程序根据这些收到的ICMP报文以知道目标主机的可达性。
那么当在同一网段内与跨网段的ping的这两种情况是怎样的?
假设主机A的IP为:1.1.1.1
主机B的IP为:1.1.1.3
同一网段内
若主机A要去ping主机B,那么主机A就要封装二层报文,它先会先查看自己MAC地址表,若其中没有B的MAC地址,其就会向外发送一个ARP广播包:
以太网目的MAC 源MAC OP 发送端以太网MAC 发送端IP地址 目的MAC 目的IP AA-AA-AA-AA-AA-AA 00-50-56-C0-00-01 1.1.1.1 00-00-00-00-00-00 1.1.1.3 交换机会收到这个报文,其中交换机有学习MAC地址的功能,所以交换机会检索自己有无保存主机B有MAC,若有,就返回给主机A,若没有,就会向所有端口发送ARP广播,其它主机接收到后,发现所发送的ARP广播中不是找自己的,就会丢弃该报文。直到主机B收到该报文后,主机B会立即响应,以主机A所发送的ARP报文格式返回给主机A。
以太网目的MAC 源MAC OP 发送端以太网MAC 发送端IP地址 目的MAC 目的IP 00-50-56-C0-00-01 00-50-56-C0-00-03 1.1.1.3 00-50-56-C0-00-01 1.1.1.1 这时我们可见主机A已经学习到了主机B的MAC,并将其封装到ICMP协议的二层报文中向主机B发送。
报文格式:
目的地址 源地址 ... 源 IP 目的IP 00-50-56-C0-00-03 00-50-56-C0-00-01 1.1.1.1 1.1.1.3 Echo request 当主机B接收到这个报文后,按同样的格式将返回一个值给主机A
目的地址 源地址 ... 源 IP 目的IP 00-50-56-C0-00-01 00-50-56-C0-00-03 1.1.1.3 1.1.1.1 Echo answer 这就是同一网段内ping的过程
不同网段ping过程
假设有两个主机A和B,主机A要ping主机B,但是发现主机A和主机B的IP不在同一网段,如同上文所说的同一网段内ping步骤一样,先发送一个ARP广播,让其学到网关的MAC,再封装ICMP报文给网关路由器。
目的地址 源地址 ... 源 IP 目的IP 00-50-56-C0-00-02 00-50-56-C0-00-01 1.1.1.1 2.1.1.3 Echo request 当路由器接收到主机A发送的ICMP报文后,发现主机A本身的目的地址是其本身的MAC地址,根据目的IP1.1.1.3的路由表项,得到一个出口指针,去掉之前的MAC头部后使用自己的MAC地址向主机B发送。
目的地址 源地址 ... 源 IP 目的IP 00-50-56-C0-00-01 00-50-56-C0-00-02 2.1.1.3 1.1.1.1 Echo answer
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。