tracer 原理
前言
准备整理网络章节,先整理概念。
tracer 是一个可以获取我们的主机到访问端中间经过了哪些路由,这个对于我们非常重要,看下原理吧。
正文
tracer 在unix中是tracerRout。
它的原理是这样子的,他发送一个udp包,去访问一个不可达端口,这个端口是一个高位端口,比如说44444。
回过头来看ip协议,我把图贴过来:

看到那个ttl没?就是那个生存时间。
这个我在介绍ip协议的时候介绍过,每经过一个路由,那么他将会-1。
利用这个特征,我们可以这样做,先设置ttl为1,那么经过一个路由后他将返回一个icmp包。
这个时候我们就知道了这个路由的地址。
同样我们再发送ttl为2,然后就是下一个路由。
那么就有一个问题了,那么我们是如何确定到达的呢?
关键部分就是这个,udp如果是一个不可达端口,那么会返回一个端口不可达的icmp包,这个时候我们就不用继续发了。
同样windows又不一样。
看下windows是如何实现的,windows命令行叫做tracer。
windows 实现原理:
微软就是发送icmp包,同样是通过这个ttl实现来返回路由,那么它是如何确定已经到达对方路由了呢?
icmp如果没到,那么路由器会发送错误icmp包,如果到了,那么目的主机对回应icmp包,这样就结束路由跟踪了。
tracer 原理的更多相关文章
- Linux内核跟踪之syscall tracer 【转】
转自:http://blog.chinaunix.net/uid-20543183-id-1930847.html ------------------------------------------ ...
- Cisco Packet Tracer 6.0 实验笔记
开篇:组建小型局域网 实验任务 1.利用一台型号为2960的交换机将2pc机互连组建一个小型局域网: 2.分别设置pc机的ip地址: 3.验证pc机间可以互通. 实验设备 Switch_2960 1台 ...
- 以太坊智能合约虚拟机(EVM)原理与实现
以太坊 EVM原理与实现 以太坊底层通过EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到EVM中运行.通常智能合约的开发流程是用solidlity编写逻辑代码,再通过编译 ...
- drone的pipeline原理与代码分析
最近的一个项目,需要实现一个工作任务流(task pipeline),基于之前CICD的经验,jenkins pipeline和drone的pipeline进入候选. drone是基于go的cicd解 ...
- Spring Cloud Netflix Eureka源码导读与原理分析
Spring Cloud Netflix技术栈中,Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用,因此对Eureka还是有很大的必要进行深入研究. 本文主要分为四部分,一是对项目构建 ...
- zuul源码分析-探究原生zuul的工作原理
前提 最近在项目中使用了SpringCloud,基于zuul搭建了一个提供加解密.鉴权等功能的网关服务.鉴于之前没怎么使用过Zuul,于是顺便仔细阅读了它的源码.实际上,zuul原来提供的功能是很单一 ...
- 计算机网络原理实验_使用网络协议分析仪Wireshark
一.实验名称 使用网络协议分析仪Wireshark 二.实验目的: 1. 掌握安装和配置网络协议分析仪Wireshark的方法: 2. 熟悉使用Wireshark工具分析网络协议的基本方法,加深对协 ...
- IP组网实验(使用Cisco Packet Tracer路由器模拟软件)
最近计网课讲到了以太网,第二个计网实验就是IP组网实验.这个实验主要使用了netsim这个路由器模拟软件.怎奈mac上没有,于是用Cisco Packet Tracer进行了一次模拟(其实就是实验中的 ...
- Spring Cloud Eureka源码分析之三级缓存的设计原理及源码分析
Eureka Server 为了提供响应效率,提供了两层的缓存结构,将 Eureka Client 所需要的注册信息,直接存储在缓存结构中,实现原理如下图所示. 第一层缓存:readOnlyCache ...
- go-micro集成链路跟踪的方法和中间件原理
前几天有个同学想了解下如何在go-micro中做链路跟踪,这几天正好看到wrapper这块,wrapper这个东西在某些框架中也称为中间件,里边有个opentracing的插件,正好用来做链路追踪.o ...
随机推荐
- Linux系统查看主机性能
查看主机的CPU性能: cat /proc/cpuinfo cat /proc/meminfo |grep MemTotal 内存信息 查看物理cpu个数:cat /proc/cpuinfo ...
- linux压缩文件并排除指定目录
今天要在linux上打包一个项目另作他用,但是项目图片都是放本地服务器的,整个项目打包好后有2G多下载十分费时.项目中的图片我们可以不要,所以压缩的时候要排除图片目录. 具体命令如下: // 参数说明 ...
- OBS Studio多开/多平台直播的最佳解决方案
OBS是一款强大的PC端免费的直播推流及录制工具,功能很强大,它支持开发者根据需求开发插件集成使用 我们知道OBS支持通过插件来实现多路推流,它的优点是只需开启一个OBS窗口就可以同时推流到多个不同的 ...
- XAF Blazor TabbedMdi
开源项目地址:https://gitee.com/easyxaf/blazor-tabbed-mdi 前言 XAF在WinForm中采用了多文档界面(MDI),但在Blazor中却没有,在官网中也有人 ...
- 内存缓存 Gcache VS Caffeine源码详解
转一篇.后续再尝试自己实践一下
- mybatis批量插入的四种方式
一.循环插入 public void insert(List<User> userList) { userList.forEach(user -> userDao.insert(us ...
- cache 本地&分布式(-redis) & JSON对象转换
本地缓存 最简单的cache, 做一个map就行 private final Map<String,List<User>> cache=new HashMap<>( ...
- java多线程的锁整理
参考,欢迎点击原文:https://www.jianshu.com/p/473a3d96a1b0(java锁总结) https://www.jianshu.com/p/dcabdf695557(Ree ...
- XMLSpringEclipseWebCache
XMLSpringEclipseWebCache XMLSpy编辑工具中如何设置XML的DTD/XSD校验指向本地,而不要直接指向网络去? 前提:在不修改XML的条件下,修改XML的,不要这个,这个变 ...
- Linux 使用 selenium 环境配置
1.需要安装 Chrome 浏览器 yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64 ...