作为半路出家的前端,对于计算机基础知识是无知的,本文整理了平时所看关于网络的知识用于日后复习,不一定正确。
网络硬件
网卡
网卡的作用就是传递信件。
网卡从工厂生产出来后,都有一个全球唯一的地址: 11:27:F5: 8A:79:54,这个地址一出生就确定了,就像人的身份证一样,终生不变,这个地址也叫MAC地址。
因此,发送信息都需要知道对方的 MAC 地址。
路由器与交换机
先看一张网络拓扑图:
- 每一个路由器与其之下连接的设备,其实构成一个局域网;
- 交换机工作在路由器之下,也就是交换机工作在局域网内;
- 交换机用于局域网内网的数据转发,路由器用于连接局域网和外网;
交换机在局域网内工作,它根据 MAC 地址转发数据,如果没有了路由器在网络层寻址,那么我们的数据就不能发送到其他网络终端上去了。
路由器内集成了交换机的功能,主机与路由器相连也可以实现数据转发,但是不足之处是:可扩展的接口不如交换机多,交换机通常由硬件加速转发,路由器主要靠软件寻址,速度慢。
总而言之,这两者相辅相成,缺一不可!
通过一个例子来形容它们两个之间的联系:
每个人相当于主机,路由器相当于快递员,宿管相当于交换机,学校是一个局域网。快递员根据学校地址(IP,公网IP)把包裹送到学校,再根据公寓号(IP,子网IP)把快递交给这个公寓的宿管,宿管根据你的名字(MAC)交给你。
通过上面的介绍,来总结下路由器和交换机的工作内容:
- 路由器:寻址,转发(依靠 IP 地址)
- 交换机:过滤,转发(依靠 MAC 地址)
可以看出这两者的主要工作就是转发数据,但是不同之处是,依靠的地址不同,这是一个根本区别!
路由器: 内有一份路由表,里面有它的寻址信息(就像是一张地图),在收到网络层的数据报后,会根据路由表和选路算法将数据报转发到下一站(可能是路由器、交换机、目的主机)。
交换机: 内有一张MAC表,里面存放着和它相连的所有设备的MAC地址,它会根据收到的数据帧的首部信息内的目的MAC地址在自己的表中查找,如果有就转发,如果没有就放弃。
局域网和广域网
互联网可以简单理解为数据共享,如果只有两台电脑,就只需一根网线就可以互联(数据共享),如果有多台,就需要多条网线把所有电脑点对点连起来,就会出现下面这种情况:
这就是互联网的雏形。
但是,一台电脑连这么多网线是不现实的。为了解决这个问题就出现了下面的连接方式:
这样就解决了点对点的连接,组成了局域网。把多个局域网通过类似的方法连起来就是广域网。
为区别不同电脑,就产生了IP地址。上图中间的机器叫交换机,为电脑分配 IP 地址。
IP
IP 就是每个电脑的网络地址,把局域网连接起来的大交换机就是供应商,如联通、电信、移动等,供应商(ISP)为电脑提供了一个IP地址,通过IP地址就能连入互联网。
但是,地址也不能乱写,为了统一地址的格式,于是IPv4
产生了。
IPv4
上图的192.168.0.1
就所说的 IP。
IPv4 使用32位(4字节)地址,因此,地址空间中只有42亿多个地址。
不过,一些地址是为特殊用途所保留的,能分配给平民就只有36.47亿个,导致2019年11月26日,全球所有42亿多个 IPv4 地址已分配完毕,这意味着没有更多的 IPv4 地址可以分配给 ISP 和其他大型网络基础设施提供商。
为了缓和地址枯竭,就产生子网IP和端口。
公网IP VS 子网IP VS 端口
由于一个人有多台设备,假设你家的设备如下:
这样,就算你和别人家有重复的IP也没有关系,因为你是通过 6.6.6.6 的地址网关(路由器,这个地址也就是公网IP)与广域网连接(即 NAT和端口映射):
现在,通过网关和外界建立了连接,获取信息后通过子网IP转发局域网中某台电脑,但是数据给电脑里面的那个应用程序呢?因为你通过子网IP找到了某台电脑,但是电脑运行了很多程序,不知道给谁?
于是,就产生了端口。
端口有什么用呢?
我们知道,一台拥有IP地址的主机可以提供许多服务,比如,Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。
那么,主机是怎样区分不同的网络服务呢?
显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。
所以,需要通过 "IP地址+端口号" 来区分不同的服务的。
至于公网IP和私有IP,一个网关(6.6.6.6)下分配的IP叫子网IP,接入广域网的叫公用有IP,下图:
公网IP就是6.6.6.6,这样就不需要每台设备不一样的IP了。只要给网关分配独立IP。如果要自己架设服务器,就需要申请公网IP,这样大家才能互相访问你的服务器。
通过私有IP和端口暂时拯救了IPv4
。
IPv6
IPv4终究撑不住了。
IPv6横空出世,它的地址长度为128位,是IPv4地址长度的4倍,并采用十六进制表示。
IPv6 可以做到向后兼容
,即 IPv6 可以收发 IPv4 的数据报,但是已经部署的具有 IPv4 能力的系统却不能够处理 IPv6 数据报。
所以, IPv4 急需迁移到 IPv6,迁移并不意味着将 IPv4 替换为 IPv6。这仅意味着同时启用 IPv6 和 IPv4。
总结
本文总结了一个前端工程需要掌握的网络知识,这些知识虽然不常见,但是它无时无刻不出现在工作中。
- 网卡:每台计算机都有一个独一无二的网卡,局域网内的数据传输就是根据网卡来找到对方;
- 交换机:连接区域内的多台主机,形成了局域网;
- 路由器:把多个局域网连接在一起,组成了互联网;
- 公网IP:供应商(ISP)为每个局域网分配一个IP;
- 子网IP:局域网内的每台电脑IP;
- 端口:用来区分一台电脑内不同的应用程序;