2020-10-13
关键字:
1、计算机网络协议
计算机网络是通过数字电信号来传输信息的。数字电信号目前仅以两种状态表示:高电平与低电平。通过不同长度的高低电平组合就可以将人类世界中的任意信息电信号化,从而可以很方便地在计算机网络中传输。
既然计算机网络世界中传输的信号与人类世界中的截然不同,为了人们能够正常地使用计算机网络交流,就必须有一种“解密标准”来映射这两种符号。而这个“解密标准”就是术语“协议”的意思。
在计算机网络世界中的这种通信协议就是OSI参考模型,全称是开放式系统互联参考模型。换言之,只要我们遵循OSI参考模型,我们就能能过现有的计算机网络与任意一台计算机设备进行通信。
1.1、OSI参考模型与TCP/IP参考模型
OSI参考模型是由ISO(国际标准化组织)于1984年公布的通信协议标准。OSI将计算机网络通信明确区分为三个模型:1、协议;2、服务;、3、接口。OSI将整个通信过程划分为多个层次,不同层次有不同的职责,彼此分工明确且互不干扰。最上层直接对接人,最下层直接对接物理线缆。下层对上层提供相应的服务,或者说下层是代替上层完成一些“琐碎的事”。接口则是不同层次之间的访问标准;而协议就是收发双方在相对应的层次中的电平信号解析标准。三者之间的关系如下图所示:
OSI参考模型总共分为七层:
1、物理层;
2、数据链路层;
3、网络层;
4、传输层;
5、会话层;
6、表示层;
7、应用层。
物理层就是物理线缆,传输物理通信信号的。目前有两种:1、电信号;2、光信号。物理层交换的数据的最小单位名称是比特(bit),即一个数据位。
数据链路层工作于物理层之上,可以简单理解为是聚集一定数量的物理信号以形成有意义的网络数据后判断此数据包是否属于自己进而交由上层作进一步解析用的。交换机就是工作于这一层次的。
网络层的目的是负责将数据从发送方传递到接收方。可以简单理解为是跑腿的,它仅负责帮你把数据包送达。路由器就是工作于这一层次的。
传输层负责控制数据的传输结果。网络层向传输层提供的服务就是“保证帮你送达”,至于送过去的数据对不对、该用什么样的方式来发送接收数据则是传输层的职责。简单来说就是传输层更偏向于业务。
会话层、表示层与应用层现在更多地将它们合并为一层来讨论。它们就是具体的应用阶段了,比如发送一张图片你要将图片数据在哪个地方封装,除了图片外还要额外携带什么信息就是由应用层来管控的。
早期的OSI参考模型在实际应用过程中被发现定义的过于细致了,为了兼顾技术上的便利性,人们更多地会将会话层、表示层与应用层合并统称为应用层。也就是说,OSI七层参考模型在付诸实践后很快就被简略为五层模型了。
然而,随着人们对网络通信理解的进一步加深,发现其实物理层与数据链路层也可以合并为一个层次,进一步将OSI五层模型简化为四层模型。这种四层的通信模型就是 TCP/IP参考模型。OSI七层参考模型是先设计再实践,而TCP/IP参考模型则是根据现有的OSI应用经验归纳并剔除了缺陷之后总结出来的通信模型,因此后者显然更具实践价值,而前者看起来只有指导意义。
TCP/IP参考模型总共分四层:
1、网络接入层;
2、互联网层;
3、传输层;
4、应用层。
TCP/IP参考模型各个层次的作用与OSI参考模型大同小异,这里就不再赘述了。
值得注意的是,虽然现实应用中多是使用TCP/IP参考模型的,但是我们在讨论的时候,对各个层次的叫法却仍旧是按七层OSI参考模型来的。
1.2、数据在网络中的传输方式
按照TCP/IP参考模型,数据在每一层都会进行一次封装,直至最终在线缆上传输出去。
数据在发送过程中每层封装的过程如下图所示:
至于接收过程,就是发送过程的逆序了,每到一个层次拆去一个包头,直至最后到应用层剩下裸数据。
负责数据包的传输过程的设备一般有交换机和路由器,当数据包到达这两种设备时会分别去解析读取对应层次的包头以对这个数据包的下一步处理作出决策。有些甚至会主动修改对应的包头信息。例如路由器至少会修改IP头部的TTL以及重新计算校验码。
真实的网络通信过程远比上述过程要复杂的多,不过它们大体上都是按照上述原理进行演化深入而来的,想要真正掌握网络通信过程,还需要后续大量的实践经验才行。
2、IPv4地址
正如其名所示,IPv4地址就是IP地址的第四个版本形式。至于它前面几个版本是什么样的,以及都有哪些应用场景我们不得而知,也不必去知,IPv4才是与我们接触的最多的网络地址形式。IP地址是设备在计算机网络中的虚拟地址,一个数据包要发送给谁,而那个接收方又身处何方,就靠它来决定。IP地址类似于现实世界中的行政区域地址。IPv4地址由4个字节表示,不过我们在日常交流时常用小数点将四个字段分隔,每个字段以十进制数表示。形如:8.8.8.8 或 192.168.1.254。
由于IPv4有4个字节,理论上它可以提供约42亿个地址出来,如此庞大的数量必须分类以便于管理。
IPv4地址将地址分为两个部分:
1、网络位;
2、主机位。
网络位占据地址的高位若干位,主机位占据地址的剩余位。网络位可以简单理解成是我们现实世界中的“行政区域”,是一个同一区域为多数人共有的编号,如:广东省惠州市惠城区某某镇。而主机位则可理解为是具体的某个设备,如我们现实世界中的“张三”、“李四”等。现实世界中我们通过行政区域地址+姓名就能确定出具体的某个人,计算机网络中的IPv4地址的网络位+主机位也有同样的效果。
早期的IP地址中规定仅最高字节的8位为网络位,其余部分为主机位,如下图所示:
这种分类形式因为局限性太强很快就被更优秀的分类方式替代掉了。
2.1、IPv4地址的分类
新的地址分类方式更灵活,扩展性也更强。它将IPv4地址划分为五个大类,不同类型的地址其网络位长度也不一样。具体如下所示:
1、A类地址;
最高位为0的地址即为A类地址。其有效范围为:0.0.0.0 ~ 127.255.255.255,A类地址的网络位占据最左侧的高8位。
2、B类地址;
最左侧高二位为10的地址即为B类地址。其有效范围为:127.0.0.0 ~ 191.255.255.255,B类地址的网络位占据左侧2个字节,即高16位。
3、C类地址;
高三位的值为110的地址即为C类地址。其有效范围为:192.0.0.0 ~ 223.255.255.255,C类地址的网络位占据高24位。
4、D类地址;
高四位的值为1110的地址即为D类地址。其有效范围为:224.0.0.0 ~ 239.255.255.255,D类地址不区分网络位和主机位,它是特殊用途地址,目前作为“组播”地址在专网中使用。
5、E类地址。
高四位为1111的地址即为E类地址。其有效范围为:240.0.0.0 ~ 255.255.255.255。E类地址为保留地址,目前未作它用。
这里需要强调的是:IPv4地址中主机位为全0的地址表示这个网络的网络地址,主机位为全1的地址则表示这个网络的广播地址。这两个地址都是某一网络中的特殊地址,是不能分配设备使用的。换句话说,一个使用C类地址的网络中最多可以同时允许 2^8 - 2 = 254 台设备接入网络。
2.2、掩码
IPv4地址的五个类别同时派生了一个新的概念:掩码。
掩码的作用就是从一个普通的IPv4地址中提取出网络位来。这种提取最简便的方式就是对IP地址作“按位与”操作。于是,掩码同样可以以点分十进制形式表示,一个IPv4地址在分配时有多少个字节的网络位,其对应的掩码的高位就有多少个255。例如,A类地址的掩码恒为255.0.0.0,B类地址的掩码恒为255.255.0.0,C类地址的掩码恒为255.255.255.0。说白了,掩码就是高位有网络位数个1,其余位为0。
由于掩码总是与IPv4地址成对出现,于是这对组合的表现形式也被简化为了直接在IP地址后面加个 /位数 的表示形式,如:A类地址--1.1.1.2/8,C类地址--192.168.77.8/24。
2.3、子网与无类编址
经过改进后的将IPv4地址分为五个类别的地址形式仍旧发生了大量的地址浪费现象。
IP地址是由专门的机构ICANN分发管理的,一个IP地址只有经过那个机构的认可才能够接入到互联网中。当一个C类地址被分配出去时,地址浪费的现象可能还会好很多,因为一个C类地址的主机数量最多可达254个,现代机构或组织需要接入到互联网的设备轻松就能达到这一量级。但若是一个B类地址被分配出去情况就大不一样了。一个B类地址的主机数量可达6万多台,一个网络位对路由器来说其实就是一个局域网,极少有组织需要如此庞大的局域网需求的,这就势必会造成大量的地址浪费现象。A类网址的一千六百多万个主机位情况更甚。
为了解决这种“有类编址”方式带来的大量地址浪费,一种被称为“可变长子网掩码(VLSM)”的技术出现了。
可变长子网掩码就是从IP地址中的主机位再拆分出一个“子网位”来,子网位作为网络位的拓展,对原本较大的网络进一步细分为若干个较小的网络,降低网络中主机数量,提高IPv4地址的有效利用率。
可变长子网掩码技术的关键点在掩码上。按照之前的标准,掩码其实就只有几个数值:255.0.0.0 , 255.255.0.0 , 255.255.255.0。有了子网位以后,掩码的数值就丰富很多了。子网位的划分其实就是把原先划分网络位与主机位的流程在主机位的基础上再来一次,主机位上最左侧开始按需置若干数量个1,以此作为子网位。例如,可能的VLSM有:255.128.0.0 / 255.192.0.0 / 255.224.0.0。 不可能的VLSM有:255.64.0.0 / 255.1.0.0 / 255.8.0.0。 与IP地址联合表示的形式则有:13.5.99.3/10 或 192.168.1.1/28等。
数据包在计算机网络中传输的过程的术语称为“路由”,这一过程主要由路由器完成。路由器内部会维护一张被称为“路由表”的表格,路由表中记载着的是类似于发往某个网络的数据包该从哪个口出去的信息,当没有引入VLSM技术时,路由表会随着网络规模的扩大而不断增大,从而延长每台路由器的查表时间,最终导致整体网络性能下降。若打破旧有的有类编址方式,直接将VLSM形式的地址信息保存在路由表中就可以显著降低路由表的体积,提升路由效率。这种方式被称为“无类编址”。例如,某路由表中一个 192.48.8.0/22 的网络,在有类编址下就只能用三条记录来表示:192.48.8.0/24 , 192.48.9.0/24 , 192.48.10.0/24。见微知著,应用了无类编址方式后路由表的规模肯定也能显著减小。
从本质上来说,子网与无类编址是一样的,它们的关键点都在于掩码。而掩码在如今的计算机网络中所起的作用越是越来越关键。不幸的是,不管人们如何升级IPv4地址的分类规则,也仍旧无法打破它天生的缺陷--总数量太少,跟不上日益壮大的网络世界。4个字节的IPv4地址虽然理论上能够提供约42亿个地址,在当年看来是一个无论如何也不可能耗尽的数量级。但谁也没想到计算机网络会发展的如此之快,目前IPv4所能提供的地址数量已经无法满足我们的需要了。拥有更大容量且分类更为合理灵活的IPv6已经开始走进我们的生活。IPv6不在本文的讨论范围之内,希望后续有机会能再专门为它成文一篇。现在就先到这。