内容纲要

示例:从 Internet 下载网页

让我们观察一下第一个 TCP / IP 事务,它们使本地主机能够从 Internet 下载网页。在继续本示例之前,您应该熟悉本地网络 TCP / IP 通信以及 DNS 服务器和 NAT 的工作方式。

  1. 在浏览器中输入网站
  2. DNS 客户端创建一条消息
  3. 创建一个数据报
  4. 创建一个数据包
  5. 确定目标 MAC 地址
  6. 创建并传输一个帧
  7. NAT 和转发帧到 Internet
  8. 将帧转发到 DNS 服务器
  9. DNS 服务器接收帧
  10. DNS 转换并生成回复
  11. 将帧转发到本地路由器
  12. 本地路由器中的 NAT 转换
  13. 转发到 PC 的帧
  14. DNS 客户端提供 IP 地址
  15. HTTP 客户端创建消息

1 在浏览器中输入网站

在 PC 上打开 Web 浏览器并输入网站名称。

detailed_step_1.png

2 DNS 客户端创建一条消息

PC 中的 HTTP 客户端尝试从 www.website.com 生成一条请求 HTML 文件的消息。它需要在它生成的消息中提供目标 IP 地址,但没有它,所以它使用 PC 的 DNS 客户端来获取它。

DNS 客户端向传输层发送消息,请求为.com.com 提供 IP 地址。

detailed_step_2.png

3 创建一个数据报

所述传输层添加 UDP 包含源和目的地标题端口到该消息。

它会创建源端口号并将其分配给请求 IP 地址的 DNS 进程。在 “著名” 的 DNS 服务器端口号作为目的端口。生成的数据报然后被发送到网络层

detailed_step_3.png

4 创建一个数据包

网络层将包含源和目标 IP 地址的 IP 标头添加到数据报。

它将自己的 IP 地址添加为源,并将 DNS 服务器 IP 地址添加为目标。PC 知道 DNS 服务器的 IP 地址,因为路由器在分配其本地 IP 地址时向 PC 提供它。生成的数据包被发送到链路层

detailed_step_4.png

路由器为 PC 提供了默认网关(本地网络和 Internet 之间的网关,在这种情况下是路由器)和 DNS IP 地址(当它分配了本地 IP 地址时)。

5 确定目标 MAC 地址

确定此数据包的目标 IP 地址的链路层不在本地网络中。因此,它需要将数据包发送到其默认网关,在本例中为路由器。

现在我们有一个问题。链路层不能创建帧,因为它不知道默认网关的 MAC 地址。地址解析协议(ARP)是为了解决这个问题而创建的。

detailed_step_5.png

6 创建并传输一个帧

使用 ARP 获取其默认网关的 MAC 地址后,链路层可以完成 DNS 事务的

它将源 MAC 地址和目标 MAC 地址添加到数据包以创建一个帧。源 MAC 地址是它自己的,目标 MAC 地址是默认网关的地址。

这个帧然后被发送到物理层传输帧的比特。

detailed_step_6.png

7 NAT 和转发帧到 Internet

路由器从 PC 接收帧,打开数据包并确定目标 IP 地址不在本地网络中,因此它必须将此帧转发到 Internet。

路由器创建一个新的网络地址转换(NAT)条目,并将本地网络 IP 地址更改为其公共 Internet IP 地址。它还使用相同的 NAT 表条目来更改源端口,以便路由器可以确定将传入的数据包发送到哪个主机和主机进程。

路由器必须将源 MAC 从其本地网络 MAC 更改为其广域网(WAN)或互联网 MAC。目标 MAC 地址也需要更改为路由器的默认网关,本例中是 ISP 的路由器。本地路由器引用其 ARP 表来获取 Internet 服务提供商(ISP)路由器的 MAC 地址。

本地路由器将这个新的帧转发给 ISP 的路由器。

detailed_step_7.png

8 将帧转发到 DNS 服务器

ISP 的路由器收到该帧并打开数据包以查找目标 IP 地址。它确定目标 IP 地址属于它的 DNS 服务器。路由器的网络层将分组发送回其链路层,以产生一个新的报头。

源 MAC 地址是它自己的,目标 MAC 地址是 DNS 服务器的地址。请注意,源 IP 地址和目标 IP 地址保持不变。

新的帧被发送到 DNS 服务器。

detailed_step_8.png

9 DNS 服务器接收帧

DNS 服务器的 PHY 接收这些比特并将该帧转发给链路层。

链路层找到它的 MAC 地址作为目的地,因此它将数据包转发到网络层。

网络层打开数据包并找到其 IP 地址作为目的地。它仍然需要关注消息,因此它将它转发到传输层。

传输层打开数据报并发现它正被发送到端口 53. DNS 服务器有一个进程在该端口上运行并监听流量,因此该消息被转发给它。

detailed_step_9.png

10 DNS 转换并生成回复

DNS 服务器确定 website.com 的 IP 地址并生成一个包含它的回复消息。该消息被发送回传输层。

传输层添加端口信息并创建数据报。

网络层添加 IP 信息并创建数据包。

链路层添加 MAC 信息并创建帧。

物理层将帧的比特传送给路由器。

detailed_step_10.png

11 将帧转发到本地路由器

ISP 的路由器收到该帧,找到其 MAC 地址,并将其发送到其网络层以确定目标 IP 地址。它发现数据包属于我们本地路由器的 IP 地址,所以它将数据包发送回其链路层。

链路层将新的源和目标 MAC 地址附加到数据包,然后将帧发送到本地路由器。

detailed_step_11.png

12 本地路由器中的 NAT 转换

当本地路由器从 ISP 的路由器收到数据包时,它会查询其 NAT 表以确定将其转发给哪个本地主机。它在翻译表中找到一个互联网目标端口号为 1 的条目。

将相应的本地 IP 地址和端口号代入将发送到本地网络的数据包中。

detailed_step_12.png

13 帧转发给 PC

新数据包被发送到路由器的链路层,其中添加了源 MAC 地址和目标 MAC 地址,从而创建了帧。

路由器通过查询 ARP 表来知道目的 IP 地址对应的目的 MAC 地址。

然后这个帧被发送到物理层以在网络上传输。

detailed_step_13.png

14 DNS 客户端提供 IP 地址

当帧到达 PC 时,消息被发送到 DNS 客户端。

该 DNS 客户端则提供 IP 地址 website.com 到 HTTP 客户端。

detailed_step_14.png

15 HTTP 客户端创建消息

现在 HTTP 客户端具有 website.com 的 IP 地址(130:27:45:69),它可以生成消息以下载该网站的 HTML 文件。

detailed_step_15.png

在此过程中,我们已经演示了 NAT 和 DNS 服务器功能。我们还展示了 MAC 源地址和目标地址如何随着节点的不同而变化,以及 IP 源地址和目的地址在源地址到目的地址之间(除了网络边界之外)保持不变。在这一点上应该理解下载此网页的其余 TCP / IP 通信。

发表评论

电子邮件地址不会被公开。 必填项已用*标注