在正式介绍IP协议前,先介绍了IP协议所述的网络层承担的任务。
在通信领域,可靠的交付应该由谁来完成一直是一个争论不休的问题。这里所谓可靠的交付是说谁应该对网络中传输的数据进行可靠性检查和保证。
这里的“谁”也只有两个候选——传输的网络 or 端系统。
从历史来说,电话网络(电信网)就是采取的网络负责可靠的交付的,这种交付的特点是在传输数据前,会先在发送方和接收方建立连接,这种连接一旦建立就占用了网络中的服务,相当于有一个管道直接从接收方连到发送方,这个管道占用了资源,阻塞了双方。如果有很多人同时使用,会由于占用管道通信而导致电话打不通(电话中常见的服务被占用)。但由于建立了连接,因此这种服务是可靠的。这种服务被称为面向连接的服务。
与之相对的是无连接服务。即发送方传输数据到接收方时,不需要建立连接,可靠的传输由端系统来完成。如果有很多人在使用网络,虽然仍然会有占用的情况,但数据总是可以发出去的,不会出现发送方等待的情况(只会出现接收方等待的情况)。
而计算机网络就是采用的端系统。
原因之一就是——计算机网络的端系统(一般来说有主机,个人电脑)比电话网络的端系统(电话)要智能的多,也复杂的多,因此可以完成可靠性验证这些问题。
由于计算机网络采用的端系统,因此,网络中的中转设备(比如路由器)就没有特别复杂,不需要对传输数据进行准确性校验,因此价格便宜。相对的,电话网络的中转设备则是十分昂贵。
由此,总结出网络层对于数据传输的特点:网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。
IP——Internet Protocol,是网络层的主要协议,网络层的传输就是通过IP协议完成的。
IP地址,就是给因特网上的每一个主机(或路由器)的每一个接口分配一个全世界范围唯一的32位的标识符。
额外需要说明的是,在各层级中,都会有中间设备将不同的网络连接起来。
路由器是网络一层的中间设备。从上一节可以看出,作为中间设备的路由器只到网络一层。
也就是说,一台计算机可能有多个IP地址,这里的接口就是计算机后面的网线接口,如下如:
虽然说大多数的机箱都只有一个接口。
由于是32位,可以将其转换为4个字节。
IP地址只是一种逻辑地址,供网络层及以上各层使用。实际上数据在网络上传输时使用的是物理地址(硬件地址)。
从上图可以看出,计算机网络传输数据时,IP数据报中的信息是不变的,这是因为源IP和目的IP不变。而数据链路层使用的MAC帧的数据是会变得,主要就是硬件地址的变化。
可以理解为,信息在网络上传输时,实际上使用的是物理地址,但为了抽象,屏蔽掉物理层的信息,抽象出了IP地址。
该节简介下路由器。我们知道了数据的传输实际上靠的的物理地址,IP地址只是一种抽象,那么可不可以在网络中只使用物理地址,而不使用IP地址呢?毕竟我们只在主机上才会需要IP地址(这点存疑),而网络只是传输数据的媒介。
换句话说:
路由器这一层的设计可不可以只到数据链路层层(见网络图)?
遗憾的是这是不可能的,稍加思考就发现了问题:因为数据的起始地和目的地都是使用IP来表示的。然后一般在传输中还需要经过中转。如果路由器的设计只到数据链路层,那么中转的路由器无法选择下一条应该是那个路由器,因为在数据链路这一层,无法得知IP,因此无法得知下一条的物理地址(见上图)
这就是路由器设计到网络层的原因。另外,从上面的功能描述中,还得知,路由器具有选择下一跳的功能。说白了,具有选择功能。
根据经验,选择功能一般都是通过表来实现的,实际上路由器内部维护了一张路由表,用来选择下一跳的路由器。
由此,我们明白了路由器选择路由的依据。在掌握路由器到底按照什么规则选择路由前,需要较明确的了解IP本身。
了解了IP地址的基本作用,来看看IP地址的具体表示,及分类。
为什么要分类?
原因很简单,计算机网络是分级的,因此对于IP地址需要合理的管理手段
IP地址的三个阶段分别是:
需要强调的是:三类划分所解决的问题只有一个,那就是方便管理。
最基本的编址方法是分类的IP地址,通过将IP地址划分为若干个固定类,每一个地址有两部分组成——网络号(net-id),主机号(host-id).
如下是三个分类
通过前缀可以看出某个IP地址(或者网络号)是哪个类别。
如下是IP地址的指派范围:
网络号是全0的IP地址是吧保留地址,一般意味本网络,如0.0.0.3表示该网络上的主机号为35的主机
网络号127意味回环测试,例如127.0.0.1或者127.0.0.2
全0的主机号表示“本主机”所连接到的单个网络地址,比如IP地址为5.6.7.8则该主机所在网络为5.0.0.0
全1表示该网络号上的所有主机
分类的IP地址解决了一个基本问题,那就是建立了基本的管理IP地址的方案,即单位部门获取一部分ip集合,并可以自行分配
IP分类后,我们就可以掌握分组转发的规则,即路由器是依据什么来进行数据传输的了:
分组转发算法如下:
但分类的IP地址有一个很大缺陷,即三类地址所包含的ip个数的差别太大了,见上表,A类地址有16777214个,C类却只有254个。虽然解决了基本问题,但仍然不便管理。这是其一。
第二个缺陷是,A类地址和B类地址会导致路由器中路由表数量太大。从上面的IP地址与硬件地址可以看出,路由器传输ip数据报是根据路由表来实现的。想象一下一个A类地址的的路由器,该路由器里面最多有16777214个项,这会导寻址职速度下降。
为了解决上述第二个问题,即为了减少路由器中的项的数量,且更好的管理ip地址。提出了划分子网,实现方案是在划分的ip地址块中在进行划分,即从主机号的位置拿出几位作为“子网号”。
本质是分类ip地址的下一级划分。
为了配合划分子网,需要引入另一个额外的数据字段,即子网掩码。这样一来,大的路由器中就只需要保存子网的地址(不需要保存子网中的主机的地址)和该子网的子网掩码。
这种方案解决了路由器中路由项太多的的问题,其实这是一种折中的方案,因为虽然路由项变少了,但却引入了下一级路由器,相当于延长了ip数据报传输的路径。
好了,到这里总结下,划分子网主要解决了两个问题:管理难,路由表太大。
第三类编码方式解决的就是上述分类的ip的第一个问题了:随机数量的ip分配(其实是相差2被的网络分配)
一句话总结:无分类的取消了A,B,C类ip地址划分,保留了划分子网,不过在这里,子网掩码被称为“地址掩码”
这里,“地址掩码”也可以看做是前缀的位数。
可以看出,无分类编址的设计,基本满足了申请任意个ip地址个数的请求。
最后总结下,关于IP地址的分类:
IP地址最单的分法是A,B,C类,但A,B,C类IP地址在数量上差距太大,于是提出了无分类的IP地址。为了更进一步管理,才提出了划分子网。