《网络是怎样连接的》(二.2)_qq_38480311的博客-CSDN博客
本文主要取材于 《网络是怎样连接的》 第三章。
简述:本文主要内容是解释 通过网线传输出去的包是如何经过集线器、交换机和路由器等网络设备,最终进入互联网的。
信号从网卡发出会经过集线器,集线器会把信号广播至连到它的所有线路;信号从出发到集线器中间会有信号衰减和噪声,利用双绞线可以抑制噪声。经过集线器后会经过交换机,交换机的每个接口都相当于一块网卡,但是却没有MAC地址,交换机只将包转发到具有特定MAC地址的设备连接的端口。接下来,信号会经过路由器,路由器会通过端口将发过来的包接收进来,转发模块会根据接收到的包的IP头部中记录的接收方IP地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口。由于路由器端口支持多种网络协议,其发送时还需要根据包的长度判断是否分片。IP是负责通信发送到接收端的协议,以太网是负责每一跳的协议。为了解决IP地址不够的问题,一个私有网络对外只使用一个共有IP号,路由器具有地址转换功能可根据端口号找到私网内每一个设备。同时,路由器还具有包过滤功能来阻止非法入侵。
3.1 信号在网线和集线器中传输
网络包从客户端计算机发出之后,要经过集线器、交换机和路由器最终进入互联网。实际上,我们家里用的路由器已经集成了集线器和交换机的功能,像图上这样使用独立设备的情况很少见。不过,把每个功能独立出来更容易理解。
从网卡到集线器
信号衰减:
网卡中的PHY(MAU)模块负责将包转换成电信号,信号通过RJ-45接口进入双绞线,信号会通过网线到达集线器的接口,这个过程就是单纯地传输电信号而已。然而信号到达集线器的时候并不是跟刚发送出去的时候一模一样,集线器收到的信号有时会出现衰减(图3.3)。信号在网线的传输过程中,能量会逐渐损失。网线越长,信号衰减就越严重。
电信号的频率越高,能量的损失率越大。信号的拐角意味着电压发生剧烈的变化,而剧烈的变化意味着这个部分的信号频率很高。高频信号更容易损失能量,因此本来剧烈变化的部分就会变成缓慢的变化,拐角也就变圆了。即便线路条件很好,没有噪声,信号在传输过程中依然会发生失真,如果再加上噪声的影响,失真就会更厉害。噪声根据强度和类型会产生不同的影响,无法一概而论,但如果本来就已经衰减的信号再进一步失真,就会出现对0和1的误判,这就是产生通信错误的原因。
噪声抑制:
局域网网线使用的是双绞线,其中“双绞”的意思就是以两根信号线为一组缠绕在一起,这种拧麻花一样的设计是为了抑制噪声的影响。
如果网线周围存在电磁波,就会在网线中产生和原本的信号不同的电流。由于信号本身也是一种带有电压变化的电流,其本质和噪声产生的电流是一样的,所以信号和噪声的电流就会混杂在一起,导致信号的波形发生失真。
影响网线的电磁波分为两种,一是 由电机、荧光灯、CRT显示器等设备泄漏出来的电磁波,另一种电磁波是从网线中相邻的信号线泄漏出来的。双绞线(a)通过两根信号线的缠绕抵消外源性噪声;(b)通过改变节距抑制内源性噪声。
集线器将信号发往所有线路
当信号到达集线器后,会被广播到整个网络中。然后由设备根据接收方MAC地址来判断应该接收哪些包。
3.2 交换机的包转发操作
这部分操作和网卡基本相同,大家可以认为交换机的每个网线接口后面都是一块网卡。网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡。但交换机的工作方式和网卡有一点不同。网卡本身具有MAC地址,并通过核对收到的包的接收方MAC地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方MAC地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有MAC地址。
交换电路工作原理
信号线排列成网格状,每一个交叉点都有一个交换开关,交换开关是电子控制的,通过切换开关的状态就可以改变信号的流向。交换电路的输入端和输出端分别连接各个接收端口和发送端口,网络包通过这个网格状的电路在端口之间流动。举个例子,假设现在要将包从2号端口发送到7号端口,那么信号会从输入端的2号线进入交换电路,这时,如果让左起的6个开关水平导通,然后将第7个开关切换为垂直导通,信号就会像图上一样流到输出端7号线路,于是网络包就被发送到了7号端口。每个交叉点上的交换开关都可以独立工作,因此只要路径不重复,就可以同时传输多路信号。
交换机根据MAC地址表查找MAC地址,然后将信号发送到相应的端口。发送前确认信号收发模块中的接收线路没有信号进来,如检测到其他信号,则需要等待。
MAC工作表的维护
维护操作分为两种:一是收到包时,将发送方MAC地址以及其输入端口的号码写入MAC地址表中;二是删除地址表中某条记录的操作,这是为了防止设备移动时产生问题,只需要将一段时间不使用的过时记录从地址表中删除就可以了。
当MAC表中找不到指定的MAC地址。这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备一段时间没有工作导致地址被从地址表中删除了。这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上。。局域网中每秒可以传输上千个包,多出一两个包并无大碍。
双工模式和自动协商功能
交换机的全双工模式可以同时发送和接收信号。以太网设备的网线接口周围有一个绿色的LED指示灯,它表示是否检测到正常的脉冲信号。如果绿灯亮,说明PHY(MAU)模块以及网线连接正常。当两台设备通电并完成硬件初始化之后,就会开始用脉冲信号发送自己支持的速率和工作模式。当对方收到信号之后,会通过读取脉冲信号的排列来判断对方支持的模式,然后看看双方都支持的模式有哪些。
交换机和集线器对比:
交换机只将包转发到具有特定MAC地址的设备连接的端口,其他端口都是空闲的。集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器。
3.3 路由器的包转发
网络包经过集线器和交换机之后,现在到达了路由器,并在此被转发到下一个路由器。区别是路由器是基于IP设计的,而交换机是基于以太网设计的。路由器的端口模块则支持除局域网之外的多种通信技术,如ADSL、FTTH,以及各种宽带专线等,只要端口模块安装了支持这些技术的硬件即可。
路由器工作整体流程:
首先会通过端口将发过来的包接收进来,这一步取决于端口对应的通信技术。接下来,转发模块会根据接收到的包的IP头部中记录的接收方IP地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去。
路由器的端口模块根据相应通信技术的规范来执行包收发的操作,是以实际发送方或者接收方来收发网络包的。以以太网协议为例,不同于交换机,路由器的而每个端口都具有MAC地址,也具有IP地址,而交换机没有,交换机只负责转发操作。
路由器有路由表,转发操作是根据路由表查询的。路由器会将接收到的网络包的接收方IP地址与路由表中的目标地址进行比较,并找到相应的记录。交换机在地址表中只匹配完全一致的记录,而路由器则会忽略主机号部分,只匹配网络号部分。打个比方,路由器在转发包的时候只看接收方地址属于哪个区,××区发往这一边,××区发往那一边。路由也具有路由聚合功能,不细讲。
对路由表进行维护的方法有几种,大体上可分为以下两类。
(a)由人手动维护路由记录
(b)根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录其中
(b)中提到的路由协议有很多种,例如RIP、OSPC、BGP等都属于路由协议。
路由器的包接收操作:路由器的端口有各种不同的类型,这里我们只介绍以太网端口是如何接收包的。信号到达网线接口部分,其中的PHY(MAU)模块和MAC模块将信号转换为数字信息,然后通过包末尾的FCS进行错误校验,如果没问题则检查MAC头部中的接收方MAC地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。如果包的接收方MAC地址不是自己,说明这个包是发给其他设备的,如果接收这个包就违反了以太网的规则。
查询路由表确定输出端口:完成包接收操作之后,路由器就会丢弃包开头的MAC头部。接下来,路由器会根据MAC头部后方的IP头部中的内容进行包的转发操作。判断转发目标的第一步,就是根据包的接收方IP地址查询路由表中的目标地址栏,以找到相匹配的记录。如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMP[插图]消息告知发送方。这里的处理方式和交换机不同,原因在于网络规模的大小。交换机连接的网络最多也就是几千台设备的规模,这个规模并不大[插图]。
路由包更新和分片
从路由表中查找到转发目标之后,网络包就会被转交给输出端口,并最终发送出去,但在此之前,路由器还有一些工作要完成。第一个工作是更新IP头部中的TTL(Time to Live,生存时间)字段(参见第2章的表2.2)。TTL字段表示包的有效期,包每经过一个路由器的转发,这个值就会减1,当这个值变成0时,就表示超过了有效期,这个包就会被丢弃。这个机制是为了防止包在一个地方陷入死循环。现在的互联网即便访问一台位于地球另一侧的服务器,最多也只需要经过几十个路由器,因此只要包被正确转发,就可以在过期之前到达目的地。
路由器的端口并不只有以太网一种,也可以支持其他局域网或专线通信技术。不同的线路和局域网类型各自能传输的最大包长度也不同,因此输出端口的最大包长度可能会小于输入端口。即便两个端口的最大包长度相同,也可能会因为添加了一些头部数据而导致包的实际长度发生变化,ADSL、FTTH等宽带接入技术中使用的PPPoE[插图]协议就属于这种情况。无论哪种情况,一旦转发的包长度超过了输出端口能传输的最大长度,就无法直接发送这个包了。遇到这种情况,可以使用IP协议中定义的分片功能对包进行拆分,缩短每个包的长度。最大包长度是由端口类型决定的,用这个最大长度减掉头部的长度就是MTU,将MTU与要转发的包长度进行比较。如果输出端口的MTU足够大,那么就可以不分片直接发送;如果输出端口的MTU太小,那么就需要将包按照这个MTU进行分片,但在此之前还需要看一下IP头部中的标志字段,确认是否可以分片。
包的发送操作取决于输出端口的类型。如果是以太网端口,则按照以太网的规则将包转换为电信号发送出去;如果是ADSL则按照ADSL的规则来转换,以此类推。
路由器与交换机的关系:
从本质上说是将IP包装进以太网包的数据部分中,委托以太网去传输这些数据。IP协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行。路由器是基于IP设计的,而交换机是基于以太网设计的,因此IP与以太网的关系也就是路由器与交换机的关系。换句话说,路由器将包的传输工作委托给交换机来进行。
IP并不是委托以太网将包传输到最终目的地,而是传输到下一个路由器。在创建MAC头部时,也是从IP的路由表中查找出下一个路由器的IP地址,并通过ARP查询出MAC地址,然后将MAC地址写入MAC头部中的,这表示IP对以太网的委托只是将包传输到下一个路由器就行了。
简单理解:IP是负责通信发送到接收端的协议,以太网是负责每一跳的协议。
网络并非只有以太网一种,还有无线局域网,以及接入互联网的通信线路,它们和IP之间的关系又是什么样的呢?其实只要将以太网替换成无线局域网、互联网线路等通信规格就可以了。也就是说,如果和下一个路由器之间是通过无线局域网连接的,那么就委托无线局域网将包传输过去;如果是通过互联网线路连接的,那么就委托它将包传输过去。
3.4 路由器的附加功能
地址转换
地址转换是因为如果给每一个设备都分配一个IP地址,地址就会不够用。因而其实可以把网络分区,外部交流使用公有地址,内部使用私有地址,共有和私有的地址转换就是地址转换。在一个私有网络内,IP不可以重复,而对外只使用一个共有地址 ,可以用不同的端口号来区别内网中的不同终端。即IP相同,但是端口号不同,仍然可以 识别相应的设备。
包过滤
包过滤就是在对包进行转发时,根据MAC头部、IP头部、TCP头部的内容,按照事先设置好的规则决定是转发这个包,还是丢弃这个包。我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的。