计算机发送的网络包将通过集线器、路由器和其他设备转发,最终到达目的地。这些设备只检查包头的控制信息,然后将包发送到下一个目的地。在本章中,我们将探索一个网络包体验集线器、交换机和路由器最终进入互联网的过程。
在此之前,我们先来看看常说的网线是什么。 上一章说我们的网络包是层层包装的,最后是网卡的PHY通过模块将包转换成电信号RJ-接口进入双绞线。RJ-45接口就是这个东西 但当信号到达集线器时,主要原因是能量衰减和噪声的影响。
电信号在传输过程中会因电阻而失去能量,传输时正方波信号的拐角会变得光滑。
同时,噪声也会导致波形失真。噪声是网线周围的电磁波。我们在高中物理学过。当电磁波遇到金属导体时,切割磁感应线会产生电流。这种电流与我们传输的电流混合,导致信号失真。这就是噪声的影响。
双绞线的设计是为了抑制噪声的影响而发明的。双绞线的螺旋结构使电磁波切割磁感应线时产生的两个电流方向相反,从而抵消噪声电流,抑制噪声。
当信号到达集线器时,它将被集线器广播到整个网络。集线器内部如图所示
可以看出,集线器的每个接口后面都有网卡PHY该模块具有相同的模块功能。信号到达集线器模块后,将进入中继电路。中继电路的功能是将输入信号广播到所有集线器的端口。接下来,信号从所有接口流出,集线器的所有设备。
集线器会原封不动地广播信号,所以即使要广播的信号实际上受到噪音的干扰,也会原样广播。
交换机和集线器是不同的设备。交换机不仅仅是让信号流过,而是接收信号并将其还原为数字信息,然后转换为信号发送。
交换机也有多个端口,每个端口都有一个端口PHY模块和MAC模块,其中PHY当时模块的工作与集线器相同,信号将被接收。但是之后,PHY该模块将接收到的信号转换为用格式,然后转发给MAC模块。MAC模块将信号转换为数字信息,然后通过包的末尾FCS如果发现错误,说明这个包的数据坏了,丢弃包。假如没错,就存放在缓冲区。
这部分操作和网卡一样。但是网卡会在接下来检查MAC头部的MAC确认这个包是不是发给自己的,不是丢弃的。但是交换机不在乎。
交换机的内部结构如图所示
将包装存储在缓冲区后,将查询交换机MAC地址表了。MAC地址表主要包括两个信息,一个是设备MAC地址,一个是去设备需要去的端口。MAC地址和端口一一对应。 比如我们收到一个包,这个包MAC储存在头部的接收方MAC地址为00-02-B3-1C-9C-F9.如果与图中的第三行匹配,交换机将将包转发到第8号端口。
MAC地址表也需要维护,地址需要不断更新和删除。交换机会在收到包时分析MAC头部,如果包的发送者MAC该交换机的地址不存在于此交换机中。MAC在表中,发送方将被送到表中MAC表中记录了接收此包的地址和端口号。与此同时,某个端口对应的设备可能会被移走。比如我把笔记本从会议室拿走带到别处,这个时候MAC地址无效。因此MAC地址表中的记录不是永久有效的,每隔一段时间就会自动删除。
同时,如果一个包的目标是MAC这个交换机的地址MAC地址表上找不到记录。此时,交换机将将数据包广播到所有端口,以便如果目标设备存在并回复数据包,交换机可以将其地址写入地址表。
如果数据包发送和接收方MAC地址是一样的,交换机会丢弃这个包,因为很有可能这个包实际上不是发给自己的,不需要转发,如下图所示
在这里,交换机可以支持全双工模式,提高传输效率,而集线器不能。
网络包现在通过集线器和交换机到达路由器,并转发到下一个路由器。转发的工作原理与交换机相似,但具体过程仍然不同。因为路由器是基于的IP协议设计,交换机设计为以太网。
路由器的结构如图所示
路由器大致可分为两部分:转发模块和端口模块,转发模块负责判断包的转发目的地,端口模块负责包的收发操作。
转发模块中有一个路由表,在转发过程中进行查询。路由表长是这样的
路由器端口模块可以安装许多不同的通信技术,而不仅限于以太网,例如ADSL,FTTH等等。每个端口都有自己的MAC地址和IP地址。
这是路由器接收包的过程,这里只介绍以太网端口。首先,路由器将接收网络包和端口PHY模块和MAC模块将信号转换为数字信息,然后通过包的末尾FCS检查错误。如果有问题,请丢弃。如果没有问题,请再次检查MAC头部接收器MAC地址看看是不是发给自己的。 如果是,放入缓冲区,否则会丢弃包。这与交换机不同,交换机不需要检查MAC头部只需要无脑转发。
成功收到包后,这个包现在是MAC头部完成使命,路由器将丢弃包开头MAC头部。接下来,路由器会查询MAC头部后边的IP找到头部信息IP头部接收方IP地址,然后查看路由表,通过计算路由表中子网的掩码和目标地址,找到最匹配的行,将网络包裹到网关栏对应的行IP地址转发。 如果没有匹配项目,路由器将包转发给默认网关,即路由表中子网的掩码为0.0.0.默认路由记录0。这部分操作与计算机网卡相同。
接下来是包的发送部分,这一步和协议栈IP模块发送包的过程大致相同。我们需要重新加入MAC头部,这个MAC头部中目标MAC地址应为路由表匹配栏中的网关项目IP对应的MAC地址。为此我们还需要通过ARP协议查询IP对应的MAC地址(当然,路由器也有ARP如果找不到缓存,会发送ARP请求)。将得到的MAC这个新的地址写在地址上MAC头,大功告成。
当然,也有可能网关内容是空的。此时,表示已到达接收方IP地址对应的以太网不需要转发到下一个路由器。IP地址是下一个转发目标。
接下来,网络包将被转换为电信号并通过网络端口发送。由于接收方的原因,发送的网络包将通过交换机到达下一个路由器MAC地址是下一个路由器的地址,因此交换机会根据这个地址将包传输给下一个路由器。下一个路由器将将包转发给下一个路由器。层层转发后,网络包到达最终目的地。
通过路由器包的转发过程,我们可以看到路由器和交换机之间的关系。IP协议与以太网协议的关系。路由器更换收到的包MAC头部委托交换机转发。这种委托只需要交换功能将包传输到下一个路由器。
IP(路由器)负责将包发送给通信对象的整个过程,以太网(交换机)负责将包传输到下一个路由器的过程。当然,以太网可以被无线局域网、互联网线路等任何通信技术所取代。
(1) 地址转换功能 由于接入互联网的设备越来越多,如果每个设备都分配一个独立的设备IP地址,那么IP地址很快就会用完。解决这个问题的关键是固定地址的分配。
对于两个局域网,由于两个局域网完全独立,在这种情况下,两个网络中的设备之间不会有数据包流动,因此两个网络中的设备是相同的IP地址也没关系。。局域网内部设备无需分配独特的地址,大大节省了IP地址空间。
这个可重复的地址被称为私人地址,相对而言,是唯一的IP地址称为公共地址。私人地址的命名范围如下:
这些地址在公共地址中尚未分配,可用于私人地址。该范围的地址与其他局域网重复无关。
如果局域网中的设备需要访问外网怎么办?我不能在这个私人地址上发送网络包,对吧?此时,路由器的地址转换功能将派上用场。
前面说过,局域网内的设备使用私有地址,可重复。但是路由器是用来介入互联网的设备,路由器的端口是公共的IP地址的。当所有局域网设备都要访问外网时,发出的网络包将被路由器重写并改为路由器IP随机分配的地址和空闲端口。这样,路由器就用于局域网中的设备IP地址发送消息。由于使用的端口号不同,同一局域网的不同设备也很容易区分。同时发送数据包时不会发生冲突。
同时,路由器将维护地址和端口对应的表格,具体长度如此
如果有外部设备将数据包发送到局域网内部设备,路由器将根据端口号查看表格,找到相应的私人地址,重写数据包头后,可发送到设备。
通过这种机制,具有私人地址的设备也可以访问互联网。从互联网的一端来看,实际的通信对象实际上是路由器。
(2) 包过滤功能
路由器的过滤过程原理非常简单,即当路由器准发包时,会根据MAC头部,IP头部,TCP头部内容,根据事先设定的规则决定转发包,或丢弃包。大多数防火墙都使用这种机制来防止入侵。