在探讨了 OSI 模型的组成以及将数据包从一台主机传输到另一台主机时所波及的一些要害参与者之后,咱们最终能够探讨容许主机间通信的具体性能。
互联网的核心思想是两台计算机能够互相通信。只管很少发现两台主机间接相互连接的状况,但如果理解它们连贯在一起会产生什么对于理解多台主机通过交换机或路由器进行通信时产生的所有其余事件至关重要。
因而,本文将重点介绍主机到主机的通信,以及该过程中波及的每个独自步骤。
主机到主机通信
因为图中没有路由器,咱们晓得所有通信都产生在同一个网络中——因而,主机 A 和主机 B 都配置了属于同一网络的 IP 地址。
每个主机都有惟一的 IP 地址和 MAC 地址。因为每个主机也是一个 L3 设施,所以每个主机都有一个 ARP 表。目前,他们的 ARP 表是空的。
主机 A 首先为主机 B 生成一些数据。主机 A 晓得此数据的最终目的地将是 IP 地址 10.10.10.20(主机 B)。主机 A 也晓得它本人的地址 (10.10.10.10),因而可能应用所需的源和指标 IP 地址创立 L3 报文头。
但正如咱们之前理解到的,数据包传递是 L2 的工作,因而只管这些主机彼此间接相连,但必须创立 L2 报文头。
L2 报文头的源 MAC 地址将是主机 A 的 MAC 地址 (aaaa.aaaa.aaaa)。L2 报文头的目标 MAC 地址应该是 Host B 的 MAC 地址,但此时 Host A 在其 ARP 表中没有 Host B IP 地址的条目,因而,不晓得 Host B 的 MAC 地址。
因而,此时主机 A 无奈创立正确的 L2 报文头来将数据包传送到主机 B 的 NIC。主机 A 必须发动 ARP 申请能力获取失落的信息:
ARP 申请是一个繁多的数据包,它实质上是在询问:“如果有人领有 IP 10.10.10.20,请将你的 MAC 地址发送给我。”
请记住,此时主机 A 不晓得主机 B 是否存在。实际上,Host A 并不知道它间接连贯到 Host B。因而,这个问题是针对链路上的每个人的。ARP 申请作为播送发送 ,如果有其余主机连贯到此链接,它们也会收到 ARP 申请。
另外请留神,主机 A 在 ARP 申请自身中蕴含其本人的 MAC 地址。这容许主机 B(如果存在)轻松地将申请的信息间接回复给主机 A。
接管 ARP 申请容许主机 B 学到一些货色。即,该主机 A 的 IP 地址是 10.10.10.10,相干的 MAC 地址是 aaaa.aaaa.aaaa。请留神,此条目当初已增加到主机 B 的 ARP 表中。
主机 B 能够应用此新信息间接响应主机 A。ARP 响应作为单播音讯发送 ,间接寻址到主机 A。如果此链路上有其余主机,它们就不会看到 ARP 响应。
ARP 响应将包含主机 A 申请的信息:IP 地址 10.10.10.20 由 MAC 地址为 bbbb.bbbb.bbbb 的 NIC 提供服务。主机 A 将应用此信息填充其 ARP 表:
填充主机 A 的 ARP 表后,主机 A 当初能够胜利地将正确的 L2 报文头放在一起,并将数据包发送到主机 B。
当主机 B 获取数据时,它将可能毫不费力地做出响应,因为它的 ARP 表中曾经有主机 A 的映射。
总结
同样,很少发现两台主机间接相互连接。然而理解从一台主机到另一台主机的数据包须要什么是理解交换机如何实现多主机通信或路由器如何实现多网络通信的要害。这两者都将是本系列下一篇文章的主题。
须要留神的要害是主机不晓得它是连贯到交换机还是间接连贯到另一台主机。在这两种状况下,主机在尝试与另一个主机通信时都将遵循下面概述的流程。
翻译
Host to Host Communication