浅析集线器、交换机、路由器

前言:

最近学习了《网络是怎样连接的》这本书,也在头脑中形成了对网络整体架构的认识,正如作者在开篇所说:

如果无法理解网络的全貌,也就无法理解每一种网络技术背后的本质意义;而如果无法理解其本质意义,就只能停留在死记硬背的程度,无法做到实际应用。

从大的几个部分来说,应用程序、协议栈、网络设备、运营商,互联网它们之间的交互规则和自身为处理网络包或网络信号而制定的内部规则等,都体现了Internet这个庞大架构的复杂性,但正是做到了不同技术之间的合作,才能够实现如此强大的应用场景。
其中,关于集线器、交换机、路由器的作用使用场景,当然,还有它们的区别,是我们在工作,甚至生活中,都必须有所认识的,更进一步,它们各自对于网络包的处理和转发,是作为学习网络,所应当清楚的。

学习方法:

这里简单分享我个人的网络学习方法,我也会在接下来的浅析中体现:

  1. 不死记硬背,画图理解;
  2. 做笔记,画脑图;
  3. 联想生活和工作场景上的运用,尽量实践;
  4. 可否给别人清楚地讲解出来?或者自言自语给自己讲解一番;
  5. 不讲就写吧,总要总结才能形成”学习闭环“。

整体感知:

集线器、交换机、路由器在我们的生活中其实很常见,当然,我们现在的家用路由器已经集成了集线器、交换机的功能。这里为了理解基本概念,还有了解网络设备的一步步的发展,我们分开讲。
它们的目的都在于将从端机发送的网络包转发到互联网,以及接收来自互联网的消息,并通过一系列机制,最终到达制定端机。概括讲,就是对网络包的层层转发,结合不同的机制,让网络包到达指定目的地。

1 整体认识图
在这里插入图片描述从图上也还可以得出,使用路由器等的网络设备,不仅是网络包转发的功能,随着网络规模的增大,我们也需要借助这样的网络设备来实现“分区/组”管理,让网络包可以明确地找到地址,就像我们现实世界的地址(国家、省、市…),还有个原因就是,当初的网络设计,可没想到如今全球化的庞大规模,所以IP地址早就不够用了,必须通过“中转”这样的概念来实现多层次的分类 (个人认为这是Internet架构在思想上的精髓之一)

2 网络包转发
首先我们回忆一下一个网络包的组成:
(这里借鉴了《网络是怎样连接的》图整理出)

i)Head,带有控制信息,即描述该层网络协议的相关信息。在协议栈中,每一层都有属于它的头部,而上一层下来的包,就成了它的内容。(俄罗斯套娃一样的层层嵌套)。目的在于制定一套标准/协议,准确描述该层数据格式、内容,以及支持内部的数据处理机制等。
(个人认为模块化思想在网络架构中起了关键作用)

ii)转发设备在进行转发时不看数据的内容,即TCP-Head及以后的Data,转发设备是不会解开的。也就是说,转发设备不关心传输层及以上的数据是什么,都认为是Data,它只需要利用网络层及一下的头部控制信息,做相应的包转发机制。(邮递员只会通过地址送信,不会看信里面的内容)

iii) 每个包在传输过程中是独立的。

iiii) 转发设备验证包错误后,会直接丢弃。当然,TCP会等待ACK信号,若超时,则会重传,所以也可以总结出,关于ACK响应、重传机制等,是通过软件层面实现的。(这里面的各种各样机制,以及校验,保证了可靠性传输,也是其网络相对复杂的一部分)

小贴士:路由器比交换机的问世时间更早。

拓展一些信号处理方面的知识

在这里插入图片描述
在这里插入图片描述
以上是我在学习协议栈和网卡部分做的脑图的一部分,然后画了一个大致示意图,这是网卡描述的部分,接下来我们从以太网的通信来简单讲讲信号的处理:

以太网根据MAC地址来传输包
将包发送到 MAC 头部的接收方 MAC 地址代表的目的地,用发送方 MAC地址识别发送方,用以太类型识别包的内容。
(建议自行搜索MAC头部的字段)

1 在MAC模块增加了报头和起始帧分界符FCS校验
最终在网线中传输的是电信号,所以我们要将数字信息的每个bit转换为电信号,对应其电压和电流,通过电压和电流的变化还原出0 1两种bit值(详细请了解数字信号)。对于数字信号的处理,为了保证其传输的正确性,报头用来测定时机,起始帧分界符确定帧的起始位置。末尾的 FCS(帧校验序列)用来检查包传输过程中因噪声导致的波形紊。
学过单片机的朋友应该了解,数字信号+时钟信号的叠加,可以判断出比特之间的界限。

2 PHY/MAU模块将信号转换为可在网线上传输的格式,并通过网线发送出去。这儿会针对不同的网线类型和速率以及其对应的信号格式进行了转换,MAC模块只是把通用格式给了PHY/MAU模块。
它也监控接收线路中有没有信号来

