计算机网络-实验一

1.解释traceroute 的工作原理

答:
① 基本原理
 Traceroute 的最基本功能是路由跟踪,将数据包到达目的地的每一跳打印出来;Traceroute 最简单的基本用法是:traceroute hostname
 Traceroute 程序的设计是利用ICMP 及IP header 的TTL(Time To Live)栏位(field)。
 首先,traceroute 送出一个TTL是1的IP datagram (其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram 时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram 丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram ,发现第2 个路由器...... traceroute 每次将送出的datagram 的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。
 当datagram 到达目的地后,该主机并不会送回ICMP time exceeded 消息,因为它已是目的地了,那么traceroute 如何得知目的地到达了呢?
 Traceroute 在送出UDP datagrams 到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server 端也是没有所谓的Daemon 程式。
 Traceroute 提取发 ICMP TTL 到期消息设备的IP地址并作域名解析。每次 ,Traceroute 都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
 Traceroute 有一个固定的时间等待响应(ICMP TTL 到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,Traceroute给TTL记数器加1,继续进行。

② 网关
 一般使用Traceroute (或者是Tracert )是基于一台主机的,但是通常只能知道以身边的主机为源地址到互联网络上任意一台在线的主机的路由连接质量以及数据传输效率的情况,而使用基于WEB 的方式,只要一台主机安装了特定的CGI 程序,用户就可以通过这台主机运行相关的程序,执行Traceroute 的功能。这台主机我们把它叫做Traceroute 网关。Traceroute 网关可以帮助用户了解网络的物理与逻辑连接的拓扑情况以及数据传输的效率。如果这种网关足够多,我们就可以方便地了解到各主机之间连接的情况了。

2.它在哪一层工作,如何工作?

答:
 Traceroute 在网络层工作,由于traceroute (Windows 系统下是tracert ) 利用ICMP 协议定位计算机和目标计算机之间的所有路由器,而路由器是网络层的接口,故Traceroute 在网络层工作。

 Traceroute 的实现上,有两种不同的工作方案:

①基于UDP实现
 在基于UDP的实现中,客户端发送的数据包是通过UDP协议来传输的,使用了一个大于30000的端口号,服务器在收到这个数据包的时候会返回一个端口不可达的ICMP错误信息,客户端通过判断收到的错误信息是TTL超时还是端口不可达来判断数据包是否到达目标主机,具体的流程如图:

1.客户端发送一个TTL为1,端口号大于30000的UDP数据包,到达第一站路由器之后TTL被减去1,返回了一个超时的ICMP数据包,客户端得到第一跳路由器的地址。
2.客户端发送一个TTL为2的数据包,在第二跳的路由器节点处超时,得到第二跳路由器的地址。
3.客户端发送一个TTL为3的数据包,数据包成功到达目标主机,返回一个端口不可达错误,traceroute结束。

②基于ICMP实现
 直接发送一个ICMP回显请求(echo request)数据包,服务器在收到回显请求的时候会向客户端发送一个ICMP回显应答(echo reply)数据包,在这之后的流程还是跟第一种方案一样。这样就避免了我们的traceroute数据包被服务器的防火墙策略墙掉。

1.客户端发送一个TTL为1的ICMP请求回显数据包,在第一跳的时候超时并返回一个ICMP超时数据包,得到第一跳的地址。
2.客户端发送一个TTL为2的ICMP请求回显数据包,得到第二跳的地址。
3.客户端发送一个TTL为3的ICMP请求回显数据包,到达目标主机,目标主机返回一个ICMP回显应答,traceroute结束。

③ 命令参数
Traceroute的用法为:

Traceroute [options] [data size]

[options]的内容有:
[-n] :显示的地址是用数字表示而不是符号
[-v] :长输出
[-p] :UDP端口设置(缺省为33434)
[-q] :设置TTL测试数目(缺省为3)
[-t] :设置测包的服务类型

[data size] :
每次测试包的数据字节长度(缺省为38)

3.Linux、Windows(不同版本)和macOS 中的traceroute 实现有什么不同吗?

答:
 Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,而Tracert是Windows系统默认提供的路由追踪小程序。

①在Linux和macOS 下traceroute 的实现
 1.Linux和Mac OS等系统使用UDP包进行探测,目标端口号默认为33434,每次探测目标端口号加1。Traceroute故意使用了一个大于 30000 的目标端口号,以保证目标地址收到数据包后能够返回一个“端口不可达”的 ICMP 报文,于是源地址就可将端口不可达报文当作跟踪结束的标志。
 2.Traceroute每跳默认发送3个探测包(发包的数量可通过-q进行设置),探测包的返回会受到网络情况的影响。如果防火墙封掉了ICMP的返回信息,那么相应的延时位置会以*显示。如果某台网关阻塞或者某台DNS出现问题,那么相应行的延时会变长。可以加-n 参数来避免DNS解析,以IP格式输出数据。
 3.每个探测包都有唯一的标识号,使得Traceroute能够识别返回的包。UDP数据包使用递增的目标端口号进行标识。

②在Windows下traceroute(Windows下称为Tracert)的实现
 1.Windows系统使用ICMP请求回显(ICMP Echo Request)数据包进行探测,源地址以目的地址返回的ICMP回应答复(ICMP Echo Reply)作为跟踪结束标志。
 2.Traceroute每跳默认发送3个探测包。在未能到达路由器或未返回ICMP超时通知的情况下,相应的延时位置会以*显示。
 3.每个探测包都有唯一的标识号,ICMP数据包使用seq进行标识。

4.使用 traceroute 程序尝试两个目的地:www.baidu.comwww.google.com,解释结果

答:
(1)在Windows系统下使用Tracert 尝试
 ①尝试www.baidu.com
 如图,第一跳为10.68.0.1,第二跳为10.62.255.250,第三跳为210.43.96.121 …… 每条记录输出3个延时结果,说明源地址每次默认发送三个数据包。
 前三条均带有两个*号,只有1个延时结果,说明源地址只收到了1个ICMP超时通知消息。
 当一个ICMP超时通知消息都未接收时,显示请求超时。
 最后数据包从源地址经过15跳之后到达目的地址。

 ②尝试 www.google.com
 系统最多尝试30跳,可以看到,与www.baidu.com 不同的地方在于,在第8跳后,源地址无法再收到ICMP超时通知消息出,现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。 有时我们在某一网关处延时比较长,也有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;可以加-n 参数来避免DNS解析,以IP格式输出数据。

(2)在Linux系统下使用Traceroute 尝试
 ①尝试www.baidu.com
 无论在kali Linux系统还是Ubuntu Linux系统系统下,均为上方截图结果,可能是采用的是虚拟机,物理设备(已联网)本身的原因。
 若加上-I指令,使用TCP连接,结果如下图:

 中间路由不接受TCP协议,故显示为*。

 ②尝试 www.google.com

 同上述结果。

5.如果您有一个可以浏览www.google.com 的socks 代理,有什么不同吗?

答:
①了解socks代理
 socks代理相应的采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks是个电路级的底层网关,是DavidKoblas在1990年开发的,此后就一直作为Internet RFC标准的开放标准。Socks不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。

②使用socks代理后再次在windows上使用使用Tracert 尝试www.google.com,会首先跳转到socks代理的服务器的路由,然后再经过服务器的路由继续跳转到www.google.com的ip。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是蒸饺吖~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值