目前,科技的发展,很多网络设备的界限也越来越模糊。比如集线器和交换机之间的界限已变得模糊,交换机也出现了3层交换机(有网络层模块),4层交换机(有传输层模块)。本文主要整理一些典型的网络设备及其功能比较。
核心总结:
1、hub(集线器)就是物理层的,会面向全端口转发物理层的包。当然因为全部转发会造成网络堵塞,所以hub还顺带集成了CSMA/CD,碰撞检测模块。
2、网桥,主要是为了hub的不足,工作在数据链路层,检测数据包mac地址,对数据包进行特定端口转发,避免造成网络堵塞。
3、交换机。一般指常见的二层交换机,工作在数据链路层。功能和网桥差不多。区别就是,网桥只有两个端口,只能连接两个子网。而交换机端口多,可以连接的子网多。
4、路由器,工作在网络层。对ip数据包进行路由转发。
5、网关,工作在应用层。仅用于两个高层协议不同的网络互连
1、HUB(集线器)
HUB是一个多端口的转发器,在以HUB为中心设备时,即使网络中某条线路产生了故障,并不影响其它线路的工作。所以HUB在局域网中得到了广泛的应用。
HUB按照对输入信号的处理方式上,可以分为无源HUB、有源HUB、智能HUB。
大多数的时候它用在星型与树型网络拓扑结构中,以RJ45接口与各主机相连(也有BNC接口)。在这方面,集线器所起的作用相当于多端口的中继器。其实,集线器实际上就是中继器的一种,其区别仅在于集线器能够提供更多的端口服务,所以集线器又叫多口中继器。
集线器工作于OSI/RM参考模型的物理层和数据链路层的MAC(介质访问控制)子层。物理层定义了电气信号,符号,线的状态和时钟要求,数据编码和数据传输用的连接器。因为集线器只对信号进行整形、放大后再重发,不进行编码,所以是物理层的设备。10M集线器在物理层有4个标准接口可用,那就是:10BASE-5、10BASE-2、10BASE-T、10BASE-F。10M集线器的10BASE-5(AUI)端口用来连接层1和层2。
集线器(HUB),它是工作在物理层的设备, 由于它只是工作在物理层的设备,所以它并不关心也不可能关心OSI上面几层所涉及的,它的工作机制流程是:从一个端口接收到数据包时,会在其他端口把这个 包转发一次,因为它不知道也不可能知道这个包是发给谁的(物理层设备只关心电压这些物理概念),它也只能对所有人广播(这里和下文提到的 广播该词的意思和ARP请求时的广播有些不同,这里的广播意思是:使用物理层转发设备,如HUB,导致的广播,可以说这个广播是被逼的,因为设备的问题! 是设备转发包引起的广播!而ARP请求的广播是自己要求的,主动的,因为ARP请求包的目标地址IP是255.255.255.255,但ARP请求的广 播涉及IP层的知识,不在这篇文章讨论的范围,所以这里提到的广播,除非特别说明,否则都是第一个意思,也就说是”因设备转发数据包引起的广播” ),让他们自己处理了。
这样一来会有不少问题,你发的数据其他人都收到了,私隐这总东西是不存在的!别入可以随便监听你信息!所以会话劫持在那个年代相当容易(记得俺第一次接触会话劫持这个概念的时候还是高2,那是2001~2002,呵,那时候集线器还是比较普遍的)。
另外一个比较严重的问题是,如果一个大型的局域网,比如有500台机器,全部用HUB连接的,后果会怎么样呢??相当慢,网络的效率极差!为什么?如果500台机器都发一个包,那就是说每台机器,都需要接收差不多499个无用包…并且如果是需要回应的话……无用的数据包会充斥着整个的局域网,这就是传说中的广播风暴!
为了侦测广播风暴,集线器采用了CSMA/CD(载波帧听多路访问/冲突检测)协议,CSMA/CD为MAC层协议,所以集线器也含有数据链路层的内容。但HUB本身不能识别MAC 地址和IP地址。
为了减少广播风暴,网桥产生了(注意这里用的时候“减少”,不是“杜绝”,仅仅是减少!如果仅仅用网桥说能杜绝广播风暴,个人觉得还是不太准确,后来交换机的出现才可以说是完全杜绝了广播风暴的发生)!
在介绍网桥之前,还想简单介绍另一个物理层的设备:“中继器”,这种设备的作用是把物理层传输的信号放大,由于长距离的传输,信号会有一定的损耗的,这种设备主要解决的就是这个问题。它和HUB的区别是:HUB主要是为了在物理层上转发数据的,所以它不关心电压值的大小,也不会放大物理信号;而中继器它的作用就是为了放大信号用的,SO…..
核心总结:有源/无源HUB工作在物理层,智能HUB覆盖物理层、链路层、网络层。依据IEEE 802.2协议,集线器功能是随机选出某一端口的设备,并让它独占全部带宽,与集线器的上联设备(交换机、路由器或服务器等)进行通信。
简单来说:HUB收到网络信号时,因为工作在物理层(智能HUB可以路由这里不考虑,有源HUB会对收到的网络信号进行放大或再生,无源HUB不会),所以HUB会无脑转发该网络信号到其他所有处于工作状态的端口上。
2、网桥
网桥连接不同网段的探讨:
首先网桥和普通的二层交换机都不具备网络层功能,也就是不能给网段上的pc机分配IP地址,然后一个网段只能有一个出口负责管理和外界连接,因为网段某节点pc发送的ARP请求,只能得到一个路由器的响应并分配ip。按照这样的推理。网桥连接的两个网段,只有一个地方的网段,连接有路由器并负责和外网进行数据交流。在路由器看来,内网是透明的,感觉就只有一个局域网。(上文的网段,应该就是网络分段的意思)
3、交换机
交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
具体可分为:
- 直通转发(cut-through):数据包的前6个字节(MAC地址)一到达交换机,即确定目的地址,向相应端口转发该数据包。这时可能该数据包在接收端口还没有传输完。适用于网络质量好,误码率低的情形。
- 存储转发(store-and-forward):交换机把收到的完整数据包暂存,然后检查其校验和或其他;通过检验的数据包再读取其目的地址,向相应端口转发。
- 无帧(fragment-free):基本类似于直通转发。但对数据包的前64个字节做存储-校验-转发。因为大部分误码、碰撞(collision)发生在数据包头64字节。
通常,交换机采取直通转发,如果误码率上升到某个阈值,再改用存储转发。
当一台交换机安装配置好之后,其工作过程如下:
- 收到某网段(设为A)MAC地址为X的计算机发给MAC地址为Y的计算机的数据包。交换机从而记下了MAC地址X在网段A。这称为学习(learning)。
- 交换机还不知道MAC地址Y在哪个网段上,于是向除了A以外的所有网段转发该数据包。这称为泛洪(flooding)。
- MAC地址Y的计算机收到该数据包,向MAC地址X发出确认包。交换机收到该包后,从而记录下MAC地址Y所在的网段。
- 交换机向MAC地址X转发确认包。这称为转发(forwarding)。
- 交换机收到一个数据包,查表后发现该数据包的来源地址与目的地址属于同一网段。交换机将不处理该数据包。这称为过滤(filtering)。
- 交换机内部的MAC地址-网段查询表的每条记录采用时间戳记录最后一次访问的时间。早于某个阈值(用户可配置)的记录被清除。这称为老化(aging)。
对于全交换(full-switch)局域网,交换机每个端口只连接一台设备,因此不会发生碰撞。交换机也不需要做过滤。
分类:
传统交换机(二层交换机)
交换机被广泛应用于二层网络交换。中档的网管型交换机还具有VLAN划分、端口自动协商、MAC访问控制列表等功能,并提供命令行界面或图形界面控制台,供网络管理员调整参数
网桥和二层交换机的区别
交换机与网桥的区别(这里说的交换机就是我们常见的最普通的二层交换机)
局域网交换机的基本功能与网桥一样,具有帧转发、帧过滤和生成树算法功能。但是,交换机与网桥相比还是存在以下不同:
(1)交换机工作时,实际上允许许多组端口间的通道同时工作。所以,交换机的功能体现出不仅仅是一个网桥的功能,而是多个网桥功能的集合。即网桥一般分有两个端口,而交换机具有高密度的端口。
(2)分段能力的区别
由于交换机能够支持多个端口,因此可以把网络系统划分成为更多的物理网段,这样使得整个网络系统具有更高的带宽。而网桥仅仅支持两个端口,所以,网桥划分的物理网段是相当有限的。
(3)传输速率的区别
交换机与网桥数据信息的传输速率相比,交换机要快于网桥。
(4)数据帧转发方式的区别
网桥在发送数据帧前,通常要接收到完整的数据帧并执行帧检测序列FCS后,才开始转发该数据帧。交换机具有存储转发和直接转发两种帧转发方式。直接转发方式在发送数据以前,不需要在接收完整个数据帧和经过32bit循环冗余校验码CRC的计算检查后的等待时间。
三层交换机
三层交换机则可以处理第三层网络层协议,用于连接不同网段,通过对缺省网关的查询学习来创建两个网段之间的直接连接。
三层交换机具有一定的“路由”功能,但只能用于同一类型的局域网子网之间的互连。这样,三层交换机可以像二层交换机那样通过MAC地址标识数据包,也可以像传统路由器那样在两个局域网子网之间进行功能较弱的路由转发,它的路由转发不是通过软件来维护的路由表,而是通过专用的ASIC芯片处理这些转发;
四层交换机
四层交换机可以处理第四层传输层协议,可以将会话与一个具体的IP地址绑定,以实现虚拟IP [1] ;
七层交换器
更加智能的交换器,可以充分利用频宽资源来过滤,识别和处理应用层数据转换的交换设备。
二层交换机与集线器的区别
交换机与集线器不同之处是,集线器会将网络内某一用户发送的数据包传至所有已连接到集线器的电脑。而交换机则只会将数据包发送到指定目的地的电脑(透过MAC表),相对上能减少数据碰撞及数据被窃听的机会。交换机更能将同时传到的数据包分别处理,而集线器则不能。
最大的不同之处在于:集线器的每一个接口都处于相同的冲突域,而交换机的每个接口处于一个冲突域。在性能方面尤为突出:例如在100Mb/s的以太网络中有100个用户,使用集线器,每个用户只有1Mb/s(100Mb/s/100),因为Hub是共享式的网络;而使用交换机,每个接口有100Mb/s,如果有100个接口,总带宽为100*100Mb/s(最终的带宽大小取决于输入接口的带宽;即如果输入端口只有10000M,则达到上限前,每个用户都能使用100M带宽,但一旦所有用户的总需求超过10000M,用户将在相同优先级的原则下进行带宽分配),因为交换机是独立式的网络。
二层交换机与路由器的区别
从时间线上看,路由器诞生于交换机之后,为了弥补交换机不能定向转发数据包的缺陷。
“交换”一词最早出现于电话系统,指两个不同电话交换机之间语音信号的交换。故从本意上讲,交换是完成信号由交换设备入口至出口的转发的技术的统称。路由器名称中的“路由”(router)来自于路由器的转发策略–路由选择(routing)。交换机和路由器的区别有但不局限于以下几点(这里的交换机和路由器都是常规型号的):
- 2.两者转发时所依据的对象不同
- 交换机是基于MAC地址识别,实现封装数据包转发。路由器基于网络ID号(IP地址)。MAC一般被固化在网卡中,不可更改。而IP地址可以被系统或网络管理员进行设置和分配。
- 3.两者转发广播数据包的域不同
- 被交换机连接起来的网络属于同一广播域,广播数据包会在网络内所有网段上进行传播。连接在路由器上的网段则被分区为不同广播域,广播数据包只在各自广播域内传播而无法穿透路由器。路由器的这种子网隔离功能可以在一定程度上防止广播风暴。
三层交换机与路由器的区别
虽然三层交换机与路由器都具有路由转发功能,二者都运行在OSI模型的第三层,即网络层,但是二者并不等同,适用范围也不同,不会相互替代。
- 1.主打功能不同
- 三层交换机的主打的功能点是二层交换技术,并附加一点路由转发功能。路由器的主打功能是路由转发,并可能附加一些备用功能,比如硬件防火墙、二层交换技术等其它功能。
- 2.适用环境不同
- 三层交换机的路由转发功能一般都比较粗略,由于它一般用在简单的接入网的连接。它在以太网中的主要作用还是提供快速的二层数据交换,功能特点还是针对频繁的以太网数据交换。
- 路由器的设计初衷就是为了跨网段连接。尽管它也能在局域网内用于连接网络,但是它的路由转发功能主要用于不同类型网络之间,例如连接局域网与广域网,连接以太网和令牌环网。它的主打功能就是路由转发,专业处理复杂路由路径和复杂的网络连接。因此,路由器的路由转发功能,比三层交换机强大得多。路由器的优势是能够选择最佳路由、负荷分担、链路备份以及与其他网络进行路由信息的交换等功能。为了能够适应各种类型的网络,路由器的接口类型非常丰富,例如以太网接口、令牌环网接口、WLAN网卡、光纤接口等等。三层交换机一般只有以太网接口。
- 3.性能不同
- 三层交换机的路由转发是由硬件实现的,使用专用ASIC芯片来处理路由转发。路由器的路由转发是由软件实现的,在CPU中运行一段程序来处理路由转发。
- 所以三层交换机的转发效率会高过路由器,但是路由转发的功能都比较弱,由于路由转发功能是固化在硬件中的,不具有软件可扩展性,也就不会具有路由器的附加功能(例如防火墙功能)。
四、路由器
路由器的结构
路由器从功能上可以划分为:路由选择和分组转发。
分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。
路由器分组转发流程
从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。
若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付;
若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器;
若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;
若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
否则报告转发分组出错。
路由选择协议
路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。
互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。
可以把路由选择协议划分为两大类:
- 自治系统内部的路由选择:RIP 和 OSPF
- 自治系统间的路由选择:BGP
1. 内部网关协议 RIP
RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。
RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
距离向量算法:
- 对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1;
- 对修改后的 RIP 报文中的每一个项目,进行以下步骤:
- 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中;
- 否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。
RIP 协议实现简单,开销小。但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。
2. 内部网关协议 OSPF
开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。
开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。
OSPF 具有以下特点:
- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
- 只有当链路状态发生变化时,路由器才会发送信息。
所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。
3. 外部网关协议 BGP
BGP(Border Gateway Protocol,边界网关协议)
AS 之间的路由选择很困难,主要是由于:
- 互联网规模很大;
- 各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;
- AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。
BGP 只能寻找一条比较好的路由,而不是最佳路由。
每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。
五、网关
整理自:百度百科、维基百科、https://www.cnblogs.com/hyddd/archive/2009/01/18/NetWorking.html
2、console.log(crypto.createHash(‘sha1’).update(‘dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11’).digest(‘sha1’)); //输出:<SlowBuffer b3 7a 4f 2c c0 62 4f 16 90 f6 46 06 cf 38 59 45 b2 be c4 ea>,不像你的,前面带0x,你是怎么弄的?
3、解码部分:if(frame.PayloadLength==126) frame.length=(e[2]<<8) + e[3], i=4; //其中的frame.length,好像应该是frame.Payloadlength。下一行中也是。看了一下,次碳酸钴,那边已经改了。
4、编码部分:s.push(126,(l&0xFF00)>>2,l&0xFF); 其中的>>2,好像应该是>>8。下一行类似。