交换机是什么?
交换机与路由器有什么区别?
我们先看看交换机
以写信为例:
交换机相当于邮寄员,根据数据包中的目标Mac地址,找到它对应的物理端口,一台交换机有很多端口,他们都有自己的编号,计算机的网卡通过网线连接到交换机的的网口上,这个端口就是确定的物理位置,我们只要知道某个网卡的目标地址在哪个端口上,我们就能把数据包正确的发给他,所以在交换机中,有一张与端口号与Mac地址的关系映射表,叫Mac地址表,交换机维护这张Mac地址表,想要与某个Mac地址通信时,直接在Mac地址表中查询,这个Mac地址在哪个端口上,绕后从对应的端口发送出去就行了
以图为例:
每个数据包都会有两个Mac地址,源Mac和目标Mac,交换机收到一包数据之后,首先将源Mac与接收端口绑定,然后交换机要根据目标Mac进行查找, 从哪个端口把数据包发送出去
有两种情况:
- Mac地址表中查到了关联的端口 ,直接从关联端口发出
- 没有查到关联端口,则向除了接收端口之外的所有端口群发,称为泛洪
如果这个Mac地址在这个网络中,那么一定会受到群发的数据包 ,如此运行一段时间之后,通过交换机的Mac地址表,就可以找到网络中的所有网卡设备,这里可以看出交换机只关心Mac地址,而不关心IP地址,交换机在tcp/ip协议中处于第二层数据链路层,所以也被称为二层设备
如图:
下面我们来看看路由器
路由器有两种接口
- LAN口:多个,用来接家庭网络设备
- WLAN口:1个,用来接入运营商
- 忽略WLAN口,路由器就相当于交换机
- 加入WLAN口的话,就相当于加了网关
在这里的话,先了解一下网关的概念
首先是子网划分
我们将IP地址也子网掩码按位相与,与的意思就是1与几就是几,0与几就是0,我们常用的子网掩码255.255.255.0,前三个字节也就是前24位全为1,后8位全为0,所以按位与的结果是一定是这个IP地址的前三个字节不变而最后一个字节是0
例:192.168.1.10 &255.255.255.0=192.168.1.0
我们把IP地址与子网掩码按位与之后相同的ip认为在同一子网中
我们通常用1的数量表示子网掩码
比如192.168.1.0/24表示这个网络中有255个IP地址
如果想扩大ip数量,只需要子网掩码 调小
在tcp/ip协议中有个规定:
不同子网之间是不能直接通信的
要通信的话要通过网关来进行转发
网关上有两张网卡,分别配置了两个子网的ip地址,可以在两个网络之间转发数据包,这样我们就拥有了一个连接了两个子网的网络
再举个例子:
子网1中的计算机a发送数据包时,首先计算机a会根据目标ip 判断是否跟自己时同一子网
- 如果是同一子网,则直接从网卡发出
- 如不是同一子网,则需要将数据包的目标Mac地址改为网关Mac地址发送给网关,网关拿到这一包数据后,再通过路由表查询到这一包数据属于子网2,网关修改目标Mac地址为计算机b的Mac地址,修改源Mac为自己Mac,然后从子网2的网卡发出。
以上多次出现根据目标ip判断数据包应该如何发送的行为,我们称为路由
路由器有一个WAN口接入互联网,多个LAN口接入本地网络,他们分别属于不同的子网,所以从内网访问互联网就是跨网络行为,这时候就需要路由器担任网关的角色,他的行为就叫路由
但这里可能就有个疑惑:两个家庭中的ip都是192.168.1.10的情况,如果按照上面所说的情况发送到互联网上,那么互联网上就会出现无数个相同的ip地址,这个问题下次再说吧