计算机网络第4章 网络层(上)
《计算机网络(第七版)-谢希仁》 第4章 网络层(上)
IP协议的主要内容
本章主要内容是:
- 虚拟互连网络的概念
- IP地址与物理地址的关系
- 传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR
- 路由选择协议的工作原理
网络层提供的服务
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。
网际协议IP
与IP协议配套使用的还有三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
网际协议IP是用来使互连起来的许多计算机网络能够进行通信的, TCP/IP 体系中的网络层常常被称为网际层(internet layer), 或IP层。
虚拟互连网络
从一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在层次,可以有以下四种不同的中间设备:
- 物理层使用的中间设备叫做转发器(repeater)
- 数据链路层使用的中间设备叫做网桥或桥接器(bridge)
- 网络层使用的中间设备叫做路由器(router)
- 在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。
参加互连的计算机网络都使用相同的网际协议IP (Internet Protocol)。虚拟互连网络(internet):也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。
分类的IP地址
IP地址及其表示方法
整个的互联网就是一个单一的、抽象的网络。IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。IP地址的结构使我们可以在互联网上很方便地进行寻址。IP地址现在由互联网名字和数字分配机构 ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。
所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个互联网范围内是唯一的。
A类、B类和C类地址都是单播地址(一对一通信),D类地址(前4位是1110)用于多播(一对多通信),E类地址(前4位是1111)保留为以后用。
近年来己经广泛使用无分类IP地址进行路由选择,A类、B类和C 类地址的区分己成为历史。
常用的三种类别的IP地址
- A类地址
A类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0),但可指派的网络号是126个(即2^7^- 2)。
减2的原因是:第一,IP地址中的全0表示 “这个(this)”。网络号字段为全0的IP地址是个保留地址,意思是“本网络”;第二,网络号为127 (即01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信之用。
A类地址的主机号占3个字节,因此每一个A类网络中的最大主机数是2^24^ - 2,即 16777214。
减2的原因是:全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址(例如,一主机的IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0),而全1表示“所有的(all)”,因此全1的主机号字段表示该网络上的所有主机。
IP地址空间共有2^32^ (即4294967296)个地址。整个A类地址空间共有2^31^个地址,占 整个IP地址空间的50%。
- B类地址
B类地址的网络号字段有2个字节,但前面两位(10)己经固定了,只剩下14位可以进行分配。因为网络号字段后面的14位无论怎样取值也不可能出现使整个2字节的网络号字段成为全0或全1,因此这里不存在网络总数减2的问题。但实际上B类网络地址 128.0.0.0是不指派的,而可以指派的B类最小网络地址是128.1.0.0。因此B类地址可指派的网络数为2^14^ - 1,即16383。B类地址的每一个网络上的最大主机数是2^16^ - 2,即65534。这里需要减2是因为要扣除全0和全1的主机号。整个B类地址空间共约有 2^30^个地址,占整个IP地址空间的25%。
- C类地址
C类地址有3个字节的网络号字段,最前面的3位是(110),还有21位可以进行分配。C类网络地址192.0.0.0也是不指派的,可以指派的C类最小网络地址是192.0.1.0,因此C类地址可指派的网络总数是2^21^-1,即2097151。每一个C类地址的最大主机数是2^8^ - 2,即254。整个C类地址空间共约有2^29^个地址,占整个IP地址的 12.5%。
IP地址与硬件地址
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的)。
在IP层抽象的互联网上只能看到IP数据报。
虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
在局域网的链路层,只能看见MAC帧。MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化。
-
IP层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地
址研究主机和主机或路由器之间的通信。
地址解析协议ARP
地址解析协议ARP解决问题的方法是在主机ARP高速缓存中存放一个从 IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
IP数据报格式
IP层转发分组的流程
在互联网上转发分组时,是从一个路由器转发到下一个路由器。
在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址、下一跳转地址)
分组转发算法如下:
- 从数据报的首部提取目的主机的IP地址D得出目的网络地址为N
- 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行3
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则,执行4
- 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行5
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6
- 报告转发分组出错
划分子网和构造超网
划分子网
从两级IP地址到三级IP地址
- 一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。
- 划分子网的方法是从网络的主机号借用若干位作为子网号(subnet-id),当然主机号 也就相应减少了同样的位数。于是两级地址在本单位内部就变为三级IP地址:网络号、 子网号和主机号。
- 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。
子网掩码
子网数是根据子网号(subnet-id)计算出来的。若subnet-id有n位,则共有2^n^ 种可能的排列,除去全0和全1两种情况,就得出子网数。现在全1和全0的 子网号也可以使用了,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持
全0或全1的子网号这种较新的用法。
划分子网增加了灵活性,但却减少了能 够连接在网络上的主机总数。
使用子网时的分组的转发
- 从收到的数据报的首部提取目的IP地址D。
- 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行3。
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4。
- 对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”(AND操作),其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行5
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6
- 报告转发分组出错。
无分类编址CIDR(构造超网)
CIDR(Classless Inter-Domain Routing)最主要的两个特点:
- CIDR消除了传统的A类、B类和C类地址以及划分子网的概念
IP地址:={<网络前缀>,<主机号>}
,因此CIDR使IP地址从三级编址 (使用子网掩码)又回到了两级编址,但这已是无分类的两级编址。CIDR还使用“斜线记法”(slash notation),或称为CIDR记法,即在IP地址后面加上 斜线“/”,然后写上网络前缀所占的位数。 - CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”
在查找路由表时可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由。这叫做最长前缀匹配(longest-prefix matching),这是因为网络前缀越长,其地址块就越小,因而路由就越具体(more specific)。最长前缀匹配又称为最长匹配或最佳匹配。