目录
前言
本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。
这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。
可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。
交换机和路由器有什么区别?网关和路由又是什么意思?简单说网络2-交换机与路由器_哔哩哔哩_bilibili
引言
说起来路由器想必大家不会陌生,每个家庭都会至少有一个路由器来连接网络设备。那么交换机、路由器、网关和子网......都是什么?一下进行介绍。
交换机是用来做什么的?
我们先来看一下交换机,它的主要功能就是把数据包发送到正确的位置。
比如当你写了一份信给友人,交换机相当于邮递员,根据数据包中的目标MAC地址找到它对应的物理端口。
一台交换机有很多个端口,他们都有自己的编号。计算机的网卡通过网线连接到交换机的网口上,这个端口就是一个确定的物理位置。只要知道某个网卡的MAC地址在哪个端口上,就能正确的把数据包发给他。
所以在交换机中有一张端口与MAC地址的映射关系表,我们称之为MAC地址表。(交换机具有自学习功能,每次发送会把源地址存在交换表中如果没有的话)
然后要注意的是,为了避免兜圈子的问题,IEEE的802.1D标准制定了一个生成树协议STP。其要点就是不改变网络的实际拓扑,但在逻辑上切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构。
交换机维护这张映射关系想要与某个MAC地址通信时,只需要来查询一下这个MAC地址在哪个端口上,然后从对应的端口发送出去就可以了。
我们知道每一包数据都会有两个MAC地址,一个是发送方的MAC地址,称为源MAC。另一个是接收方的MAC地址,称为目标MAC。
交换机收到一包数据后,首先要把这包数据的源MAC与接收端口进行绑定(如果先前没绑定)。
然后交换机要根据目标MAC查找从哪个端口把数据包发送出去。
这时候就会出现两种情况:
第一种情况是MAC地址表中查询到了关联的端口,则直接从关联端口发出。
第二种情况是MAC地址表中没有查询到关联端口,则向除了接收端口之外的所有端口群发,这种行为称之为泛洪。(按我的理解就是广播帧)。
如果目标MAC地址在这个网络中,则他一定能收到群发的数据包。
如此运行一段时间之后,通过交换机的MAC地址表就可以找到网络中的所有网卡设备。
由此可见,交换机只会关心数据包中的MAC地址,而不会关心IP地址。
MAC地址在TCPIP协议中处于第二层数据链路层,所以交换机通常也被称为二层设备。
与路由器有什么区别?
我们再来看一下路由器,我们知道路由器有两种接口,一种是LAN口,一种是WAN口。
LAN口可以有多个用来接家庭网络设备,比如台式机、手机、笔记本。
其中手机和笔记本是通过wifi连接到路由器的设备,也相当于连接到了LAN口。
WAN口只有一个,用来接入运营商网络,连接到互联网中。如果把路由器的WAN口忽略,只用LAN口,其实路由器就是一台交换机。
网关
那如果考虑到WAN口,这里我们就要引入一个概念就是网关。
子网掩码
为了说明网关的作用,我们需要先了解一下子网是如何划分的。
我们把IP地址和子网掩码按位相与(&)。
我们常用的子网掩码255.255.255.0前三个字节全为1,后八位全为0。
所以按位相与的结果一定是这个IP地址的前三个字节不变,而最后一个字节是零。
比如192.10.18.26与255.255.255.0相与就是192.10.18.0。
我们把IP地址与子网掩码相与之后的结果相同的两个IP认为是在同一个子网中。
也就是说IP为192.10.18.26时,子网掩码为255.255.255.0的这张网卡与另一个192.10 .18.X的网卡一定是在同一个子网之中。
因为子网掩码都是连续的1和连续的0,所以我们通常用1的数量来表示子网掩码。比如255.25.255.0就是24。(前三个字节,一个字节8bit,也就是24位)。
我们用IP斜杠子网掩码来表示一个网络,比如192.168.1.0/24表示的网络中拥有255个IP地址。
所以如果想扩大子网中IP地址的数量,我们只需要把子网掩码调小。比如多加一位,ip数量就会减少;如果想减少子网中IP地址的数量,我们只需要把子网掩码调大就可以了。
网关、路由
TCP/IP协议规定不同子网之间是不可以直接通信的。如果要通信,需要通过网关来进行转达。
网关上有两张网卡,分别配置了属于两个子网的IP地址,可以在两个网络之间转发数据包,这样我们就拥有了一个连接了两个子网的网络。
我们来举一个简单的例子,子网一中的计算机A发送数据包时,首先计算机A会根据目标IP判断是否跟自己处于同一个子网。
如果是同一个子网,则直接从网卡发出。
如果不是同一个子网,则需要把数据包的目标MAC地址改为网关MAC然后发送给网关。网关拿到这一包数据后,再通过路由表查询到这一包数据属于子网二。网关修改目标MAC地址为计算机B的MAC地址,修改源MAC为自己的MAC,然后从子网二的网卡发出。
以上出现了多次根据目标IP判断数据包应该如何发送的行为,我们就称之为路由。
路由器有一个WAN口接入互联网,多个LAN口接入本地网络,它们就分别属于两个不同的子网。所以从内网访问互联网就是跨网络的行为。LAN连家里,WAN连世界!
这时候就需要路由器来担任网关的角色,他的行为也叫路由。