《计算机网络》之网络层

网络层

一、引言

       首先,作为OSI七层模型的第三层,网络层向下覆盖了多种数据链路层标准,向上兼容多种运输层协议。而体系结构中的这一层却显得特别窄:基本上只有“IP”一项。网络层将多个局域网通过路由器互连,构成互联网,而向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务(因特网的设计思路)。也就是说,网络层提供的是不可靠的交付。另外需要注意的是网络层提供的是数据报服务,而不是电信网络(拨打电话)的虚电路服务。

       网络层广泛使用TCP/IP体系中的网际协议IP(Internet Protocol)。IP协议的作用是使互连起来的性能各异的网络在网络层上看起来好像是一个统一的网络,当IP网上的主机进行通信时,它们看不见各网络的具体异构细节。在介绍IP地址这个概念之前,我们先来思考两个问题。一是IP地址和硬件地址有什么区别。硬件地址(MAC地址)是仅在数据链路层和物理层使用的物理地址,而IP地址是网络层和以上各层使用的一种逻辑地址。第二个问题,为什么要有IP地址而不直接使用硬件地址呢?这是因为,全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但统一且抽象的IP地址把这个问题解决了。它屏蔽了下层很复杂的细节,便于分析和研究问题

       与IP协议配套使用的还有四个协议(同属网络层):

(1)地址解析协议ARP(Address ResolutionProtocol) 将IP地址转换为物理地址(ARP请求分组、ARP响应分组)

(2)逆地址解析协议RARP(Reverse AddressResolution Protocol) 将物理地址转换为IP地址

(3)网际控制报文协议ICMP(Internet ControlMessage Protocol)

(4)网际组管理协议IGMP(Internet GroupManagement Protocol) 用于多播。

       在本文剩下的内容中,我们将首先介绍IP地址的内容,再介绍如何利用IP地址进行路由,最后介绍RIP和OSPF这两个常用的路由选择协议,顺便提了一下ICMP和BGP。而IP多播和NAT(Network Address Translation)则彻底略去。

二、IP地址

好了,下面来介绍IP地址的特征。IP地址基本上经历了四个发展阶段:分类的IP地址——(由两级到三级)—→划分定长子网掩码的子网——(子网掩码不固定长度)—→变长子网掩码VLSM(Variable Length Subnet Mask)的子网——(无类,回到两级)—→无分类编址CIDR(ClasslessInter-Domain Routing)。总的来看,IP地址从有类到类别弱化,最后变成无类;从两级到三级,最后又回到两级编址。每个发展阶段的IP地址都有它自己的特点。

(1)分类的IP地址 此时IP地址由网络号和主机号组成,依据网络号的不同分为以下5类。

类别

范围

专用地址

不指派的地址

A

0~127 (0)

10.0.0.0~10.255.255.255

0(本网络) 127(环回测试)

B

128~191 (10)

172.16.0.0~172.31.255.255

128.0

C

192~223 (110)

192.168.0.0~192.168.255.255

192.0.0

D

(多播)

224~239 (1110)

 

 

E

(保留今后)

240~255 (1111)

 

 

可以看出每类网络能够分配的网络号比较复杂,是“范围”除去专用地址再除去不指派地址后剩下的。而每个网络可指派的主机号则好记得多,只是全0和全1的这两个主机号不能指派而已。其中,主机号全0代表“本网络”,全1代表本网络上的所有主机,即广播(Broadcast)。

(2)划分子网 此时IP地址由网络号、子网号和主机号组成。子网比较简单,这里不再赘述。不过有一个结论需要注意:划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。也就是说,利用率提高(减少空闲浪费),不过每个子网的子网号不能为全0或全1,这相比从前减少了能够分配的主机号数。

(3)VLSM 在一个划分子网的网络中可同时使用几个不同的子网掩码,即可以构造“子网中的子网”。具体方法也不再赘述。

(4)CIDR 彻底消除有类地址和划分子网的概念,回归两级编址。此时IP地址由网络前缀和主机号组成。这里引入”斜线记法“(slash notation),如:128.14.35.7/20=1000000000001110 00100011 00000111. CIDR地址的聚合就是路由聚合(routeaggregation),也就是超网(supernetting)。超网的作用是减少路由器之间的路由选择信息的交换,从而提高了整个因特网的性能

我们知道,前面的几个阶段是不可以使用全0和全1的子网号的,因为可能会出现诸如此类的矛盾:即对于一个子网号和主机号都为全0的IP地址(100.0.0.0 子网掩码255.192.0.0),我们不能确定它表示的是对一个“大网”(100.0.0.0 掩码255.0.0.0)的广播,还是对一个子网(100.0.0.0 掩码255.192.0.0)的广播。在CIDR中,又可以使用全0和全1的子网号了,这是为什么呢?我询问了老师,他的解答是:判断是大网广播还是小网广播的关键是在于有没有子网掩码的辅助,早期子网划分中为了避免出现问题因而不建议使用全0或全1 的子网号,因为这个时候还是路由器上配置相应的子网掩码,可能有路由器不支持子网掩码;到了CIDR的时候其实对一个地址块描述的时候就必须要有掩码了,也就说大家都支持了,这个时候其实就不会出现由于没有掩码而出现的理解差异的问题了。按照老师的意思,CIDR的地址必须配备掩码,但IP数据报(见下节)中是没有专门的位置来存放掩码的,难道是将掩码统一存放在“可选字段”区吗?还希望知情人士给予解答