3 防止网线中的信号衰减
信号在网线的传输过程中,能量会逐渐损失。网线越长,信号衰减就越严重。
传输的方波因为能量损失会在拐角处变圆滑,严重的话便会影响01判断。
局域网使用的双绞线,通过“双绞”的做法抑制噪声。(详细请了解噪声电流的相互抵消)

一、集线器(Repeater hub)

集线器,又称Hub,其实已经很少单独用了。
完全工作在物理层,将自己收到的每一个字节,都复制到其它端口上。
其实就是采用广播的模式将网络包转发到所有设备,即按照以太网的基本架构将信号广播出去。
如果多台计算机同时发送信号,则会在集线器内部混杂,发送碰撞而无法使用。

集线器将信号发送给所有连接在它上面的线路。

二、交换机(Switching hub)

在这里插入图片描述
(注:这里指的端口不是IP端口,而是交换机的物理端口)

  • 将包原样地转发到目的地
    即交换机不会对网络包做任何改变。
  • 根据MAC地址表进行转发----转发表
    具有“学习”能力,能保存收到的远端MAC地址以及其对应的端口,这样就能对局域网有个整体的认识。每次转发,都经过查表后,往相应端口发送。
  • 全双工模式收发信号
    PHY/MAU模块中有检测信号碰撞的模块。
  • STP协议
    当应用场景大了的时候,可能会有多个交换机之间的连接,这时就会形成稍微复杂的拓扑结构。也带来一些问题,如环路问题
    STP用于生成树,将有环路的图变成没有环路的图。(详细可参看极客时间刘超老师的《交换机与VLAN:办公室太复杂,我要回学校》讲解,也可以了解数据结构中的最小生成树)。
在交换机中的包转发流程:

在这里插入图片描述

交换机和路由器都是有对应的转发机制的,交换机通过MAC地址表查询并转发,而路由器根据IP表查询进行转发。
在这里插入图片描述

三、路由器(Router)

  • 路由器的包转发模块端口模块
  • 路由器的端口模块则支持除局域网之外的多种通信技术,如 ADSL、FTTH,以及各种宽带专线等,只要
    端口模块安装了支持这些技术的硬件即可。
    即端口模块是以实际的发送方或接收方的身份来收发网络包的,以以太网为例路由器的各个端口都具有 MAC 地址和 IP 地址。
    在这里插入图片描述
  • 检查接收包MAC头部,是则放入缓冲区,不是则抛弃
  • 完成包接收操作后,丢弃原MAC头部
  • 路由器会根据IP地址来判断转发目标,即需要解出IP头部的内容:
    在这里插入图片描述
这里有个很重要的一点就是 “匹配规则”

根据解出的Des-Ip与第一列的各个值匹配;
这个匹配并不是匹配全部 32 个比特,而是根据子网掩码列中的值判断网络号的比特数,并匹配相应数量的比特。比如和第一行进行匹配,只需要前24bit进行比较;
若有多个匹配行,就依据**“最长匹配原则**”,原因很简单,谁比较成功的bit数多,谁就更相似;
无法找到匹配记录,则丢弃,并通过ICMP消息上报错误信息。
默认路由:很明显就是所有网络号都能匹配上,即找不到匹配路由时选择默认路由。可以在这里填写接入互联网的路由器地址,匹配不上其他路由,直接转入互联网路由器。

  • 更新IP头部中的TTL
    即更新包的生命周期,每经过一个路由器转发,这个字段就减1,过期则丢弃。
    防止包在一个地方陷入死循环。
  • 地址转换
    内网中的设备不能直接和互联网直接收发网络包,而是通过地址转换机制进行连接。
    在转发网络包时,对IP头部中的IP地址和端口号进行改写。
在路由器中的包转发流程:

(建议自行了解MAC头和IP头)

很多情况下,人们把网关就叫作路由器。其实不完全准确,而另一种比喻更加恰当:路由器是一台设备它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的IP地址都和局域网的IP地址相同的网段,每只手都是它握住的那个局域网的网关。
任何一个想发往其他局域网的包,都会到达其中一只手,被拿进来,拿下MAC头和IP头,看看,根据自己的路由算法,选择另一只手,加上IP头和MAC头,然后扔出去。
极客时间版权所有: https://time.geekbang.org/column/article/8590

以下是一个局域网内的包转发流程,旨在了解包的转换,很简单,若要了解更复杂的转发规则,比如跨局域网,参看Geek里的《世界这么大,我想出网关:欧洲十国游与玄奘西行》
在这里插入图片描述

总结:

关于更细致的网络知识还需要多学习并实践,以上总结的是一个知识点形式的内容,更加细致的知识点,还需要深入查资料。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值