写点什么

【翻译】数据包的旅程 - 关键角色

用户头像
luojiahu
关注
发布于: 22 小时前
【翻译】数据包的旅程 - 关键角色

原文链接

上一篇翻译


互联网将数以十亿计的设备连接在一起,创造了一个世界范围内的网络的网络。


下面讨论互联网中的几个关键部分,以辅助对数据包在互联网中如何传递进行更好的了解。

主机 - Host

host 表示互联网中的任何终端设备。任何流量的发起方或者流量传输的终端都可以被视作 host.


最普通的例子便是个人计算机。如今,有更多新的形式,例如:智能手机,智能电视,智能手表,部分汽车,甚至部分电冰箱等。


host 通过运行软件实现与终端用户的交互,同时完成通过传输介质发送数据的职责。因此,host 的职责跨越了 OSI 模型的所有七层。



在典型的计算机网络通信模型中,通信的双方通常被分别称作客户端(client)和服务端(Server)。


客户端发起请求,期望获取数据或者服务;而服务端接收并处理请求,并且返回客户端所需要的数据或者服务。


需要注意的是,这种角色划分是相对的。


例如,在浏览网页时,笔记本电脑承担客户端的角色,而 Web Server 承担服务端的角色;而当 Web Server 下载软件更新时,其本身则是客户端,而更新服务器为服务端。

网络 - Network

Network 由两个或者更多相互连接的设备构成,这些设备通常要么共同完成职责,要么处于同一个物理位置。Network 可以以不同的形式存在:


  • 处于同一间教室中的计算机

  • 家庭中由多台笔记本、智能手机、打印机组成的网络

  • 提供 wifi 的咖啡店,所有连接至这个 wifi 的设备构成了一个网络

  • 大型公司中可能会存在多个网络,通常按照工作角色的不同划分。例如,会计师属于一个网络,而所有工程师属于另一个网络


根据组网目的的不同,网络中的设备可能会与同一个网络中的其他设备进行通信,也可能会与其他网络中的设备通信。


互联网可以简单理解为一系列相互连接(Inter-connected)的网络(networks).

交换机 - Switch

交换机是一种主要负责实现网络内部通信的网络设备


在 OSI 模型中,交换机工作于 Layer 2,这意味着交换机只会解析到数据包中的 Layer 2 包头。Layer 2 包头包含了一跳(hop to hop)中数据传输所需要的必要信息,例如源端和目标端的 MAC 地址。



交换机会维护一个 MAC 地址表,主要映射接入交换机的 MAC 地址和设备接入端口之间的关系。典型的交换机有多个端口,从 24 到 48,96 或者更多。


MAC 地址表主要通过接收到的数据中的源端 MAC 地址进行填充


在转发数据帧时,交换机通过查找 MAC 地址表来决定需要转发的端口


如果交换机收到一个数据帧,并且不知道其目的 MAC 地址的位置,则会向所有端口都进行复制发送(除了接收到的端口)。

路由器 - Router

路由器的主要职责是实现网络间的设备通信。路由器在每个接入其的网络上都创建出了一个边界。


路由器工作在 OSI 模型的 Layer 3. 这意味着路由器会解析到 Layer 3 的报文头。Layer 3 报文头包含着实现端到端(end to end)数据传输所需要的信息,例如源端和目的 IP 地址。



在上面的图片中,路由器 R1 和 R2 隔离开了三个不同的网络(11.11.11.x,22.22.22.x 和 33.33.33.x)。R1 的右端接口和 R2 的左端接口处于同一网中。


位于 11.11.11.x 网络中的终端要与位于 33.33.33.x 网络中的设备通信,则必须首先将数据发送给 R1,R1 将数据发送给 R2,然后 R2 再将数据发送给目标设备。


路由器通过维护**路由表(Routing Table)**实现其主要功能。路由表包含着到达所有网络的路径信息。这些路径被称作路由信息,每条路由信息都包含一个 IP 网络,和一个到达目标设备路径上路由地址或路由接口。


路由表的填充有多重实现方式。


需要记住的是,从路由器的角度看,路由表是所有存在的网络的映射关系。如果一个路由器收到一个发送到未知网络的数据包,该数据包将会被丢弃。

地址解析协议 - Address Resolution Protocol, ARP