三、IP数据报

下面简单介绍IP数据报的格式。图示如下。

值得注意的地方有四个。

(1)首部长度 共占4位,但其值的单位是4字节,显然最大为(24-1)×4=60字节。也就是说,IP数据报首部长度为20~60字节

(2)总长度 共占16位,值的单位是1字节,指的是首部和数据之和的长度,也就是说,一个IP数据报最长为216-1=65535字节。实际的总长度还受数据链路层的“最大传送单元MTU(Maximum Transfer Unit)”限制,MTU一般小于1500字节。

(3)片偏移 共占13位,值的单位是8字节,指的是一个运输层分组经过分片后,产生的多个IP数据报中每个分片的数据部分的头部相对于原运输层整个分组的起点的位置。其实就是在这个分片前面分片的所有数据长度之和除以8(注意单位)。

(4)首部检验和 只检验首部,不检验数据部分。这里要与其他层的其他协议packet的检验内容区分开(MAC帧检验全部,RIP没有,OSPF检验全部,UDP和TCP也是检验全部)。采用的算法是二进制反码求和后取和的反码。关于“二进制反码(one’s complement)求和”要注意计算方法,其实就是有进位的相加,若最高位有进位就补加在最低位上。

四、路由

       细节也不赘述。简单强调一下路由匹配顺序,也就是分组转发算法①会首先判断目标网络地址是不是与自己直接相连的,来直接交付;②再看目标IP地址是不是路由表中的特定主机路由(即此IP地址的“高富帅VIP”路由记录),是的话就按此交付;③再看目标网络地址在不在路由表中(普通青年路由记录),是的话就按此交付;④最后看路由表中有没有一个默认路由(穷屌丝路由记录),有的话就按此交付,否则就报告转发分组出错

五、路由选择协议

       网际控制报文协议ICMP就略过了,它允许主机或路由器报告差错情况和提供有关异常情况的报告,分为ICMP差错报告报文和ICMP询问报文。

       具体的路由表是如何得到和维护的呢?这就需要路由算法。按照是自治系统AS(Autonomous System)内部的还是AS之间的,路由选择协议分为内部网关协议IGP(Interior Gateway Protocol)和外部网关协议EGP(ExternalGateway Protocol)。IGP中最常用的有路由信息协议RIP(Routing InformationProtocol)和开放最短路径优先OSPF(Open Shortest PathFirst)。它们的特点如下表

 

 

RIP

OSPF

 

相同点

性质

①都是IGP

 

②都是要寻找一条最短路径(Short Path First)

 

性能

③RIP2和OSPF都有鉴别功能(仅在可信赖的路由器间交换路由信息)

 

④RIP2和OSPF都支持VLSM和CIDR

 

不同点

性质

①使用分布式的基于距离向量的路由选择协议

①使用分布式的基于链路状态的路由选择协议

 

②只维持路由表

②维持一个本AS一致的链路状态数据库(AS拓扑图),和由此得出的路由表

 

③使用UDP传送

③直接用IP数据报传送

 

交换

④仅和相邻的路由器交换信息

④向本AS/area中所有的路由器用洪泛法(flooding)发送信息

 

⑤按固定时间间隔交换信息

⑤只有当链路状态发生变化时才发送信息

 

⑥发送自己的全部路由表

⑥只发送与相邻路由器的链路的状态

性能

⑦好消息传播得快,而坏消息传播得慢(收敛慢)

⑦收敛快

 

⑧限制网络规模(长度15)

⑧规模很大(将AS分成区域area)

 

⑨实现简单,开销较小

⑨原理简单,实现复杂

 

 

⑩对不同类型的业务可根据metric计算出不同的路由,灵活性高

 

 

⑪拥有负载平衡(load balancing)功能

 

       可以发现,RIP是使用UDP协议传送的,具体是将RIP报文加上UDP头部作为UDP用户数据报,然后再加上IP首部作为IP数据报的。这里网络层的协议使用到了运输层的协议,这个异常举动我一直没想明白。首先是不明白为什么要使用UDP数据报;其次是这样会不会影响到计算机网络体系结构的分层原则,反倒让上层为下层服务了;最后是路由器是不是也因此具有运输层的部分功能了,而不是一个纯粹的第三层设备了?还希望跟大家讨论这个问题

       RIP2和OSPF的报文格式如下图所示。要注意OSPF的“分组长度”字段是指总长度,单位为字节。“检验和”字段检测整个分组。



      最后介绍一点关于EGP的知识吧。边界网关协议BGP(Border Gateway Protocol)是外部网关协议EGP的一种。BGP只能是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由。一个AS的BGP发言人(往往是BGP边界路由器)之间使用TCP连接交换路由信息。

六、尾声

好了,到这里整个网络层就简单介绍完毕了,有些地方略过可能是因为相对不太重要,也可能是因为知识很基础,如果不懂的话最好阅读一下教材(本系列文章的第一篇《概述》中给大家推荐了三本书)吧!细心的同学可能发现,文章中留下了两个问题。当然问题抠的比较细,对考试应该没什么影响,但出于学问的角度我还是写了出来。如果你知道的话,欢迎解答!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值