网络层详解----1
网络层提供的两种服务
虚电路服务:当两个计算机进行通信时,先建立连接,以保证双方通信所需的一切网络资源。
数据报服务:网络层只向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不建立连接,每一个分组独立发送,与其前后分组无关,也不提供服务质量承诺。
IP协议
IP协议配套使用的还包括ARP(地址解析协议)、RARP(逆地址解析协议)、ICMP(网际控制报文协议)、IGMP(网际组管理协议)。
虚拟互连网络
将网络互连需要通过一些中间设备:转发器物理层()、网桥或桥接器(数据链路层)、路由器(网络层)和网关(网络层以上)。当中间设备是转发器或网桥时仅仅是把一个网络扩大,一般不称为网络互连。
虚拟专用网:逻辑互联网。意思是互连起来的各种物理网络的异构性是客观存在的,但是使用IP协议可以使这些性能各异的网络在网络层看起来是一个统一的网络。
分类的IP地址
IP地址就是给因特网上的每一个主机(或路由器)的每一个端口分配一个唯一的32为标识符。IP地址的编制方法经历了三个阶段:
- 分类的IP地址
- 子网划分
- 构成超网
IP地址划分为若干个固定的类,每一个地址都有两个固定长度的字段组成,其中第一个字段是网络号,第二个字段是主机号。
A类地址:网络地址(1Byte) + 主机地址(3Byte),且网络地址的首位必须是0;则网络地址的取值范围是0~127,网络号全为0的地址是保留地址,而127也是保留的地址,并且是用于测试环回用的。因此A类地址的范围其实是从1-126之间。 可用的A类网络有126个,每个网络能容纳1亿多个主机(2的24次方减2的主机数目)。 子网掩码:255.0.0.0。A类IP范围:首位为0;1.0.0.1~~126.255.255.254;主机号24位
B类地址:网络地址(2Byte) + 主机地址(2Byte),且网络地址的前两位是10;则网络地址的取值范围是128~~191, 可用的B类网络有2的14方减1个,每个网络能容纳6万多个主机 (2的16次方减0和广播地址)。 子网掩码:255.255.0.0。B类IP范围:前两位为10 ;128.1.0.1~~191.255.255.254;主机号16位
C类地址:网络地址(3Byte)+主机地址(1Byte),且网络地址的前三位是110;则网络地址的取值范围是192.0.1~~223,可用的C类网络有2的21次方减1,可达209万余个,每个网络能容纳254个主机。子网掩码:255.255.255.0。
C类IP范围:前三位为110;192.0.0.1~~223.255.255.254;主机号8位
D类地址:此类地址称为多播地址,也叫做组播地址,前四位必须是1110;网络地址的取值范围是224~~239,D类IP范围:前四位为1110;224.0.0.1~~239.255.255.254
E类地址:此类地址是保留地址,留作将来使用,前五位必须是11110;网络地址的取值范围是240~~254,E类IP范围:前五位为11110;240.0.0.1~~254.255.255.254
IP地址的特点:
- 每一个IP地址都有网络号+主机号两部分组成。 从这个意义上讲,IP地址是一种分等级的地址结构。分等级带来的好处: a、IP地址管理机构在分配IP地址时,只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样便于管理; b、路由器仅根据目的主机所连接的网络号来转发分组(不许用考虑主机号),这样就可以使用路由表中的项目数大幅度减少,从而减少路由表所占用的内存,检查查找路由所使用的时间。
- 实际上一个IP地址用来标志 一个主机(或 路由器)和一条链路的接口。当一个主机同时连接到两个网络时(如:实验室的代理服务器)。该主机必须具有两个相应的IP地址。这是的主机成为多归属主机
- 交换机是数据链路层上的设备,用它连接起来的主机仍然属于同一个网络。而不同局域网的主机由于网络号不同,必须通过路由器连接起来。
- 所有的网络号是对等的。
IP地址与硬件地址
物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(IP地址是用软件实现的)。
地址解析协议
网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系(IP地址有32位,而局域网硬件地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的硬件地址改变。地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
IP数据报格式
- 版本:占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。以后应该会使用IPV6
- 首部长度 :占4位,可表示的最大十进制数值是15。注意,这个字段所表示数的单位是32位字(1个32位字是4字节),因此首部最大长度为60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用组后的填充字段加以填充。
- 区分服务 :占8位,用来获得更好的服务。
- 总长度:总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。虽然使用尽可能长的数据报会使传输效率提高,但由于以太网的普遍应用,所以实际上使用的数据报长度很少有超过1500字节的。当数据报长度超过网络所允许的最大传送单元MTU时,就必须把过长的数据包进行分片后才能在网络上发送。
- 标识:占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就+1,并将此值赋给标识字段。但这个标识不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据包由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的个数据报片最后能正确地重装成为原来的数据报。
- 标志 :占3位 ,目前只有2位有意义。 标志字段中的最低位记为MF(more fragment)。MF=1即标识后面还有分片的数据报。MF=0标识这已是若干数据报片中的最后一个。标志字段中间的以为记为DF(don't fragment),意思是不能分片。只有当DF=0时才允许分片。
- 片偏移:13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节的整数倍。
- 生存时间TTL(time to live):占8位,表示数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,白白消耗网络资源。路由器在转发数据报之前就把TTL值-1.若TTL值减小到0,就丢弃这个数据报,不再转发。因此TTL的单位是跳数。TTL的意义是指明数据报在因特网中至少可经过多少个路由器。显然,8位对应255,所以数据报能在因特网经过的路由器最大是255个。若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。因为这个数据报一传送到局域网上的某个路由器,在被转发前TTL值就减到0了,因而就会被这个路由器丢弃。
- 协议:占8位,协议字段指出数据报携带的数据使用何种协议,以便使目的主机的IP层知道应该将数据部分上交给哪个处理过程。
- 首部检验和 占16位。这个字段只检验数据报的首部,不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间,标志,片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
- 源地址:32位
- 目的地址:32位
IP层分组转发的流程
- 从数据报的首部提取目的主机的IP地址D,计算出目的主机的网络地址N。
- 若N就是与此路由器直接相连的某个网络的网络地址。则直接进行交付,不需要经过其他路由器,而是直接将IP数据报交付给目的主机。(注意,直接交付时,路由器需要将目的主机地址D转换为具体的硬件地址,把数据报封装在MAC帧,在发送此帧。) 若N不是与此路由器直接相连的网络,就进行间接交付。执行3.
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4。
- 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行5。
- 如果3和4都没能将IP数据报转发出去,若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认;否则执行6。
- 报告转发分组出错。