才子佳人博客

我的故事我讲述

ping 原理及ICMP协议简介
 
来源:xjh  编辑:xjh  2011-12-02

在日常网络维护工作中,我们使用最多的工具可能就是ping命令了,了解ping命令的原理能够更好的利用这个测试工具,本文介绍了ICMP协议和ping命令的基本原理和功能。

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

ICMP全称Internet Control Message Protocol,中文名为因特网控制报文协议。它工作在OSI的网络层,向数据通讯中的源主机报告错误。

在网络传输过程中,可能会发生许多突发事件并导致数据传输失败。网络层的IP协议是一个无连接的协议,它不会处理网络层传输中的故障,而位于网络层的ICMP协议却恰好弥补了IP的缺限,ICMP消息被封装为IP数据包后传输,收到ICMP消息的主机向数据包中的源主机提供发生在网络层的通信结果或者错误信息反馈。

ICMP的特点:

ICMP本身是网络层的一个协议;

ICMP差错报告采用路由器-源主机的模式,路由器在发现数据报传输出现错误时只向源主机报告差错原因;

ICMP并不能保证所有的IP数据报都能够传输到目的主机;

ICMP不能纠正差错,它只是报告差错。差错处理需要由高层协议去完成。

ICMP报文类型


Ping命令基本功能

Ping命令用于测试两个TCP/IP系统之间的网络层连通性,如果ping命令测试成功,表明源和目的主机之间的网络层(即IP协议)已经连通,并且同时输出源和目的的通信延迟时间。

Ping工作过程

假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?

首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个映射表中查找出IP地址192.168.1.2所对应的物理地址(MAC地址),一并交给数据链路层。数据链路层构建一个数据帧,目的地址是IP层查找出的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

其中映射表由ARP实现。ARP(Address Resolution Protocol)是网络层的地址解析协议,是一种将IP地址转化成物理地址的协议。ARP具体说来就是将网络层(IP层)地址解析为数据连接层(MAC层)的MAC地址。

主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,ICMP协议处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

参考来源:
http://it.nankai.edu.cn/netlab/courseware/6/6_8_main.htm
http://blog.csdn.net/sain615/article/details/6770251
http://www.hackarea.com/cisco/2010/6002.html


分类:网络日志| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: