PackageTracer实验中第一次Ping必然会丢包的原因

news/2024/11/4 23:40:57/文章来源:https://www.cnblogs.com/nightstars/p/18526965

在packageTracer中做实验时发现首次ping位于不同网络中的主机时必然会超时,我对此疑惑不解,但是上网没有找到相关解答,于是我通过包跟踪找到了答案,于是将其记录下来,希望对后拉的读者有所帮助。

网络拓扑图
PS:R0与R1的位置有误

PC1 Ping PC3 的过程

  1. 首先,当我们在PC1发出Ping命令时,网络层会检查目标地址,发现其网络号与本主机不同,于是会将其数据报先转发给默认网关,于是网络层告诉数据链路层"我要将这份报文发给192.168.1.1".

  2. 数据链路层收到报文,查找转发表(初始状态转发表为空),发现没有该地址(192.168.1.1)对应的MAC地址,于是数据链路层首先会向本网络广播一份ARP请求报文,向目标IP地址(192.168.1.1)请求它的MAC地址,这也就是为什么首次Ping时pt上显示两个报文,一个是ARP,一个是ICMP。
    两个报文
    ARP请求报文

  3. 目标主机(路由器)收到报文后,会发送arp响应报文告诉PC1它的MAC地址,PC1收到该报文之后就知道了目标路由的mac地址,于是向目标路由转发网络层交付的报文,到这时候第一次Ping的报文才算正式发出

  4. 报文转发给R1,R1收到该报文会从路由表中得知该报文需要转发给R0,于是该报文被转发给了R0

  5. 而R0的arp表中并没有该主机对应的MAC地址,于是R0也会向本网络广播一个arp请求报文,但是与PC1不同的是R0会直接将该Ping报文直接丢弃,而不是等待收到arp响应报文之后在发出,所以目标主机(PC3)并没有受到首次Ping请求!这也就是为什么首次Ping会丢包。这应该也是网络提供不可靠服务的具体体现吧。

  6. PC3收到arp请求后会向R0发出arp响应报,于是R0将其记录到自己的arp表中,之后的ICMP报文到该路由便能被正确的转发,所以后续的Ping便不会超时

总结

首次Ping会丢包是因为当路由器发现arp表中没有目标MAC地址时会直接丢弃该包(或许说是帧更合适一些),而之后的Ping不会超时是因为路由器也并不是什么都不做,它会向本网络广播一次arp请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/826868.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

easy-mock搭建mock平台

环境: mac 1、前提: 需要已安装node和npm(easy-mock是node.js开发的)、redis、mongodb 安装mongodb(mongodb很大,剩余内存需要10个G左右)$ brew install mongodb-atlas $ atlas setup2、安装easy-mockgit clone https://github.com/easy-mock/easy-mock.git #选择要把eas…

easy-mock搭建mock服务

环境: mac 1、前提: 需要已安装node和npm(easy-mock是node.js开发的)、redis、mongodb 安装mongodb(mongodb很大,剩余内存需要10个G左右)$ brew install mongodb-atlas $ atlas setup2、安装easy-mockgit clone https://github.com/easy-mock/easy-mock.git #选择要把eas…

[编程笔记] 奇怪的bug - 公共提示组件不生效

很简单的一个功能,初看的时候就猜到是用的某个组件,其他地方要用一般照抄,改下文案即可,这种弹出肯定是公共组件了。然鹅,很神奇的是我新做的页面,复制以后没效果!项目中有这么一个提示框:对应的代码是:top.msg.ok(123)很简单的一个功能,初看的时候就猜到是用的某个组…

linux内存管理学习总结

一、内存寻址 1.1 逻辑地址、线性地址、物理地址的概念 1.2 逻辑地址转换线性地址步骤 1.3 线性地址到物理地址的转换 二、内存管理 2.1 引导内存分配器阶段 2.2 内存管理子系统 2.3 32位架构的地址空间划分 2.4 64位架构的地址空间划分 2.5 内核态的内存管理 2.6 用户态内存管…

https页面加载http资源的解决方法

https页面加载http资源的解决方法@目录1.报错如图2.项目背景3.网上的解决方案4.我的最终解决方案 1.报错如图2.项目背景我们的项目采用的全是https请求,而使用第三方文件管理器go-fastdfs,该文件管理器返回的所有下载文件的请求全是http开头的,比如http://10.110.38.253:110…

Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载

Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载@目录一、业务背景二、实现思路二、准备工作1.准备data模板.xlsx2.引入poi相关依赖,用于操作excel3.针对WorkBook+ZIP压缩输入/输出流,相关方法知识点要有所了解三、完整的项目代码四、可能遇到的问题错误场景…

macOS 解锁隐藏文件

不知道为什么,我用 VS Code 编译的 LaTeX 文档是隐藏的,导致我复制到其他地方都看不见这个文档。首先可以按下 Command + Shift + . 组合键显示隐藏文件。接下来可以用下面的命令取消隐藏的文件: chflags nohidden <file>如果你想重新隐藏的话,使用下面的命令: chfl…

Spring原理Boot

Spring原理 SpringBoot 1 Boot 1.1 Boot 骨架项目 如果是 linux 环境,用以下命令即可获取 spring boot 的骨架 pom.xml curl -G https://start.spring.io/pom.xml -d dependencies=web,mysql,mybatis -o pom.xml也可以使用 Postman 等工具实现 若想获取更多用法,请参考 curl …

0xGame 2024 [Week 2] 报告哈基米

0xGame 2024 [Week 2] 报告哈基米 新知识:Tupper(塔珀自指公式);Arnold Cat(猫映射) 下载文件是一个png图片,010打开查看 发现是倒着的pk转一下保存为zip文件,打开后是一个txt文件有两个地方有提示,一个是十六进制里面的Maybe You Need To Kown Arnold Cat?还有一个是…

告别 PPT 配图难题!Napkin.ai 轻松打造生动演示文档(文末免费送书)

还在为 PPT 配图发愁?Napkin.ai 来救场!它是强大的文本自动配图工具,能自动摘要文本、生成并自定义配图,下载方式多样。文中详细介绍其使用方法,包括注册、创建 Napkin、选择和设置配图等。此外,还有免费送书活动,关注、留言点赞就有机会获得《OpenAI API 接口应用实战》…

Origin pro 2024下载与安装

1、安装包 OriginPro 是由 OriginLab 公司开发的专业制图和数据分析软件,大部分科学研究的统计、作图、函数拟合等要求都可以满足,尤其适合曲线、曲面的图。它提供了上百种二维和三维绘图模板,而且允许用户自己定制模板。OriginPro 中的数据分析功能包括统计,信号处理,曲线…