例如这张照片取自维基百科
列出的这 12 个服务器名称是什么?我知道它们是服务器,应该是网络数据包到达目的地所必须经过的路径。但是,为什么我需要访问任何服务器,除了通过向我提供我请求的文件来实际服务请求的服务器之外?
每个服务器名称提到的三个计时信息是什么?
过程不应该是这样的吗(复制自这里)?
浏览器与名称服务器通信,将服务器名称“www.howstuffworks.com”转换为 IP 地址,用于连接到服务器计算机。然后浏览器在端口 80 上与该 IP 地址的服务器建立连接。 (我们将在本文后面讨论端口。)按照 HTTP 协议,浏览器向服务器发送 GET 请求,请求文件“http://www.howstuffworks.com/web-server.htm(请注意,cookie 可以通过 GET 请求从浏览器发送到服务器 - 有关详细信息,请参阅 Internet Cookie 的工作原理。)然后服务器将网页的 HTML 文本发送到浏览器。(Cookie 也可以从服务器到浏览器(在页面的标题中)。)浏览器读取 HTML 标签并将页面格式化到屏幕上。
答案1
这 12 行是数据包到达维基媒体服务器所必须经过的节点。您需要经过 12 个节点,因为您的计算机没有直接连接到 wikimedia 的服务器。它是连接到 xs4all.net 上的一个节点(自然是 ISP),该节点连接到另一个 xs4net 节点,该节点连接到 wvoptical.net,该节点连接到 as30217.net,as30217.net 连接到 wikimedia.org,这就是路由器可以找到将数据包到达目的地的最佳路径。如果您的计算机直接插入目标计算机,则只有一跳;尝试跟踪路由到本地网络上的另一台计算机:
> [mrozekma@etudes-2 ~] % traceroute etudes-1
traceroute to etudes-1 (192.168.0.10), 30 hops max, 40 byte packets
1 etudes-1 (192.168.0.10) 0.196 ms 0.190 ms 0.152 ms
每跳右侧的计时信息是数据包的往返时间。默认情况下,每跳发送三个数据包,因此显示三个计时;如果你给traceroute选项,-q
你可以控制发送的数据包数量:
> [mrozekma@etudes-2 ~] % traceroute -q 1 etudes-1
traceroute to etudes-1 (192.168.0.10), 30 hops max, 40 byte packets
1 etudes-1 (192.168.0.10) 0.177 ms
答案2
Traceroute 显示的主机不是服务器,而是路由器。 Traceroute 显示了知识产权从拍摄此快照的人的计算机路由到维基百科服务器。您引用的 HTTP 描述着眼于更高的级别,其中所有路由都是透明的。
我认为解释这一点的最好方法是通过一个比喻。例如,HTTP 需要客户端和服务器之间有双向通信通道;该频道由传输控制协议。 TCP又建立在IP之上。 IP 的目标是将数据包从一个 IP 地址传输到另一个 IP 地址。 TCP 连接需要从客户端到服务器的 IP 数据包以及从服务器到客户端的 IP 数据包。
好的,现在将每个 IP 数据包视为一封信,您将其放入邮箱并由邮局运送到目的地。 Traceroute 显示信件从您的住所到收件人住所的旅程中的所有阶段:投递的邮箱、城镇邮局、地区分拣办公室、地区邮件中心等,直到信件到达收件人的住所邮件槽。这基本上就是您在查看 DHL/UPS/... 注册跟踪包裹的进度时所看到的内容。
在此示例中,前两跳称为….xs4all.net
;它们显然来自快照作者的 ISP。接下来的几行来自西伏纤维,经营国际运输线路。我不知道as30217.net
是谁;可能是数据中心的 ISP。最后两台机器来自维基百科。
IP 路由对于更高层协议(例如 TCP 和更不用说所有基于 TCP 构建的协议。其实traceroute还要玩一些技巧完全获取信息。