网络层主要提供了两种服务:(1)面向连接(虚电路服务) (2)无连接(数据报服务)
各位平时用电话机打电话时,使用的就是面向连接的通信方式,先把网路给用户建立好,占用好资源再开始打电话,这样打电话的时候已经建立的线路就不会受其他影响而导致电话打不通之类的情况。。。。说的好像有点不清楚,就是说 虚电路是网络层向传输层提供的一种使所有分组按顺序到达目的端系统的可靠数据传送方式。进行数据交换的两个端系统之间存在着一条为它们服务的虚电路
无连接的,就是【分组转发】这样的通信方式,在需要经过很多个路由的通信线路上,数据报通过路由器自行选择走的线路。这样的通信是所谓的【尽最大努力交付】的不可靠传输。
我上网找了个图,先上图!
看到木有。。右边的虚电路建立好链路以后发送数据就按这个链路发送,左边的数据报就是一段一段的选择线路发送。
现在的因特网都用的是【数据报服务】,因为现在的主机比较强大,信息传输的可靠性可以由主机来完成,在TCP/IP协议中,一般是TCP层来完成。
下面,就正式开始【网际协议IP】的介绍
和IP协议配套的有3个协议:(1)地址解析协议ARP (2)网际控制报文协议ICMP (3)网际组管理协议IGMP
三个协议都会在后面一一介绍。在此之前,我们先了解一下,为什么要用IP协议,或者说IP协议是干什么的。
IP协议是用来转发数据的,用来告诉数据要发送到那个机器上。但是计算机在转发数据的时候,最终都是通过MAC地址转发完成的,知道源主机和目标主机的MAC地址,就可以把数据发送过去(后面会细讲)。那既然这样,为什么我们还要用IP协议?
具体原因是这样的,生产适配器的厂商很多,然后就衍生出各种格式的MAC地址,MAC地址不统一,数据就发送不了!!!!!这时候,IP协议从天而降。把各种异构网络(不同的寻址方案,不同的超时控制,不同的路由选择技术……)互连起来,形成了一个【虚拟互连网络】。bingo!
使用了IP协议后,网络层看起来就好像一个统一的网络(只是看起来像,其实不是)。
接下来,讲讲【IP的分类】,IP分类方法经历了3个阶段。分别是
(1)分类的IP地址
(2)子网的划分
(3)构成超网
从第一个慢慢说来……
分类的IP地址是由两部分组成,即 IP地址::={<网络号>,<主机号>} 不知道是哪个国家的惯例,“::=”的意思是“定义为”。咱就这样记吧,也比较好记。
IP地址是由ICANN这个机构给分配的,它只分配 网络号,所以一个网络号在因特网内必须唯一,而主机号在它前面的网络号中也是唯一的。可见
IP地址在整个因特网范围内是唯一的
第一个阶段,分类的IP地址共有5类地址
具体就是图上这样的,A类,B类,C类地址的网络号字段分别是1,2,3字节场,最前面的1~3位是类别位,数值规定分别是0, 10, 110
D类地址用于多播(一对多通信) E类地址作为保留为以后用。
IP地址都是32位的二进制代码,这样的代码对于计算机来说是方便了,但是对于我们来说就不好读了,所以,规定用 点分十进制记法 来表示IP,大家肯定都见过,比如说202.113.88.91这样的地址,其实就是11001010 1110001 1011000 1011011的点分十进制记法。
最常用的IP是A,B,C三类。下面给大家看一看各类IP的实际范围。
A类: 1.0.0.1-126.255.255.254(实际IP) 1.0.0.0-127.255.255.254(理论上的IP) 为什么会出现这种情况?下面再讲,先看完IP范围
B类: 128.0.0.1-191.255.255.254(实际IP) 128.0.0.0-191.255.255.254(理论IP)
C类: 192.0.0.1-223.255.255.254(实际IP) 192.0.0.0-223.255.255.254(理论IP)
IP地址中,全0主机号字段表示该IP地址是“本主机”所连接到的单个网络地址。比如1.0.1.1就表示网络地址为1.0.0.0
127.0.0.0这整个网络号都保留作为【环回测试】用,所以不在IP地址范围中。
一般,全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
然后就是一些【私有IP】,什么是私有IP?所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址。
对应于A,B,C三类地址共有三块私有IP,分别是:
10.0.0.0-10.255.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.169.255.255
IP地址有四个特点:
(1)IP地址是分等级的地址结构。IP地址管理机构分配IP时,只分配网络号(第一级),主机号(第二级)由得到网络号的单位自行分配,并且,路由器仅根据目的主机的网络号来转发分组
(2)IP地址是主机和链路的接口,若主机要练到两个网络,则需要两个IP,网络号必须不同,这种主机称为多归属主机。
(3)具有同样网络号的主机的集合就称为一个网络。就是说,只要网络号相同,就是在同一个网络里。
(4)所有网络号都是平等的
IP地址与硬件地址
直接上图:(网上没找到图,我去画一个把……)
看出来了呢?从网络层进到数据链路层的时候,IP数据报首部就被当做数据链路层的数据封装进去了!所以说,数据链路层是看不见数据报的IP地址的
下面,再给一个图(以下图都是从网上拔的,网上的图是从谢希仁的课本里拔的。。。)
看到没?在IP层中,源IP地址和目的IP地址始终不变。而数据链路层中的MAC地址一直在随着路由器的转发改变。这就是他们最大的区别了!
但是这会引起另外一个问题,不知道大家注意没有,MAC地址一直在变,那主机或者路由器怎么知道MAC帧首部应该填入什么硬件地址?好。。。这就是下面要说的问题,也是重点:【地址解析协议ARP】
ARP的作用就是这个: IP地址→ARP协议→硬件地址
ARP具体是怎么实现的呢? 这就要提到 每个主机中都设有的一个【ARP高速缓存】,ARP高速缓存中包含 本局域网上的各主机和路由器的IP地址到硬件地址的映射表。
就是通过这个表,IP地址就可以找到对应的硬件地址。
那最开始的时候是怎么生成这个表的呢?具体是这样........上图:
图很明白了吧?如果ARP高速缓存中没有目标IP对应的物理地址,主机就给局域网内所有的主机发送广播,然后对应IP的主机收到后,以单播的形式回答ARP请求。这时候,发送请求的主机A就把目的IP地址主机B的【IP与MAC地址的映射】写入到A自己的ARP高速缓存中。同时,B也得到了A的IP和MAC地址的对应,也将此映射写到B自己的ARP高速缓存中。
当然,既然叫 ARP高速缓存 了,那它就是一个缓存,既然是缓存就一定会在一定时间之后删除掉。 这个时间,就叫【生存时间】,每个映射项目都会设置一个生存时间。这种机制是保持网络通信的优良解决方案。
防止出现这种情况:就加入A的ARP高速缓存中有B的硬件地址的映射,但是B的适配器坏了,换了块新的。这时候,A就联系不上B了。因为A中存的B的硬件地址已经更改了。然后过了一小段时间,A的ARP高速缓存删除了B的原先的硬件地址,然后重新广播找到B的新硬件地址。
上面说的是在同一局域网的情况,如果要通信的两台主机不在同一局域网的话,就解析出要转发的路由器的MAC地址,把数据发给路由器,路由器通过路由表转发出去,最后通过最后一个路由再解析出要目标IP的MAC地址,传输数据!
另外,这种解析都是自动进行的,对用户来说是透明的!用户完全不知道发生了些什么。
到了这里,我再提一提为什么要用IP地址!ARP是把IP地址转为MAC地址的协议,既然最后的传送都用的硬件地址,为什么还要使用IP地址多此一举的转化?就像我最开始说的,MAC地址的规格不统一~~~~~,所以,所以,用IP地址来统一所有的不同的异构网络,不同的MAC地址!
内容太多了,我决定再把IP的划分方式分一分,IP数据报格式,划分子网,构成超网这些内容放在下一次再讲!