前面讨论了 MAC 地址和 IP 地址分别是属于 L2 和 L3 的寻址体系。


ARP 协议实现对 L2 和 L3 寻址体系的连接。



一般来说,通信双方在通信时已经知道了对方的 IP 地址。这可以通过多种手段实现,如:用户手动提供,DNS 解析等等。这里实际如何实现无关紧要。


但是,一般通信开始时,目标 MAC 地址是未知的。host 会通过 ARP 协议寻找恰当的 MAC 地址。换句话说,ARP 协议通过已知的 IP 地址,来找到未知的 MAC 地址。找到后,会添加到 ARP 表中,这个表维护着 IP 地址和关联 MAC 地址的映射关系。


通过下图来详细讨论 ARP 协议的工作过程。



在上图中,有紫色、灰色、红色三个网络。下面通过两个场景:网络内部通信和跨网络通信来讨论 ARP 协议。


当 Client 需要与紫色 Server 通信时,通过已知的紫色 Server IP 地址,可以得知该 Server 位于当前网络中。当客户端试图与位于同一个网络中的服务端通信时,客户端通过发送 ARP 请求来获得服务端的 MAC 地址


ARP 协议使得 Client 可以完成如下的 Layer 2 包头填充:



当 Client 需要与红色 Server 通信时,通过已知的红色 Server IP 地址,可以得知该 Server 位于外部网络中。此时,必须首先将数据包发送到最近的路由器 (或默认网关)。


通常,Client 都会配置一个默认网关,在上图中是 R1. 当客户端试图与位于外部网络中的服务端通信时,客户端通过发送 ARP 请求来获取默认网关的 MAC 的地址


此时,ARP 协议使得 Client 可以完成如下图所示的 Layer 2 包头填充:



总结 ARP 的功能:


  • 当与同一网络中的设备通信时,通过 ARP 获取该设备的 MAC 地址

  • 当与外部网络中的设备通信时,通过 ARP 获取默认网关的 MAC 地址


需要记住的是,Layer 2 负责数据包的传递,其主要目标是实现每跳(hop to hop)的传递。Layer 3 则负责端到端(end to end )的数据传递,并不能实现将数据通过网卡进行发送和接收。ARP 的角色是:基于 L3 包头,帮助客户端创建正确的 L2 包头,从而实现 hop to hop 的数据传递。


此外,所有基于 IP 地址实现通信的设备,必须具备通过 L2 实现 hop to hop 数据传递的能力。因此,所有使用 IP 地址的设备都必须使用 ARP 来填充 MAC 地址。从而,所有 L3 设备都必须维护一个 ARP 表(ARP Table)。

总结

本文和上一篇文章介绍了一系列概念(大部分都可以独立成书),主要是为了这一系列文章的后续内容进行铺垫。在进一步讨论之前,需要比较好地掌握这些概念。


我们论了 OSI 模型中每一层的主要职责:


  • OSI Layer 1: 传输 0 和 1 组成数据的物理介质

  • OSI Layer 2: 实现 hop to hop 的数据传递,使用 MAC 地址寻址

  • OSI Layer 3: 实现 end to end 的数据传递,使用 IP 地址寻址

  • OSI Layer 2: 实现 service to service 的数据传递,使用端口号(Port Numbers)寻址


同样,还讨论了数据包在互联网中传递过程中的关键角色:


  • 交换机,主要负责网络内部通信,工作于 Layer 2.

  • 路由器,主要负责网络之间通信,工作于 Layer 3.

  • APR 协议通过已知的 IP 地址解析未知的 MAC 地址。


我们还讨论了三种不同的映射表:


  • 交换机使用 MAC 地址映射表,维护交换机端口和 MAC 地址之间的映射关系

  • 路由器使用路由表,维护网络和路由接口或者下一跳地址间的映射关系

  • 所有工作于 L3 的设备都需要维护一个 ARP 表,维护 IP 地址和 MAC 地址之间的映射关系


如果上述任何一个关键概念不清晰,请重新阅读本篇和上篇文章。


发布于: 22 小时前阅读数: 6
用户头像

luojiahu

关注

喜欢思考组织、过程、产品的后端开发 2017.01.08 加入

还未添加个人简介

评论

发布
暂无评论
【翻译】数据包的旅程 - 关键角色