需要帮助了解数据包如何在互联网上传播

网络工程 路由 ip 网络 MAC地址 互联网
2021-07-26 03:01:15

我最近在一份新工作中一直在学习网络,并且我做了一个关于我迄今为止学到的知识的演讲。当我在描述数据链路层和网络层之间的关系时,我提到数据链路处理跳数,而网络是端到端的。完成后,他们向我提出了一些问题,其中一个问我数据链路层是否处理通过 Internet 传输的数据包,我回答是。他们告诉我我错了,但我没有问他们正确的答案,因为我很紧张,而且我真的没有想过要问。但是现在我已经重新开始研究这个主题,我开始感到困惑,我希望有人可以为我解决这个问题。我错了吗?或者我解释得不好?到目前为止,这是我的知识:

该数据包带有标头,其中包含有关数据包交付等的信息。IP 标头具有数据包的源 IP 地址和目标 IP 地址,用于通过 Internet 获取数据包。另一方面,第 2 层帧头(以太网或其他)具有源的 MAC 地址(此时将是原始主机)和数据包要发送到的下一个路由器的 MAC 地址(使用 ARP )。IP 数据包是单独留下的,但在每一跳中,帧头都被改写为新的源(路由器)MAC 地址和新的目的地(下一跳)。这在网络内重复进行,直到到达该网络内的网关,然后将数据包转发到 ISP/提供商的网络。同样的事情发生在 ISP/提供商的网络中,在使用 ARP 的 IP 标头时,通过数据链路层发送数据包(帧)。像 BGP 这样的 EGP 用于跨网络,而 IGP 用于网络内。虽然 IP 地址表示最终目的地,但即使在互联网上,MAC 地址也用于在路由器之间传输数据。

这对我来说很有意义,因为互联网是物理连接的,而在物理连接方面,MAC 地址是王道。但是在被告知我错了之后,我有点失去了信心,现在我只是让自己感到困惑。当数据从本地网络发送到互联网时,是否使用了不同的协议或方法?MAC 地址是否仅在网络内相关?非常感谢为我解决这个问题的任何帮助。谢谢!

3个回答

您需要查看各个层,因为每个层都有自己的使命。

正如您所写的,网络层是端到端的。它的地址具有全局意义(在整个网络范围内)。因此,网络层数据包具有不变的源地址和目标地址。NAT 将其搞砸了,但这可以看作是转换层或上下文更改。

但是,网络层的任务是使数据包可沿网络中的跃点路由。它实际上并没有移动数据。相反,它使用数据链路层将数据从当前段内的一个节点获取到另一个节点

数据链路层的任务是跨本地段移动数据(帧) - 或者从全局角度来看,跳到跳。该段可以容纳相当多的节点,因此您需要一种方法来区分或寻址它们 - 这就是 MAC 地址发挥作用的地方(对于以太网和其他基于 MAC 的段)。网络层数据包封装在数据链路层帧中,寻址到下一跳的“硬件”地址(该段本地)并发送。请注意,硬件/MAC 地址仅在其段范围内有意义。

为完整起见,数据链路层实际上也不移动数据。相反,它使用物理层将帧的位从一个位置移动到另一个位置,一次一个链接(因此您可能会说物理层是链接到链接)。

使用潜在的许多物理层链路中的哪一个(在交换机上)由数据链路层(交换)控制 - 在交换机上,目标 MAC 地址用于选择端口转发。为此,交换机查询其 MAC 表(也是源地址表SAT,或内容可寻址存储器CAM)。(在具有多点连接或中继器的原始以太网中,帧被转发到所有节点,并且被所有节点简单地忽略,但被寻址的节点除外。)

在段的末尾,从帧中提取数据包并通过下一段转发到下一跳。在该跳之外使用哪个段由网络层的路由控制,即。当前跃点/路由器/网关的路由表。

最后,跨所有跃点,网络数据包被传送到其目标地址 - 瞧。

......作为其他优秀答案的后记......

当我们查看在互联网上传输多跳的数据包时,IP 地址“保持不变”,MAC 地址“每跳变化”,或者考虑路由器从以太网帧中解包 IP 数据包,然后重新包装下一段,我们是鸟瞰整个企业的目的。

但是在 IP 网络中,所涉及的机器都没有这种观点IP 设计的基础之一是每个数据包在每一跳都有一个路由决策,这些决策彼此完全独立。

因此,当数据包到达某个以太网接口上的路由器时,动作是:

  • 接收帧
  • 提取数据包
  • 决定做什么
    • 丢弃数据包,或
    • 消费包,或
    • 转发数据包

这发生每一跳的每一个数据包

(离题为惊人的规模:互联网流量应该是大约150 PB/月,即 150 x 10 15,在说明性的 1000 字节/数据包和 5 跳/数据包,将是大约 285 Mevent/秒。)

细节更精致。

(将我的描述限制为到达和离开以太网接口的数据包。)

  1. 接口硬件检查帧的完整性(例如以太网 FCS)并在错误时丢弃它
  2. 接口硬件检查目的MAC地址,如果不是这个MAC地址,则丢弃该帧
  3. 它检查内容类型并丢弃该帧,如果它是此路由器不处理的类型
  4. 假设它是一个 IP 负载
  5. 它解开有效载荷 IP 数据包
  6. 它检查标头校验和并在错误时丢弃
  7. 它检查目标 IP 地址,如果此路由器在本地使用它
  8. 假设其他主机(和 TTL > 1)
  9. 检查路由表
  10. 假设它用于通过以太网接口连接的另一个网络
  11. 进行适当的更改(减少 TTL、片段、重新计算标头校验和)
  12. 从路由表/缓存/ARP中查找目标MAC地址
  13. 将 IP 数据包包装在以太网帧中并传输

在步骤 2 中,传入帧的目标 MAC 地址是传入接口的 MAC 地址;在第 13 步,输出帧将路由器的输出接口 MAC 地址作为源,下一跳路由器的 MAC 地址作为目标。

当然,路由器的操作系统很可能会在此过程中添加各种安全检查、日志记录和计费。

MAC 地址仅在具有该 MAC 地址的主机所在的 LAN 上可见或相关。路由器剥离并丢弃第 2 层帧,丢失任何第 2 层信息,包括 MAC 地址。

请记住,并非所有第 2 层协议都使用 MAC 地址,有 48 位和 64 位 MAC 地址,这取决于所使用的 IEEE LAN 协议(使用 MAC 地址的是 IEEE LAN 协议)。其他第 2 层协议,尤其是那些用于 WAN 连接的协议,可能不使用 MAC 地址。例如帧中继使用 DLCI,ATM 使用 VPI/VCI,PPP 和 HDLC 并不真正使用寻址等。

第 3 层协议,如 IP,用于在网络(互联网,因此名称:Internet 协议)之间传送数据包,但第 2 层协议用于在同一网络上传送帧。