执行 ping 操作的时候都发生了什么?

(网易游戏一面的问题,没答上来...)

不考虑域名解析、ARP 广播、路由转发、各种校验的简化版
ping 192.168.0.4  ---->  构建 ICMP 包  ---->  构建 IP 分组  ---->  解析硬件地址封装成帧  ---->    物理层发送

接收方就是反过来拆包的过程。

完整流程如下:

  1. 如果是 ping 域名,首先需要通过 DNS 服务拿到对方的 IP。
  2. 主机构建一个 ICMP 格式的数据包,由 ICMP 协议将这个数据包(有效负荷)连同目的 IP 地址一起交给 IP 协议。
  3. IP 协议构建一个分组(本机 IP + 控制信息 + 目的 IP),控制信息至少包含了 01h 的协议字段,这样当此分组到达目的方时,这些内容就会告诉目的主机应该将这个有效负荷交付给哪个协议来处理,本例中就是 ICMP。
  4. 如果目的 IP 不跟自己在同一个网段,则需要通过路由转发,先通过路由信息得到网关 IP。如果在同一网段则没有此步骤。
  5. 如果之前与目的 IP (或网关 IP)通信过,应该在 ARP 缓存表中能查到对应的 MAC 地址。如果没有,就需要通过 ARP 广播来获取 MAC 地址了。把 IP 地址解析为 MAC 地址后,此分组就可被传送到数据链路层以组建成帧。
  6. 数据链路层将控制信息封装到此分组上,创建成帧。在这个帧中,附加有目的 MAC 地址和源 MAC 地址,以及以太网类型字段(用来指明应用于帧数据字段的协议)。在帧的尾部是 FCS(帧校验序列)字段,这个部分装载了 CRC(循环冗余校验)的计算结果。
  7. 把帧交付给物理层,物理层会以一次一比特的方式将帧发送到物理介质。
  8. 这时,此冲突域中的每台设备都会接收这些比特,并将它重新组建成帧。每个设备都会对接收到的内容进行 CRC 运算,并与帧中 FCS 字段的内容进行比对。如果值不匹配,接收到的帧将被丢弃。如果匹配,接着将检查目的 MAC 地址与自己的是否匹配。如果匹配,则接下来查看以太网类型字段,以获悉完成数据后续处理的网络层协议。
  9. 将分组从帧中取出,并将其他部分丢弃。然后,分组被递交给以太网类型字段中列出的协议(本例是 IP 协议)。
  10. IP 协议接收这个分组,并检查它的 IP 的地址。如果这是一个路由器(网关),跳到 11。如果这就是目的主机,跳到下一步 12。
  11. 由于分组的目的 IP 地址与此接收路由器上的各个地址均不匹配,路由器会在其路由表中查找目的 IP 的地址,(在此路由表中需要包含目的子网的相关表项,否则路由器会立即将收到的分组丢弃,并同时向发送方回送一个携带有目标网络不可达信息的 ICMP 报文。),并按照路由规则被交换到指定的输出接口的缓冲区内。接着重复 5 ~ 11 步骤。
  12. 分组的目的 IP 与此主机 IP 地址匹配,检查分组的协议字段,了解分组有效负荷的交付对象。此有效负荷将被递交给 ICMP,后者知道这是一个回应请求数据。ICMP 将负责应答这个请求,它首先立即丢弃这个接收到的分组然后产生一个新的有效负荷作为回应应答数据

之后的流程就和上面一样了~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 网络层提供的两种服务 在计算机网络领域,网络层应该向运输层提供怎样的服务(面向连接还是无连接)曾引起了长期的争论,...
    srtianxia阅读 9,533评论 0 12
  • 第二章 物理层 频分复用:频分复用的用户在同样的时间占用不同的带宽资源(频率带宽) 时分复用:时分复用的用户在不同...
    PramaWells阅读 9,304评论 1 3
  • 五、因特网的路由选择协议 1.有关路由选择协议的几个基本概念 Ⅰ、理想的路由算法 路由表中的路由是怎样得出的呢?核...
    dmmy大印阅读 6,296评论 0 4
  • 今天对于我来说是意义非凡的一天,初二谈的男朋友,刻骨铭心,分分合合,拉拉扯扯,到今天,终于,彻底,放下了。 八年...
    沉伏阅读 1,544评论 0 1
  • 夜色浓重,天上无半点星辰,寂静衬出的神秘与阴暗随着沁人凉意渗入骨髓。 一行人踏着细细密密的脚步,由远及近。 你走在...
    小鳄鱼008阅读 3,616评论 0 0

友情链接更多精彩内容