计算机网络面试题:A主机ping B主机发生了什么?

众所周知,ping命令使用的是ICMP协议包,那么A主机ping B主机到底发生了什么呢?

1 ping介绍

ping(Packet Internet Groper,因特网包探索器)是Windows、UNIX、和Linux系统下的一个命令。ping也属于一种通信协议,是TCP/IP的一部分。利用ping命令可以检查网络是否连通,可以很好地帮助分析和判定网络故障。应用格式:ping 空格 IP地址,该命令还可以加许多参数使用。


2 ping的使用

连通问题是由许多原因引起的,如本地配置错误、远程主机协议失效等,当然还包括设备 等造成的故障。使用 Ping 检查连通性有六个步骤:

1. 使用 ipconfig /all 观察本地网络设置是否正确;

2. Ping 127.0.0.1,127.0.0.1 回送地址 Ping 回送地址是为了检查本地的 TCP/IP 协议有 没有设置好;

3. Ping 本机 IP 地址,这样是为了检查本机的 IP 地址是否设置有误;

4. Ping 本网网关或本网 IP 地址,这样的是为了检查硬件设备是否有问题,也可以检查本 机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略)

5.Ping 本地 DNS 地址,这样做是为了检查 DNS 是否能够将 IP。

6.Ping 远程 IP 地址,这主要是检查本网或本机与外部的连接是否正常。


3 ping工作原理

A主机ping B主机

A主机发送端:

1. A主机构建一个ICMP数据包,ICMP协议把这个数据包和A主机的IP地址交给IP层协议;

2. IP层协议把A主机IP地址、一些控制信息和B主机的IP地址构建一个IP数据包,IP层协议获得B主机的MAC地址(如何获得B主机的MAC地址,下面会写),IP层协议把IP数据包和B主机的MAC地址一并交给数据链路层协议;

3. 数据链路层构建一个数据帧,目的地址是IP层传来的B主机的MAC地址,源地址是本主机的MAC地址,加上一些控制信息,通过网络发送出去。

B主机接收端:

1. B主机接收到数据帧后,先检查目的地址,是否和本主机的MAC地址一致,如果一致,就接收,否则丢弃;

2. 接收后检查数据帧,从帧中提取IP数据包,交给本主机的IP层协议,IP层协议检查后,将有用的信息提取出来交给ICMP协议;

3. ICMP协议处理后,立刻构建一个应答包,发送给A主机,过程和A主机发送ICMP请求包给B主机一样。

IP层如何获得B主机的MAC地址呢?

举个例子:

A主机:10.10.10.1  子网掩码:255.255.255.0

这里有三种场景:

1 自己与自己通信

答:当ping 10.10.10.1时,计算机和自己的IP相比较,如果相等,会发给自己,我们称之为精确匹配

2 A主机和B主机在同一网段

答:当ping 10.10.10.2时,计算机和自己的IP相比较,发现并不相等,退而求其次,使用模糊匹配,用自己的子网掩码255.255.255.0与10.10.10.2做按位与,得到网段10.10.10,这个和自己在一个网段(一个广播域),就直接在本网络内查找这台机器的MAC。如果以前两个机器有过通信,在A主机的ARP缓存表中应该有B主机IP地址与其MAC的映射关系,如果没有,就发一个ARP请求广播,得到B主机的MAC,完成通信。

3 A主机和B主机不在同一网段

答:当ping 8.8.8.8 时,计算机和自己的IP相比较,发现并不相等,退而求其次,使用模糊匹配,用自己的掩码255.255.255.0 与8.8.8.8做按位与,得到网段8.8.8,和自己10.10.10不在一个网段,需要使用最模糊的匹配,一般会匹配0.0.0.0/0,这个是最后的选择,一般指向网关,由于网关和自己在一个网段(一个广播域),所以可以广播ARP得到网关的MAC,然后把ping 包发给网关,完成通信。


 参考:

https://blog.csdn.net/zhuying_linux/article/details/6770730

https://www.zhihu.com/question/29723388

