zoukankan      html  css  js  c++  java
  • 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包,这样就结束路由跟踪了。

  • 相关阅读:
    iOS-MD5加密、SHA1加密
    iOS-AFNetworking参数和多文件同时上传【多文件上传】
    iOS-CocoaPods安装及使用
    Python Queue模块
    Python socket编程
    python select epoll poll的解析
    python redis使用
    python executemany的使用
    python 三层架构说明
    Python isinstance
  • 原文地址:https://www.cnblogs.com/aoximin/p/13396315.html
Copyright © 2011-2022 走看看