Ping的详细过程
2015-05-31 19:18
639 查看
Ping过程详解
Ping命令的主要作用的是检查网络的连通情况和检测网络的速度。相信大家都用过Ping命令,下面主要介绍一下Ping命令是怎样一个执行过程。
主要的Ping有两种情况,一种是同一网段,一种是跨网段的。
首先看一个拓扑图:
首先,如果主机A要Ping主机B,那么主机A就要封装二层报文,他会先检查自己的MAC地址,如果没有B的MAC地址,就会向外发送一个ARP广播包,如图:
其中ARP报文格式如下:
其中OP表示:1:表示ARP请求;2:表示ARP应答;3:表示RARP请求;4:表示RARP应答。
首先交换机会收到这个报文后,交换机有学习MAC地址的功能,所以他会检索自己有没有保存主机B的MAC地址,如果有的,就直接返回给A主机,如果没有,就会向所有端口发送ARP广播,其他主机收到后,发现不是在找自己,就纷纷丢弃了改报文,不去理会,直到主机B收到了报文后,就立即响应,我的MAC地址是多少,同时学到主机A的MAC地址,并按同样的ARP报文格式返回给主机A。如图:
ARP报文的格式为:
这时候主机A
学到了主机B的MAC地址,就把这个MAC封装到ICMP协议的二层报文中向主机B发送,报文格式如下:
当主机B收到了这个报文后,发现是主机A的ICMP回显请求,就按同样的格式,返回一个值给主机A,这样就完成了同一网段内的Ping过程。
如果主机A要Ping主机C,那么主机A发现主机C的IP和自己的IP不是同一个网段,他就去找网管转发,但是他也不知道网管的MAC情况下呢?这是就会像前面那个步骤一样,先发送一个ARP广播,学到网关的MAC地址,再发封装包,报文的格式如下:
当路由器收到主机A发过来的ICMP报文,发现自己的母的地址是其本身MAC地址,根据母的地IP地址2.1.1.1,查找路由表,发现2.1.1.1/24的路由表项,得到一个出口指针,去掉原来的MAC头部,加上自己的MAC地址向主机C转发,报文格式如下
最后主机C已学到路由器2端口MAC,路由器2端口转发给路由器1端口,路由器端口学到主机A的MAC地址的情况下,他们就不需要再做ARP解析,就将ICMP的回显请求恢复过来,报文格式如下:
Ping命令的主要作用的是检查网络的连通情况和检测网络的速度。相信大家都用过Ping命令,下面主要介绍一下Ping命令是怎样一个执行过程。
主要的Ping有两种情况,一种是同一网段,一种是跨网段的。
首先看一个拓扑图:
首先,如果主机A要Ping主机B,那么主机A就要封装二层报文,他会先检查自己的MAC地址,如果没有B的MAC地址,就会向外发送一个ARP广播包,如图:
其中ARP报文格式如下:
其中OP表示:1:表示ARP请求;2:表示ARP应答;3:表示RARP请求;4:表示RARP应答。
首先交换机会收到这个报文后,交换机有学习MAC地址的功能,所以他会检索自己有没有保存主机B的MAC地址,如果有的,就直接返回给A主机,如果没有,就会向所有端口发送ARP广播,其他主机收到后,发现不是在找自己,就纷纷丢弃了改报文,不去理会,直到主机B收到了报文后,就立即响应,我的MAC地址是多少,同时学到主机A的MAC地址,并按同样的ARP报文格式返回给主机A。如图:
ARP报文的格式为:
这时候主机A
学到了主机B的MAC地址,就把这个MAC封装到ICMP协议的二层报文中向主机B发送,报文格式如下:
当主机B收到了这个报文后,发现是主机A的ICMP回显请求,就按同样的格式,返回一个值给主机A,这样就完成了同一网段内的Ping过程。
如果主机A要Ping主机C,那么主机A发现主机C的IP和自己的IP不是同一个网段,他就去找网管转发,但是他也不知道网管的MAC情况下呢?这是就会像前面那个步骤一样,先发送一个ARP广播,学到网关的MAC地址,再发封装包,报文的格式如下:
当路由器收到主机A发过来的ICMP报文,发现自己的母的地址是其本身MAC地址,根据母的地IP地址2.1.1.1,查找路由表,发现2.1.1.1/24的路由表项,得到一个出口指针,去掉原来的MAC头部,加上自己的MAC地址向主机C转发,报文格式如下
最后主机C已学到路由器2端口MAC,路由器2端口转发给路由器1端口,路由器端口学到主机A的MAC地址的情况下,他们就不需要再做ARP解析,就将ICMP的回显请求恢复过来,报文格式如下:
相关文章推荐
- MySQL乱码问题
- Linux正则表达式-POSIX字符类
- 可视化日历【Java,有详细的注释】
- 快排(QuickSort)的java语言的实现
- asp.net实现数据库版动态网页滑动门
- 第十一周项目1-是春哥啊
- 在说人脸识别
- 【操作系统总结】存储器管理-程序的装入与连接,连续分配存储管理方式
- Delphi编译选项
- svm代码c++——机器学习
- 解读uglifyJS(转载:http://rapheal.sinaapp.com/2014/05/15/uglifyjs-ast-parse/)
- DOM节点——JS总结
- 团队实验用例建模
- 第八篇 SQL Server代理使用外部程序
- 哈夫曼树
- cocos v2.2.6&cocos2d-x-3.6实练
- 15第十三周项目一——动物这样叫
- 我不懂女人我不懂人
- Rails: No such file or directory - getcwd
- Android canvas & shader & path