文章目录

  • 一、ping原理
    • 1. 在同一网段内:
    • 2. 在不同网段内:
  • 二、Traceroute原理

一、ping原理

ping主要是用来探测主机和主机之间是否可以进行通信,如果不能ping到某台主机,表示不能与这台主机建立连接。ping使用的是ICMP协议,他发送ICMP回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机,如果源主机在一定时间内收到应答,表明主机可达。ICMP协议是通过IP协议发送的,IP协议是无连接的,不可靠的数据报协议。
ping是用来检测网络是否畅通或者网络连接速度的命令

1. 在同一网段内:

在主机 A 上运行“Ping 192.168.0.5”后,都发生了些什么呢?
首先,Ping 命令会构建一个固定格式的 ICMP 请求数据包, 然后由 ICMP 协议将这个数据包连同地址“192.168.0.5”一起 交给IP 层协议,IP 层协议将以地址 “192.168.0.5”作为目的地址。本机 IP 地址作为源地址,加上一些其他的控制信息,构建一 个 IP 数据包,并想办法得到 192.168.0.5 的MAC 地址,以便交给数据链路层构建一个数据帧。关键就在这里,IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的 MAC,如果以前两机有过通信,在 A 机的 ARP 缓存表应该 有 B 机 IP 与其 MAC 的映射关系,如果没有,就发一个 ARP 请求广播,得到 B 机的 MAC, 一并交给数据链路层。后者构建一个数据帧,目的地址是 IP 层传过来的物理地址,源地址则是本机的MAC地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送 出去。 主机 B 收到这个数据帧后,先检查它的目的地址,并和本机的MAC地址对比,如符合, 则接收;否则丢弃。接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层 协议。同样,IP 层检查后,将有用的信息提取后交给 ICMP 协议,后者处理后,马上构建 一个 ICMP 应答包,发送给主机 A,其过程和主机 A 发送 ICMP 请求包到主机 B 一模一样。

2. 在不同网段内:

在主机 A 上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到 MAC 地址时,IP 协议通过计算发现 D 机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的 MAC 取过来,至于怎样得到路由的 MAC,跟上面一样,先在 ARP 缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机 D 进行联系,如果找不到,就向主机 A 返回一个 超时的信息。

二、Traceroute原理

Traceroute是用来侦测由源主机到目的主机所经过的路由的情况的重要工具,也是最简洁的工具,尽管ping可以进行侦测,但是ping受到IP头的限制(IP首部字段最多只能放9个IP地址),ping不能完全记录所经过的路由器,所以才会引入Traceroute。
Traceroute原理:其实Traceroute的原理很简单,他收到目的主机IP后,首先给目的主机发送一个TTL=1(TTL指生存时间)的udp数据包,而经过的第一个路由器收到这个数据包之后,自动把TTL减去1,而TTL变为0之后,路由器就将这个数据包抛弃了,并同时产生一个主机不可达的ICMP超时数据报给主机。主机收到这个ICMP数据报以后,会发送一个TTL=2的数据报给目的主机,然后刺激第二个路由器给主机发送ICMP数据报,如此反复,直到到达目的主机。这样Traceroute就可以拿到所有路由器的IP,从而避开IP头只能记录有限路由的IP地址。
那么我们怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较小的端口,比如说80,比如说23,等等。而traceroute发送的是端口>30000(真变态)的UDP报,所以到达目的主机的时候,目的主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道目的主机到了。

参考:
(1)https://blog.csdn.net/zhuying_linux/article/details/6770730
(2)https://blog.csdn.net/inject2006/article/details/2139149
(3)https://blog.csdn.net/m0_37947204/article/details/80273659
(4)《TCP/IP详解卷1》

