友情链接
计算机网络浅谈(一)总括
计算机网络浅谈(二)物理层
计算机网络浅谈(三)数据链路层(1)
计算机网络浅谈(四)数据链路层(2)
前言
本篇开始梳理网络层的相关协议,网络层协议最为重要的当属网际协议IP(Internet Protocol),可见其对于互联网的重要程度,同时还必须要介绍与IP协议相辅相成的其他三个协议:地址解析协议(ARP),网际控制报文协议(ICMP),网际组管理协议(IGMP)。
正文
网络层概述
到网络层,即真正接触到计算机网络的核心部分。物理层与数据链路层主要实现的是物理层面的连接与传输,并且这种连接是同一类型网络之间的连接。但是只是连接统一协议的网络还是有所不足的,互联网要做的是将全球不同架构、不同协议的多个网络连接起来,这其中网络层绝对是重中之重,其通过将网络划分为内部网络和外部网络,实现不同的控制方式,最终将网络连接在了一起,由于其协议的合理性以及高效性,因此几乎所有主机都在使用IP协议。
当然这样的协议也不是完美的,首先IPv4就是IP协议的第四个版本,而IPv4协议由于IP数量限制也经历了三个阶段的优化:(1)分类IP地址(2)子网划分(3)构成超网。最终因为IP地址仍然不够用因此启用了IPv6协议。
IPv4编址
分类IP地址
开始时,IP地址主要使用4字节、两段结构,即:网络号,主机号。而为了不同用途、不同大小的网络得以区分,因此就将网络划分为A,B,C,D,E五类网络,A,B,C类地址都是对网络的大小加以区别,A类网络号为8位,B类为16位,C类为24位;而D类地址专用于多播,因为其不针对于某个主机,所以其主机号为0位,E类为预留IP地址。在编码上为了得以区分,A类最高位为0,B类最高位为10,C类最高位为110,D类为1110,E类为1111。这样不同的网络就可以加以区分,也比较好的对大小不同网络进行分类,一定程度上减小了IP地址浪费。
那么不同分类的IP地址指派信息大致如下:
网络类别 | 最大指派网络 | 第一个指派网络号 | 最后一个指派网络号 | 每个网络中的最大主机数 |
---|---|---|---|---|
A | 126 | 1 | 126 | 224-1 |
B | 16383(214-1) | 128.1 | 191.255 | 216-1 |
C | 2097151(221-1) | 192.0.1 | 223.255.255 | 28-1 |
其中比较特殊的为网络号全0代表本网络,网络号全1代表所有网络,而127作为本地环回测试地址,因此也比较特殊。当然主机号也是如此,全0代表本机,而全1代表网络内所有主机。
而分为两段式的原因主要在于减少路由器中路由表所占存储空间,只需要通过网络号进行路由,而不需要通过整个IP进行标识。
ARP协议
IP地址可以说是网络层即以上协议寻址的主要方式,而MAC地址就是作为物理层以及数据链路层的寻址方式。然而IP地址只是一个虚地址,真正标识一个主机的最终是MAC地址。因此最终IP地址必须转换为MAC地址才能真正找到目的主机,只不过IP协议将这些转换细节通过ARP协议悄悄完成了,因此上层完全不知道这样的联系。
地址解析协议 ARP即为了解决IP地址与MAC地址之间的映射而出现的协议,其通过在ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且映射表还要支持动态更新。
而ARP映射表的形成原理与交换机的自学习方式实在太像,这里不再重复,如果不太明白可看我的上一篇博客。
当然,保存在本机的ARP缓存肯定是要不断更新的,因此ARP缓存是设有生存时间的,当时间到了,就会重新获取其他主机的硬件地址,从而达到动态更新的功能。
而ARP如果想要对多个网络的不同主机进行映射表更新,就需要不断广播ARP请求,然后边缘路由器收到请求,再广播到临近网络中,以此往复。
子网划分与超网
由于IPv4分类地址空间利用率极低,为了在一定程度上提高IP地址的利用率,并且增加IP的灵活性,人们又出现了划分三级网络的想法,通过对网络内主机号进行再划分,路由器的路由不受影响,在交付过程中只需要先交付给本网络子网,再交付给某主机即可。
并且子网与子网之间可以进行隔离,这样就相当于对网络进行了再分,可以充分利用IP地址空间,而不需要因为安全性考虑而再购买新的IP地址。
而怎样才能知道子网占多少位?显然使用子网掩码是一个很好的方式。通过对IP地址进行按位与操作,即可实现子网的选择。
然而这样的方式还是无法真正实现IP地址的最有效利用,因为分类的限制使得公司获取的网络只能是8位,16位,24位,这样可能多数公司的IP会有极大剩余。因此CIDR无分类编址出现了,通过取消分类,网络号的长度可以由本公司主机数量自行选择,如某公司有120台主机,则主机号为7位,那么该公司就可以购买一个25位网络前缀长的网络地址块,这样有效减少了IP地址浪费。
网际控制报文协议ICMP
为了更好地转发IP数据报,并且提高IP数据报交付成功的机会,网际层使用了ICMP协议,允许主机或者路由器提供相关异常情况的报告。
ICMP报文主要分为ICMP差错控制报文以及ICMP询问报文。
ICMP差错控制报文主要有终点不可达、时间超过、参数问题、改变路由等多种报文,而询问报文则有如回送请求或回答、时间戳请求或回答等。
该协议主要还是反应当前的网络状态,通过不同类型的回复就可以知道当前网络或者路由发生了哪些状况。如Ping和Traceroute就是其协议的基本应用。
内部网关协议IGP
在前面提到,网络层是连接不同网络的协议,而内部网络和外部网络的连接方式显然是不一致的,因此我们将网络划分为内部网络和外部网络,而内部网络的路由选择协议最为常用的即RIP协议以及OSPF协议。
RIP协议
RIP协议又称基于距离向量的路由选择协议,是内部网关协议中较为简单实用的路由选择协议。其名字即暗示其路由选择是通过距离向量进行的。
路由表项中最重要的三部分即目的网络地址,距离向量,下一跳路由地址,通过解决下面三个问题,应该就可以理解路由器如何生成一个路由表项。
那么什么是距离向量?
距离向量通俗来讲即当前路由器到达目的网络的距离计数。一般规定路由器直接相连的网络距离为1,而到间接到达的网络的距离则是需要经过的路由器数+1。
而记录距离向量显然一个路由器是无法完成的,这需要多个路由器相互交换信息才能知道自己到达目的网络到底距离为多少。
那么如何进行信息的交换?
这里涉及到RIP协议的三个特点:(1)仅与相邻路由器交换信息(2)按照固定的时间交换信息(2)交换的信息时该路由器所有所知道的路由信息。
怎么计算距离向量?
这里就要涉及交换的具体细节:
(1)当一个路由器与某个相邻路由器进行信息交换时,如果该路由器没有某网络的路由表项,则拷贝表项,然后将距离向量+1,将下一跳路由地址设为相邻的路由器;
(2)如果路由器已有该表项,如果源路由表下一跳路由地址为相邻路由器,则直接更新;
(3)如果下一跳地址不是相邻路由器,则比较距离向量,距离向量比源路由表项小,则进行替换,否则丢弃。
(4)如果距离向量大于16,则认为网络不可达,即丢弃表项。
基本思路了解了,再来评估一下协议的好坏。RIP通过距离向量的实现方式非常简单,但是也有很大的问题,即 好消息传得快,坏消息传得慢 的特点。
对于正常的网络路由项,其相邻交换信息最终很快会使得整个网络信息收敛;但是当某个网络无法到达时,相连的路由器R2检测到网络不可达,将会把其表项删除,但是当进行进一步信息交换时,发现临近路由器R1有不可达网络的信息,因此进行更新;而再次进行更新时R1发现R2表项变化,则对自己的表项再进行更新,并把下一跳再次设为R2,这样循环不断,最终以某一路由器距离向量到达16位结束,此时R1,R2路由器才可知网络绝对不可达。
OSPF协议
虽然RIP协议简单且快速,但是正是由于RIP协议有坏消息传得慢的特点,才使得其优化协议OSPF出现。OSPF协议又叫开放最短路径优先协议。其使用的是Dijiekstra的最短路径算法,而其交换信息方式也与RIP有着很大的不同:
(1)采用洪泛法交换信息,路由器向除了传递给自己信息的其他端口发送消息,以此不断进行更新,最终实现全局收敛。
(2)发送的信息为与本路由器相连的所有路由器的链接状态
(3)只有当链路状态发生变化时,路由器才向所有路由器使用洪泛法发送此消息。
而使用洪泛法对于将会在短时间增加比较大的网络流量,OSPF为了尽量减小这种影响,
(1)将网络划分为若干个自治区域,只在自治区域内使用洪泛法,而每个自治区域选出一个或者多个边界路由器来进行自治区域间的信息交换.
(2)OSPF使用IP数据报直接进行传输,而不使用UDP进行传输,减少了数据通信量,一定程度也缓和了网络流量变化。
除此之外,OSPF还有一些比较重要的特点:
(1)OSPF允许管理员给每条路由指派不同的代价。OSPF针对不同类型的业务可以指派不同的路由。
(2)如果到达相同的目的网络有多条相同代价的路径,则可以将通信量分配给这几个路径,这也叫负载均衡。
(3)所有OSPF路由器都具有鉴别的功能,因此能够保证在相邻的可靠的路由器间进行链路状态的交换。
(4)OSPF支持可变长度的子网划分和无分类的编址CIDR。
(5)由于网络链路状态不断变化,因此每一个链路状态都有一个32位的序号,序号越大则越新。
外部网关协议BGP
产生原因
- 当前互联网的规模太大,使得自治系统之间的路由选择变得非常困难。
- 自治系统之间的路由选择必须考虑相关策略。由于一些自治系统不想要其他自治系统传输信息时通过自己的网络,因此只是使用最短路径算法有时不太合适。
BGP策略
BGP最终选择使用路径向量的方式来完成这一事宜,力求尽可能找到到达目的AS的一条比较好的路由线路。
在每个AS中,都有着至少一个BGP发言人,也叫BGP边界路由器,BGP边界路由器间通过TCP连接来相互交换信息,从而不断更新网络状态。
路由器构成
组成
路由器主要由两部分组成,分别为路由选择部分以及分组转发部分。
路由选择部分其核心部件是路由选择处理机,任务主要是根据所选定的路由选择协议构造出相应的路由表,同时定期地与周围路由器交换和更新相应的路由表。
交换结构又称为交换组织,它的作用是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。
IP多播
IP多播主要分为两种:(1)在本局域网上进行硬件多播(2)在互联网的范围进行多播
IP多播地址采用的是D类地址,范围是224.0.0.0-239.255.255.255。
局域网硬件多播
互联网号码指派管理局IANA拥有的以太网地址块的高24位为00-00-5E。因此TCP/IP使用的以太网地址块的范围主要是00-00-5E-00-00-00~00-00-5E-FF-FF-FF。以太网的硬件地址中第一字节为1时为多播地址,这种多播地址数占IANA地址数的一半。因此IANA拥有的以太网多播地址占总地址的一半,范围是01-00-5E-00-00-00到01-00-5E-7F-FF-FF。然后能够使用的位数只有23位,而IP多播地址能够使用28位,因此前5位舍弃不用,直接接到硬件多播地址后23位。但是这样可能会出现硬件地址相同的情况,此时必须使用软件进行过滤,并把不是本机要接收的数据报给舍弃。
IGMP协议
IGMP为网际组管理协议,IGMP并不是对互联网范围内所有的多播组成员进行管理,而是让连接在本地局域网的路由器知道本局域网是否有主机参加了多播组。
VPN虚拟专用网
产生原因
(1)由于IP地址的紧缺,一个机构能够申请到的IP可能远小于机构中主机数。
(2)并且考虑到互联网的安全性,一个机构并不需要将所有的主机都接到互联网上。
因此可以将这些仅在机构内部使用的计算机在本机构内自行分配其IP地址。
专用地址
RFC 1918文档规定了VPN的专用网络的IP地址范围,在互联网中的所有路由器,对目的地址是专用地址的数据报一律都不尽兴转发。
(1)10.0.0.0~10.255.255.255
(2)172.16.0.0~172.31.255.255
(3)192.168.0.0~192.168.255.255
虚拟专用网由来
由于很多跨国机构相隔距离非常远,因此想要连接多个地区的专用网就需要使用互联网作为通信载体,这样的专用网就叫做VPN。
但是在传输过程中必须要通过互联网,因此就需要在互联网传输过程中进行加密。两个机构之间的传输通过接入公网的路由器建立IP隧道进行加密传输,到达后再进行解密。