计算机的连接方式不断更新以适应不同的场景。

交叉线

当只存在两台计算机时,可以通过 交叉线直连,此时需要是同一网段

当发送数据时,会经过以下步骤

  • 知道对方机器的 IP 地址
  • 获取对方机器的网卡(MAC)地址发送数据
  • 接收方获取到数据后先经过网卡,再发送到上一层。

通过模拟器来感受一下发送数据的过程。

  • 当发送消息给目标机器时,只知道其 IP 地址,首先会通过 ARP 协议获取到目标机器的 MAC 地址。(协议发送给目标机器、目标机器回复)
  • 获取 MAC 地址后,通过 ICMP 将消息传递给目标机器。

同轴电缆

以上情况适用于两台计算机时,如果有更多的计算机要相互连接发送消息呢?

比较早一点的方式是使用 同轴电缆,左右两边有终结电阻,每个设备用 T型连接器 通过同轴电缆连接。

这种连接方式存在很多问题

  • 半双工通信且容易冲突,同一时间只允许往一个方向发数据,如果电缆上有数据,不会马上发送,会进行等待,等到空闲时发。
  • 不安全,发送数据时,电缆上的所有设备都会接收到,甚至是终结电阻,机器即使发现MAC地址不是自己,也无法回应。
  • 中间断了,整个瘫痪,如果第一台机器的连接线断裂了,那么受影响的机器不止连接线的那一台机器,其它的消息发送过去还会回弹,影响所有设备。

集线器

集线器 可以解决【中间断了,整个瘫痪】的问题,但它仍存在半双工通信和不安全的特点。

来模拟通过集线器,计算机0发送消息给计算机2的数据传递过程。

  • 只知道目标的 IP 地址,所以要通过 ARP 协议获取目标机器 MAC 地址,集线器将ARP协议会发送给所有计算机,所有计算机将自己的 IP 地址通过 ARP 协议再发送给计算机0。
  • 获取到计算机2的MAC地址后,发送带有源地址和目标地址的 ICMP 协议,此时集线器又将 ICMP 协议发送给所有计算机,计算机2是目标机器,其它机器不会接收。
  • 最后由计算机2发送ICMP协议回应计算机0,同样会发送给所有的机器,只有计算机0接收。

此时即使有集线器连接的某一端线路断掉,也不影响其它设备的数据传输。

网桥

可是集线器仍然没有解决,知道了每个设备的 MAC 地址,仍然要将 ICMP 协议给发送给所有设备的问题,网桥 便是进阶的解决方案。

在同一网段,网桥可以通过自学习得知每个接口那侧的mac地址,从而起到隔绝冲突域的作用,两侧互不干扰,可以各自发数据。

当计算机0发消息给计算机1时,

  • 计算机0发送 ARP 协议(带有源 IP 地址和目标IP 地址),此时会发送给所有计算机,但经过网桥0 的时候,网桥0通过IP地址记忆了计算机0在左侧。
  • 计算机1发送 ARP 协议告知 MAC 地址,同样会发送消息给所有计算机,网桥0通过IP地址记忆了计算机1也在左侧。
  • 计算机0发送ICMP协议(带有源 IP 地址和目标IP 地址)的时候,网桥0知道目标IP计算机1在左侧,不会向右侧发送ICMP协议。
  • 计算机1回应ICMP协议(带有源 IP 地址和目标IP 地址)时,网桥0知道目标IP计算机0在左侧,不会向右侧发送ICMP协议。

通过网桥的记忆功能,起到隔离冲突域的作用,减少 ICMP 协议的发送次数。

交换机

但是网桥只有两个接口,可以连接的设备很有限,交换机 的功能相当于集线器+多接口的网桥,它同样具有记忆功能,记录计算机的IP地址。

当计算机0要发数据给计算机1时

  • 先通过 ARP 协议(带有源地址和目标地址),获取机器的 MAC 地址,ARP协议要发送给所有的计算机,此时交换机0记忆了计算机0的IP地址
  • 计算机1是目标机器,发送自己的 MAC 地址给计算机0,交换机0知道计算机0在自己的左侧,所以这次的 ARP 协议不会发送到交换机1那一侧。并且此时计算机0记忆了计算机1的IP地址
  • 计算机0再发送 ICMP 协议给计算机1时,交换机0也不会将 ICMP 协议发送到交换机1那一侧,因为它知道目标机器计算机1在自己的左侧。
  • 同样计算机1再回应 ICMP 协议时,也不会向交换机的右侧发送数据。

交换机可以全双工通信,两侧可以互发消息,一侧故障不影响其它机器,并且具有记忆功能,减少 ICMP 协议误发的可能性。

路由器

如果全国甚至全世界的机器都通过交换机连接的话,因为交换机不能跨网段使用,所以不仅 IP 地址不够用,并且 ARP协议要发送全国至全世界,仍然是不安全的。

路由器 就成了这些问题的终极解决方案,路由器是跨网段使用的,可以隔绝广播域,想要使用路由器,需要配置路由器对应测的接口IP地址,并在每台计算机上配置网关。

主机发数据之前,首先会判断目标主机的ip地址和它是否在同一个网段

  • 在同一个网段:ARP,通过交换机/集线器传递数据
  • 不在同一个网段:通过路由器转发(网关 gatway)

计算机0想要发消息给计算机3

  • 因为已经跨网段,所以目标IP地址变成了网关的IP地址,此时发送 ARP 广播,是为了获取网关的 MAC 地址
  • 获取网关的MAC地址后,发送 ICMP 协议,经过交换机将消息发送给网关
  • 网关发现目标IP地址是右边的网段,右边的网关向右边经过交换机发送 ARP 广播,找寻目标IP地址机器的 MAC 地址
  • 找到目标IP的 MAC地址后,右边的网关发送 ICMP 协议给目标机器
  • 目标机器发消息经过右边交换器发送路由器,路由器经过左边交换机发送给源机器

总结

  • 交叉线适合两台计算机直连
  • 同轴电缆半双工通信、不安全、中间断了整个瘫痪
  • 集线器一个断了不会影响其它,仍然是半双工通信且不安全
  • 网桥具有记忆功能,可以记忆计算机的IP地址
  • 交换机相当于具有集线器+多接口的网桥,但仍然不能够跨网段
  • 路由器有记忆功能、可以跨网段

以上就是 计算机的六种连接方式 , 更多有关 前端网络协议 的内容可以参考我其它的博文,持续更新中~侧发送ICMP协议。

  • 计算机1回应ICMP协议(带有源 IP 地址和目标IP 地址)时,网桥0知道目标IP计算机0在左侧,不会向右侧发送ICMP协议。

一颗冰淇淋
170 声望18 粉丝

开心学前端 : )