计算机网络面试题: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. Python C/S架构,网络通信相关名词,socket编程

    主要内容: 一.  C/S架构 二. 网络通信的相关名词 三. socket编程 一. C/S架构和B\S架构概述 1. C/S架构: Client/Server(客户端/服务端)架构 描述: C/S ...

  2. kali破解wifi密码

    开始 1.选择合适的网卡,有些网卡kali识别不了,我用的网卡信息 2.网卡开启监听模式 3.查看监听模式是否开启成功(网卡名称变成wlan0mon说明已经开启成功) 4.输入“airodump-ng ...

  3. 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别(转载)

    转载来源:https://youzhixueyuan.com/the-difference-between-restful-soap-rpc-soa-and-micro-service.html 内容 ...

  4. C学习笔记-函数

    函数的定义 返回值类型 函数名([[参数类型 参数名1],[参数类型 参数名2],···,[参数类型 参数n]]) { //执行语句 return 返回值; } 返回值类型:用于限定函数返回值的数据类 ...

  5. [转帖]k8s.gcr.io/pause的作用

    k8s.gcr.io/pause的作用 https://blog.51cto.com/liuzhengwei521/2422120 weilovepan520关注0人评论196人阅读2019-07-2 ...

  6. 【转帖】比df命令更有用的磁盘信息工具

    比df命令更有用的磁盘信息工具 http://embeddedlinux.org.cn/emb-linux/entry-level/201310/30-2666.html 除了df fdisk 还有这 ...

  7. H. The Nth Item(The 2019 Asia Nanchang First Round Online Programming Contest)

    题意:https://nanti.jisuanke.com/t/41355 给出N1,计算公式:A=F(N)Ni=Ni-1 ^ (A*A),F为类斐波那契需要矩阵快速幂的递推式. 求第k个N. 思路: ...

  8. Linux目录结构解释

    Linux的常用命令 cp: 用于文件复制的命令. cp file_1 file_2 copy_position -v: 复制的详细过程. -r: 复制目录. mv: 文件移动或文件重命名. mv f ...

  9. 初识WSGI接口

    WSGI WSGI全称为Web Server Gateway Interface,WSGI允许web框架和web服务器分开,可以混合匹配web服务器和web框架,选择一个适合的配对.比如,可以在Gun ...

  10. T100——作业action执行其他P作业,后台背景执行完后才能继续操作改作业

    范例:如axmt500订单,查询开单占用量: 客制作业cxmp500,通过参数-订单号,查询该订单下的料件,目前有库存量.开单占用量.库存可用量,查询后更新到该订单下的单身对应栏位: 现在axmt50 ...