ping原理和Traceroute原理相关推荐

  1. 学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理

    前言 这是学习源码整体架构系列第七篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 学习源码整体 ...

  2. jvm性能调优实战 - 41JVM运行原理和GC原理Review

    文章目录 Pre JVM和GC的运行原理 对象什么时候进入老年代? 老年代的GC是如何触发的? 正常情况下的系统 Pre 我们已经把完整的JVM运行原理.GC原理以及GC优化的原理,还有线上发生GC问 ...

  3. class加载原理和Dex加载的原理-----android插件化技术

    2019独角兽企业重金招聘Python工程师标准>>> class加载原理和Dex加载的原理 转载于:https://my.oschina.net/quguangle/blog/15 ...

  4. Ping和Traceroute原理

    Ping和Traceroute原理 两者都是ICMP来完成的,ICMP的主要功能是确认IP包是否成功送达⽬标地址.报告发送过程中IP包被废弃的原因和改善⽹络设置等.ICMP是基于ip协议的,ICMP报 ...

  5. Mybatis插件原理和PageHelper结合实战分页插件(七)

    今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github ...

  6. HTTPS原理和CA证书申请

    转载自:HTTPS原理和CA证书申请(满满的干货) 众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于 ...

  7. mvc原理和mvc模式的优缺点

    mvc原理和mvc模式的优缺点 一.mvc原理    mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离.提高了程序的可维护性.可移植性.可扩展性与可重用性,降低了程序的开发难度.它主要分 ...

  8. PING命令的工作原理

    PING命令的工作原理 1.概述 2. ICMP协议 2.1 ICMP是什么? 2.2 ICMP都有啥功能 2.2 ICMP包头格式 3.PING –查询报文类型的使用 1.概述 在我们的日常生活中, ...

  9. 混合高斯模型原理和Lucas-Kanade方法介绍

    运动估计之混合高斯模型原理和Lucas-Kanade方法介绍 1. 简述混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想. 背景建模的思想:利用帧之间的像素变化来进行判断,像素灰度值 ...

最新文章

  1. [翻译]pytest测试框架(一)
  2. 【MM模块】Split Valuation 分割评估
  3. mysql or中有空查询慢_MySQL 慢查询日志
  4. SQL Server Compact 3.5开发环境说明
  5. 【大健康】高保真交互原型模板+大健康生态问诊app+饮食运动数据血糖血压健康数据的管理移动端+在线挂号、体检预约、远程在线视频电话图文问诊医疗服务+积分商城设备管理+健康档案
  6. QString转Char*字符串
  7. (转)美国进入智能投顾竞争时代
  8. 2021年电工(技师)考试报名及电工(技师)模拟考试题
  9. CSU2080: 航行日志的修复
  10. 无人驾驶环境感知 | 01 车道线检测网络LanNet原理及实现
  11. 洛谷P1338(末日的传说)
  12. 数学分析习题解答(四:第一部分)
  13. 联筑赚赋能传统模架产业链数字化 促进产业发展互利共赢
  14. LaTeX入门|(1)从Word到LaTeX:LateX排版常用指令
  15. 查看eigen库版本的指令
  16. 如何用SpringBoot+Thymeleaf+Echart生成好看的柱状图,折线图,饼状图
  17. 2058三国佚事——巴蜀之危
  18. java计算机毕业设计HTML5游戏网站设计与实现源码+mysql数据库+系统+lw文档+部署
  19. 【Redis 反序列化报错】 Cannot construct instance of `com.vt.common.Result` (no Creators, like default constr
  20. Unity3D应用--打造Android车载3D车模桌面(车载主界面开发)

热门文章

  1. 湖南中教育PMP 项目经理遇事最有水平的5种处理方法
  2. 使用javassist增强ValueObject对象功能——给ValueObject属性设置Get和Set方法
  3. 测试学习(三)——用例编写
  4. Ipad2发布会最大的惊喜是乔布斯的出现
  5. 让 CheckStyle 支持增量检查的一次落地经验总结
  6. 【数据网格架构】数据网格架构模式
  7. 软件开发管理工具--持续集成构建
  8. HTML网页期末作业:基于Html+Css+javascript的网页制作(化妆品企业官网设计20页)
  9. WKWebView高度自适应
  10. [luogu]P4365[九省联考]秘密袭击coat(非官方正解)