标签:ref 部分 信息 计算 数据 字段 不可 ip地址 来源
一、ICMP协议参考:1.https://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E6%8E%A7%E5%88%B6%E6%B6%88%E6%81%AF%E5%8D%8F%E8%AE%AE
2.计算机网络(第七版)-144页
二、PING
1、前言
ping命令通常用来测试网络可用性的检查,ping命令可以对一个网路地址发送测试数据包,看该网络是否有响应,并统计响应时间,以此测试网络。
2、原理
向指定的网络地址发送一定长度的数据包(ICMP)。按照约定,如果存在,会返回一个相同大小的数据包。如果在特定的时间没有返回一个数据包,则会被认为是“超时”,会被认为指定的网络地址不存在(并不是绝对,有些服务器通过防火樯禁止了ping或者在内核参数中禁止了ping)。
ping 发送数据包时使用的是ICMP协议。
3、参数
-c :发送包的数量
-t:设置存活数的ttl值。
-s:设置数据报的大小
-R:记录路由信息
-n:只显示数值
-I :指定设备
-i :设置时间间隔。
-b : 允许ping网关(先通过route命令查看设备)
三、TRACERTROUTE
1、用途
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
2、原理
Traceroute程序使用ICMP报文和和IP首部中的TTL字段(生存周期)。
每个处理数据报的路由器都要把TTL的值减去1或者减去数据报在路由器中停留的秒数。由于大多数的路由器转发数据报的延时都小于1秒钟,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都将其值减1.
TTL字段的目的是防止数据报在选路时无休止的在网络中流动。例如,当路由器瘫痪或者两个路由器之间的连接丢失时,选路协议有时回去检查丢失的路由器并一直进行下去。TTL字段就是在这些寻暖传递的数据报上加上一个生存上限。
当路由器收到一份IP数据报,如果TTL字段是0或者1,则路由器不转发该数据报(接收到这种数据报的目的主机可以将它交给应用程序,这是因为不需要转发该数据报。但是,在通常情况下系统不应该接收TTL字段为0的数据报)。通常情况下是,路由器将该数据报丢弃,并给信源主机发送一份ICMP超时信息。Tracerouter程序的关键在于,这份ICMP超时信息包含了该路由器的地址。
那么,Tracerouter就通过发送一份TTL字段为1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL值减去1,丢弃该数据报,并回发一份超时ICMP报文。这样就得到了该路径中的第一个路由器的IP地址。然后Tracerouter发送一份TTL为2的数据报,这样就得到了第二个路由器的IP地址。那么,继续这个过程,直到达到目的主机。即使目的主机接收到一份TTL值为1的数据报也不会丢弃该数据报并产生一份ICMP报文,因为已经到达最终目的地。这个时候,Tracerouter程序发送一份UDP数据报给目的主机,但选择一个不可能的值作为目的端口号(大于30000),使得目的主机的任何一个程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误的ICMP报文,这样Tracerouter程序要做的就是区分搜到的ICMP报文是是超时还是端口不可达,以判断什么时候结束。
来源:https://blog.csdn.net/lyhDream/article/details/41594605
3、参数
-f :设置第一个TTL值的大小。
-p : 设置UDP的通信端口。
-x :开启或者关闭数据包的正确性检验。
本人实菜,理解能力上有限。日后理解学会了再补充。
4、注意事项
有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。
内网***系列教程二(ping和tracertroute命令的使用)
标签:ref 部分 信息 计算 数据 字段 不可 ip地址 来源
原文地址:http://blog.51cto.com/12263326/2333526