数据包从我的计算机到 Web 服务器再返回的流程

数据包从我的计算机到 Web 服务器再返回的流程

我想知道我的数据包是如何从我的计算机传输到 Web 服务器的。请耐心阅读这篇长文。我会提出很多问题,如果您回答了其中任何一个问题,我会点赞。我连接到 LAN,路由器通过 DHCP 为我提供一个 IP 地址。因此,当我打开 WiFi 时,我会向端口 67 发送一个 UDP 广播。DHCP 服务器接收广播并为我分配一个 IP 地址和 DNS 服务器地址。到目前为止我是否正确?现在我打开浏览器并输入“www.cnn.com”。浏览器进行 DNS 查找并找到 cnn.com 的 IP 地址。然后它将数据包发送到此地址。计算机查看目标 IP 地址并查看其路由表。它发现目标 IP 地址不在 LAN 上。因此,它将数据包发送到默认网关(我的路由器)。路由器通常也提供 DHCP 服务。

Q1. 路由器连接到我的 ISP,并且具有 WAN IP 和 LAN IP。此 WAN IP 是否全局可见?或者路由器是否也是 ISP LAN 的一部分?

假设路由器具有全局可见的 IP 地址。此时,它应该将源 IP 地址更改为自己的 WAN IP 地址。路由器也有一个 WAN MAC 地址。它也会更改源 MAC 地址吗?我假设每个没有全局可见 IP 地址的后续路由器都会将源 IP 地址更改为自己的 IP 地址。我对此有点困惑。

Q2. 假设数据包以某种方式到达服务器,并且我收到了回复。LAN 路由器如何知道这个数据包是发给谁的?它使用 NAT 来找出答案吗?它使用 MAC(如果它没有更改上面的 MAC)吗?ARP 何时发挥作用?

我知道有两种类型的交换机(第 2 层和第 3 层)。典型的路由器(Linksys 等)是哪种类型的交换机?

我知道我问了太多问题,而且很多/所有问题可能都是菜鸟/愚蠢的。但我真的想知道答案。如果我在描述系统时遗漏了什么,请指出。如果您能提供博客/文章等的链接,我将不胜感激。

答案1

我会尝试一下...

到目前为止,您的第一段听起来是正确的(尽管有不同程度的细节,例如“浏览器执行 DNS 查找”,其中涉及到相当多的系统)。

问题 1:您的 WAN IP 是通常全球可见,但有些情况下,您和互联网之间实际上存在另一个 ISP 形成的 LAN。例如,当您使用手机连接时,许多 ISP 会实施运营商级 NAT,因此许多手机共享同一个公共 IP。

您的第二段不正确。NAT 设备(例如您家里的盒子)会将您的私有局域网 IP 地址更改为您的公共广域网地址,但所有后续路由器都不会更改源 IP 地址,因此您的数据包到达 Web 服务器时,其源字段中会包含您的公共广域网地址。路由器之间更改的是源/目标 MAC 地址。每个路由器都会将目标 MAC 地址设置为下一个路由跳数。

Q2:您的局域网路由器有一个 NAT 表。此表包含路由器用于发送请求数据包的源端口和相应的内部 IP 地址。回复数据包将以该端口号作为目标端口。然后,局域网路由器将知道此数据包属于哪个内部客户端,将目标 IP 替换为您的内部局域网 IP,将目标端口替换为您的内部设备用于启动连接的源端口。ARP 可用于查找同一局域网中设备的 MAC 地址。路由器询问“嘿,我有一个 192.168.1.7 的数据包,我知道这个 IP 位于该局域网的某个地方,它是谁?请告诉我您的 MAC 地址” - 然后设备将发送包含其 MAC 地址的 ARP 响应数据包。

答案2

由于相关问题的细节很多,这个问题很难完全回答;不过,关于这个主题有很多很棒的书。对我最有帮助的是Doug Comer 的 TCP/IP 网络互联;我用我获得的知识(以及我的雇主对它的重视)支付了该书数千倍的费用。如果你当地的图书馆有一个不错的技术部门,你应该能够找到一本,即使它已经过时了(这应该没有关系……即使是旧版本也很出色)。

具体回答你的问题:

  • 问题 1

    • 以太网-> 以太网 MAC 地址具有链路范围,并且对于通过网络的每个不同的路由以太网链路都是不同的。目标 MAC 地址来自 ARP;源 MAC 地址(通常)来自刻录到以太网 NIC 硬件中的地址。
    • 知识产权-> 公共 IP 地址(例如来自您的 ISP 的 IP 地址)具有全球范围并且不应改变,除非涉及管理问题(例如 NAT 实施)。
    • NAT-> 您的本地 FW 或 NAT 路由器通常有两个接口,一个接口具有本地(私有)IP 地址,另一个接口具有全局(公共)IP 地址。当流量通过该 NAT 路由器时,数据包中的 IP 和 TCP 会话信息将被重写并在连接状态表中进行跟踪。
  • 第二季度

    • 地址解析协议-> 当设备具有目标 IP 地址,但没有与该 IP 地址关联的当前以太网 MAC 地址时,使用 ARP。
    • NAT-> 您的 NAT 路由器知道如何传送返回流量,因为它会检查 IP / TCP / UDP 会话信息(例如 TCP 或 UDP 端口号)并将其从转换后的公共地址重新映射回您分配的私有地址(在您的 LAN 上)

相关内容