一、ping

ping 程序的主要目的是测试主机是否可达,它发送 ICMP 回显请求报文给目的主机,并等待返回 ICMP 回显应答

ping 程序一般会周期性持续地发送 ICMP 请求报文,除非用户手动终止,或指定了发送报文个数

回显请求和回显应答通过序列号(icmp_seq)进行匹配,下图中序列号依次为 1、2、3、4 ...

ping 程序通过数据报中记录的发送请求时间值接收到回显应答报文的当前时间值,计算往返耗时(time)

常见问题:

1.  为什么 ping 第一次一般会产生更多耗时?

因为 ping 第一次的时候,需要首先进行 ARP 解析,获取 IP 地址对应的 MAC 地址(同时将映射关系缓存),

而下次 ping 的时候会直接从 ARP 高速缓存读取,少了一个步骤,自然时间就缩短了!

二、traceroute 

       traceroute 程序的主要目的是获取从当前主机到目的主机所经过的路由

官方方案(TCP/IP详解里提供的基于 UDP 的方案):通过封装一份 UDP 数据报(指定一个不可能使用的端口,30000以上),依次将数据报的 TTL 值置为 1、2、3...,并发送给目的主机。当路径上第一个路由器收到 TTL 值为 1 的数据报时,首先将该数据报的 TTL 值减 1,发现 TTL 值为 0,而自己并非该数据报的目的主机,就会向源主机发送一个 ICMP 超时报文,traceroute 收到该超时报文,就得到了路径上第一台路由器的地址;然后照此原理,traceroute 发送 TTL 为 2 的数据报时,会收到路径上第二台路由器返回的 ICMP 超时报文,记录第二台路由器的地址;直到报文到达目的主机,目的主机不会返回 ICMP 超时,但由于端口无法使用,就会返回一份端口不可达报文给源主机,源主机收到端口不可达报文,证明数据报已经到达了目的地,停止后续的 UDP 数据报发送,将记录的路径依次打印出来,使命完成,结束任务。

注意:目的主机端口号最开始设置为 33435,且每发送一个数据报加 1,可以通过命令行选项来改变开始的端口号

约束:

1. 不能保证现在的路由也是将来所要采用的路由,甚至两份连续的 IP 数据报都可能采用不同的路由;

2. 不能保证 ICMP 报文的路由与 traceoute 程序发送的 UDP 数据报采用同一路由,时间测量可能不准;

3. 返回的 ICMP 报文中的信源 IP 地址是 UDP 数据报到达的路由器接口的 IP 地址;

当从网络1某主机执行 traceroute 程序到网络3某主机,返回的路径将是 if1 和 if3 的地址;

而反方向,将打印出 if4 和 if2 的地址

缺陷:

1. 中间路由器有可能做了限制,不返回 ICMP 超时报文,traceroute 就无法获得其地址了,

只能打印出 * 或 no reply

2. 目的主机可能由于安全原因不会向源主机返回端口不可达的 ICMP 报文

尽管探测数据报已经到达了目的主机,但 traceroute 程序收不到端口不可达报文,就仍会持续发送请求 ...

ping 与 traceroute 的工作原理分析相关推荐

  1. ping和traceroute的工作原理

    PING原理 PING是基于ICMP协议(网络层)工作的 ICMP:Internet Control Message Protocol,互联网控制报文协议 ICMP用于报告传输过程中出现的问题,比如确 ...

  2. RxJs map operator 工作原理分析

    使用一个例子来研究 map 操作符的工作原理. 推荐阅读本文之前,先浏览这篇文章RxJs fromEvent 工作原理分析以了解相关知识. 源代码: import { Component, OnIni ...

  3. Hadoop生态圈-Zookeeper的工作原理分析

    Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   无论是是Kafka集群,还是producer和consumer都依赖于Zoo ...

  4. 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析

    2019独角兽企业重金招聘Python工程师标准>>> 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析 一.大致介绍 1.在前面章节了解了AQS和 ...

  5. 匿名突破网络限制 (Tor工作原理分析)

    转载自:http://blog.163.com/mike_gz/blog/static/247532200672932800/ 网管顾名思义,就是天天管着网络.想尽各种手段限制我们上网的人.在网络中订 ...

  6. traceroute的工作原理

    MyySophia5个月前 traceroute的工作原理 是利用ICMP差错控制报文中的TTL超时会回向源点发送一个时间超时报文.例如A 主机 traceroute B主机,A会封装一些分组,这些分 ...

  7. 滑环的基本结构及工作原理分析

    滑环是工业机械部件,基本原理是利用导电机械部件的折动或滚动在接触旋转部件和静止部件之间传递电能或电信号的产业部部件,作为360度旋转方式的一个相当好的解决方法,那么,下面一起了解下滑环的基本结构及工作 ...

  8. 【高通SDM660平台 Android 10.0】(19) --- Camera_focus、Camera_snapshot、volume_up 按键工作原理分析

    [高通SDM660平台 Android 10.0]19 --- Camera_focus.Camera_snapshot.volume_up 按键工作原理分析 一. DTS代码配置 二. Kernel ...

  9. 二极管温度补偿电路工作原理分析

    众所周知,PN结导通后有一个约为0.6V(指硅材料PN结)的压降,同时PN结还有一个与温度相关的特性:PN结导通后的压降基本不变,但不是不变,PN结两端的压降随温度升高而略有下降,温度愈高其下降的量愈 ...

最新文章

  1. myeclipse 8.5 常用快捷键
  2. 用java做出32选7_用java做的一个彩票32选7的简单程序
  3. 基于 Redis 实现的分布式锁
  4. ARP攻击实战之WinArpAttacker
  5. RabbitMQ管理(1)——多租户与权限
  6. mysql 连接查询 子查询 备份 笔记
  7. php设计模式在框架中的应用,关于设计模式在实际场景中的应用
  8. linux iphone 同步时间,与iPad/iPhone同步
  9. JavaScript操作BOM对象 - document对象; history 和 location对象 ,对话框,Date时间对象...
  10. python机器人方向怎么学_学习如何使用 Python 构建你自己的 Twitter 机器人
  11. C++认识容器的迭代器
  12. 计算机产品校园营销方案,惠普笔记本电脑校园营销策划方案.doc
  13. 自动化测试的定位以及一些思考是什么样的,你知道吗?
  14. 万物互联----聊聊OPC服务器KepWare
  15. 深度学习 pytorch cifar10数据集训练
  16. 右值引用调用-汇编码分析
  17. 正交频分复用中的正交问题
  18. esp32个人例程(micropython)
  19. 华为od统一考试B卷【机器人走迷宫】Java 实现
  20. 三星S9/S9+将亮相,神秘邀请函透露了哪些信号?

热门文章

  1. qnx的c语言教程,《QNX培训教程》.pdf
  2. C# JObject和JArray的使用
  3. Python浮点数误差与解决方法
  4. 1411122215-ny-Financial Management
  5. Android中的Gilde
  6. 学术讲座: 多标签主动学习之 MASP
  7. (3)风色从零单排《C++ Primer》 重要的基本类型
  8. 解决ubuntu能登录但没有桌面图标的问题
  9. HDU2048神、上帝以及老天爷 (错排公式)
  10. 全球与中国超高真空 (UHV) 腔室市场现状及未来发展趋势