zoukankan      html  css  js  c++  java
  • TCP/IP illustated: 第七、八章 Ping program & Traceroute program

    Ping program 与 Traceroute program 均是以 iCMP 为基础的两个程序. 其功能主要用于探测是否能够连接、观察记录 IP datagram 的路程.

    Ping Program

    Summary

    Ping Program 是 ICMP 的一部分,其基本机制是:发送 ICMP echo request 并希望接收到 ICMP echo replay.

    ping 一词来源于 sonar pogram, 正如其名字所示,其功能主要有两种:

    1. 用于两 host 之间的连接的基本检测.例如 Telnet 和 FTP ,能得到 Ping 回应是基本的要求.
    2. 用于得知 IP datagram 中间传输的 host 和 时间间隔. (ping 加 -R 用于记录经过的 host)

    即用于探知对方是否是 reachable 的;如果是,两者之间的“距离”有多远,

    第二个功能有很大缺陷,其最大问题是 IP datagram 大小限制为 60 bytes, 而 route record 双向都会记录,故最多只能记录 9 个 IP 地址,而如今往往会此值往往溢出.

    Traceroute Program

    Summary

    Traceroute program 是一个基于 TCP/IP 的程序,其主要有两个用途:

    1. 用于观察记录 IP datagram 传输的 route
    2. 指定特定的 route, 观察路径执行情况(称为 IP source route option, 命令行命令为 routetrace -g [Strict] 或者 routetrace -G[Loose])

    其主要功能是用于 RR( route record) .

    原理

    Traceroute program 的执行是以 IP header 中的 TTL 和 UDP datagram 的 ICMP 的相关属性为基础的.

    基础1:TTL

    概念

    定义: TTL 是 IP header 中的一部分, 其全称为 time-to-live.是允许经过的 router 的数量的上限,每经过一个 router, 数值就 increment by 1.
    功能: 当 TTL 的值为0或1时, router 不再将其 forward 到下一个 router, 而是将其 discard, 并返回 ICMP error message "time exceed" .
    目的:防止 IP datagram 发生无限循环.

    TTL 与 Traceroute

    Traceroute 利用返回的 ICMP error message 中包含 router 的 IP address 工作:即 traceroute 程序第一次发送 TTL = 1 的 IP datagram, 第二次发送 TTLs = 2 的 IP datagram, 以此类推.

    基础2:UDP datagram

    概念

    可指定 destination host 以及需到达的端口,若无法到达, 则发送 ICMP error message “port unreachable".

    UDP datagram 与 Traceroute

    Traceroute 程序将 UDP datagram 的 destination host 的端口设置为 an unlikely value (larger than 300,000), 使得其到达端口后,返回一 "port unreachable" error 的 ICMP.

    优点和瑕疵

    traceroute 相较于 ping(IP record route option) 有三个优点:

    1. 不是所有 router 都支持 IP record route option,但traceroute 都可行.
    2. traceroute 只记录一个方向
    3. traceroute 可比 IP record route option 记录更多数据.

    瑕疵

    但是, traceroute 程序也有瑕疵,有以下三点:

    1. route 存在一定的不确定性.目前发送的 IP datagram 的 route 未必是 consecutive IP datagram 的 route.
    2. time 存在一定的不确定性. IP datagram 的去程和回程未必一样.
    3. interface 所指定的 IP address 的不确定性. traceroute 接受到的 IP address 基于 UDP arrived 的 interface. 与 IP route record option 的 outgoing interface 不同.




  • 相关阅读:
    node-webkit 不支持html5_video播放mp4的解决方法
    node-webkit(Windows系统) 打包成exe文件后,被360杀毒软件误报木马的解决方法
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 33. 二叉搜索树的后序遍历序列
    Leetcode96. 不同的二叉搜索树
    Leetcode95. 不同的二叉搜索树 II
    leetcode1493. 删掉一个元素以后全为 1 的最长子数组
    Leetcode1052. 爱生气的书店老板
    Leetcode92. 反转链表 II
    Leetcode495. 提莫攻击
  • 原文地址:https://www.cnblogs.com/FBsharl/p/11031705.html
Copyright © 2011-2022 走看看