A主机ping B主机发生了什么?的更多相关文章

  1. 主机ping不同虚拟机

    前提:今天加班时,一不小时把网线踢掉了,然而虚拟机怎么都ping不通了,试过很多办法; 最后.... 简单粗暴的重启了我的主机,对,是主机,不是虚拟机,ok,问题解决; over...

  2. 局域网ping Linux主机名

    1.Windows ping Linux主机名 #ubuntu 下 sudo apt-get install winbind #centos 下 yum install samba service n ...

  3. 开发板ping不通主机和虚拟机的看过来(转载)!

    前几天在做uboot下用tftp下载文件到开发板的实验时,为了能解决开发板ping不通主机和虚拟机的问题,可谓绞尽脑汁,正所谓久病成医,虽然为了这一小问题废了我那么长时间,但我在解决问题的同时也学到了 ...

  4. 【整理】虚拟机和主机ping不通解决办法

     检查几个方面: 1.检查虚拟网卡有没有被禁用2.检查虚拟机与物理机是否在一个VMNet中3.检查虚拟机的IP地址与物理机对应的VMNet是否在一个网段4.检查虚拟机与物理机的防火墙是否允许PING, ...

  5. 虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)

    我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关 ...

  6. 防火墙设置:虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)

    我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关 ...

  7. 虚拟机ping不通主机

    centos ping不通主机 首先检查网络设备 ifconfig -a 如果有eth0 , 又存在 eth1 . 那么service eth1 stop  然后在ping主机.(以上前提是网络地址设 ...

  8. tiny210 u-boot 网络ping不通主机解决方案

    站在巨人的肩膀上: http://blog.csdn.net/liukun321/article/details/7438880 http://www.arm9home.net/read.php?ti ...

  9. 主机ping通虚拟机,虚拟机ping通主机解决方法(NAT模式)

    有时候需要用虚拟机和宿主机模拟做数据交互,ping不通是件很烦人的事,本文以net模式解决这一问题. 宿主机系统:window7 虚拟机系统:CentOs7 连接方式:NAT模式 主机ping通虚拟机 ...

随机推荐

  1. lumen添加中间件实现cookie自动加密解密

    在项目根路径下执行命令:安装illuminate/cookie包 1.composer require illuminate/cookie 2.找到同版本的laravel下的\vendor\larav ...

  2. Java数组(2):数组与泛型

    通常,数组与泛型不能很好的结合,你不能实例化具有参数化类型的数组.擦除会移除参数类型信息,而数组必须知道它们所持有的确切类型.但是我们可以参数化数组本身. import java.util.Array ...

  3. MMORPG服务器架构

    MMORPG服务器架构 一.摘要 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等.3.网络游戏的场景管理,A ...

  4. SpringCloud简历模板

    项目三:智慧生鲜(SpringCloud) 开发周期:5个月项目介绍:该项目是一个基于微服分布式的生鲜电商网站,主要模块有前台:用户模块.商品模块.购物车模块.订单模块.支付模块.抢购模块.后台:权限 ...

  5. Leetcode之70. Climbing Stairs Easy

    Leetcode 70 Climbing Stairs Easy https://leetcode.com/problems/climbing-stairs/ You are climbing a s ...

  6. 爬虫学习笔记之为什么要设置超时时间,怎么设置(使用selenium)

    一个程序没有设置超时时间,就可以说是一段有缺陷的代码. 读取超时指的就是客户端等待服务器发送请求的时间.(特定地,它指的是客户端要等待服务器发送字节之间的时间.在 99.9% 的情况下这指的是服务器发 ...

  7. mongodb base

    数据库,集合(表),文档(行) 嵌入式关系 引用式关系

  8. 重载(overload)和重写(override)的区别

    方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性. 重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同.参数个数不同或者二者都不同)则 ...

  9. 流程控制之 while 循环

    目录 流程控制之while while 条件循环语句 while contine while else while 循环的嵌套 流程控制之while while 条件循环语句 循环就是一个重复的过程 ...

  10. T100——自动执行设置了但没执行

    azzi950设置了背景定时执行,但到底没执行, 重启的命令如下.三个命令都执行一下.指令 1: r.r azzp950 kill 指令 2: r.r azzp951 kill 指令 3: r.r a ...