龙空技术网

计算机网络知识总结(四)网络层(上)

研芝士计算机考研 1082

前言:

今天大家对“路由表必须包含哪三项内容”大体比较注意,我们都需要了解一些“路由表必须包含哪三项内容”的相关内容。那么小编同时在网摘上收集了一些有关“路由表必须包含哪三项内容””的相关内容,希望小伙伴们能喜欢,我们快快来了解一下吧!

1、网络层提供两种服务

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

网络层不提供服务质量的承诺。

虚电路服务

借助于电信网的成功经验,让网络负责可靠交付。用面向连接的通信方式,当两个计算机进行通信时,应当向建立连接(在分组交换中建立一条虚电路VC(Virtual Circuit)),以保证双方通信所需的一切网络资源,然后双方沿着已建立的虚电路发送分组。这样的分组的首部不需要填写完整的目的主机地址,而只需要填写这条虚电路的编号(一个不大的整数),因而减少了分组的开销。这种通信方式如果再使用可靠传输的网络协议,就可使所发的分组无差错按序到达终点,也不丢失、不重复。在通信结束后要释放建立的虚电路,图1(a)是网络提供虚电路服务的示意图,主机H1和H2之间交换的分组都必须在事先建立的虚电路上传送。

数据报服务

考虑到计算机网络的端系统是有智能的计算机,计算机有很强的差错处理能力(不像电信网的终端(电话机)非常简单,无智能和差错处理能力),因此因特网在设计上就采用了和电信网完全不同的思路。网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接,每一个分组(也就是IP数据报)独立发送,与其前后的分组无关(不编号)。网络层不提供服务质量的承诺。所传送的分组可能出错、丢失、重复和失序,也不保证分组交付的时限。由于传输网络不提供端到端的可靠传输服务,这样的好处是路由器做得比较简单而且价格低廉,大大降低了网络的造价,运行方式灵活,能够适应多种应用。图1(b)是网络提供数据报服务的示意图,主机H1向H2发送的分组各自独立地选择路由,而且传送的过程中还可能丢失。

2、网际协议IP

与IP协议配套使用的还有三个协议

地址解析协议 ARP网际控制报文协议ICMP网际组管理协议IGMP虚拟互连网络

由于用户的需求是多种多样的,没有一种单一的网络能够适应所有用户的需求,所以市场上有很多种不同性能、不同网络协议的网络。面对不同的寻址方案、不同的最大分组长度、不同的网络接入机制、不同的超时控制、不同的差错恢复方法等等,网络的互连变得复杂。

将网络相互连接起来要使用一些中间设备

在物理层使用的中间设备叫转发器。目的是加强信号强度的在数据链路层使用的中间设备叫网桥。在数据链路层使用的中间设备叫网桥。网络层使用的是路由器。负责路由选择,功能简单地说就是存储转发网络层使用的是路由器。负责路由选择,功能简单地说就是存储转发网络层以上使用的中间设备叫网关(gateway)网络层以上使用的中间设备叫网关(gateway)

互联网可以由多种异构网络互连组成。

H1 - R1 - R2 - R3 - R4 - R5 - H2

分类的IP地址1. IP地址及其表示方法

IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。

IP地址 ::= {<网络号>, <主机号>}

A类、B类和C类地址都是单播地址

2. 常用的三种类别的IP地址

说明:特殊的几个IP地址:

127.0.0.1:本地环回测试,网络号为127的都是;

169.254.0.0:动态获取IP失败,零时用的;

下面几个是保留的私网地址:【互联网上的路由器找不到的】

10.0.0.0:保留给一些政府单位或者学校用;

172.16.0.0 — 172.31.0.0

192.168.0.0 — 192.168.255.0

3.IP地址的一些重要特点每一个IP地址都是由网络号和主机号两部分组成。路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间;实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须具有两个相同的IP地址,必须是网络号不同的。所以,路由器是用来连接不同网络的,所以一个路由器应当至少有2个IP地址。这就好比一个建筑正好处在北京路和上海路的交叉口上,那么这个建筑就可以拥有两个门牌号,例如:北京路4号和上海路37号;用转发器或网桥连接起来的若干个局域网仍为一个网络,因为它们的网络号相同。具有不同网络号的局域网必须使用路由器进行互联;在IP地址中,所有分配到的网络号的网络都是平等的。所谓平等,就是指互联网同等对待每一个IP地址。IP地址与硬件地址

物理地址(MAC地址)是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧了。MAC在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在了MAC帧的首部了。

总之:IP地址放在IP数据报的首部,而硬件地址放在MAC帧的首部。在网络层和网络层以上使用IP地址,而在数据链路层及以下使用硬件地址。当IP数据报放入数据链路层的MAC帧后,整个的IP数据报都成为了MAC帧的数据,因而在数据链路层是看不见数据报的IP地址的。

交换机基于数据帧的MAC地址转发数据帧,路由器基于数据包的IP地址转发数据包;数据包在传输过程中不变,过网络设备时,数据帧要用新的物理层地址重新封装;—— 即MAC地址变化MAC地址决定了数据帧下一跳哪个设备接收,而IP地址决定了数据包的起点和终点。

地址解析协议ARP

ARP协议作用:将网络层使用的IP地址解析出数据链路层使用的硬件地址(即:MAC地址)。

RARP协议作用:也叫逆向ARP,它的作用是使只知道自己硬件地址的主机能够通过RARP协议找出其IP地址。但是现在的DHCP协议已经包含了RARP协议的功能了。

每一台主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。那么主机是怎样知道这些地址的呢?看下面主机A向主机B发送一个数据包的过程:

当主机A向本局域网中的主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如果有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后再通过局域网把该MAC帧发往此硬件地址。

如果在ARP高速缓存中没有查到主机B的IP地址,那么主机A就自动运行ARP,再按照下面的步骤找出主机B的硬件地址:

(1)主机A的ARP进程在本局域网上广播发送一个ARP请求分组,内容包括自己的IP地址和MAC地址以及要找的主机IP地址;(2)在本局域网上的所有主机上运行的ARP进程都收到ARP请求分组;(3)主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,同时将这个ARP相应分组中写入自己的硬件地址,同时也会将主机A的IP到硬件地址的映射写入自己的ARP高速缓存。(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

说明:为了防止硬件地址的变更而导致通信故障,ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间,凡超过生存时间的项目就从高速缓存中删掉。

IP数据报的格式

一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20个字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部各字段的意义如下所示:

版本:占4位,指IP协议的版本,是4还是6;首部长度:占4位,5~15;区分服务:实时性要求高不高决定要不要用;总长度:指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为:2^16 - 1 = 65535字节。但是IP层下面的数据链路层中的一个数据帧中的数据字段最大传输单元MTU为1500,所以,如果数据报的长度超过了MTU,需要进行分片处理;标识:占16位,用于标识分片后的数据报,最后能组装成原来的数据报;标志:MF=1,后面还有分片;MF=0,后面没有分片了;DF:不能分片。(MF:More Fragment DF:DonotFragment)片偏移:占13位,相对于用户数据起点,该片从何处开始。片偏移以8字节位偏移单位,看后面的图片示例;生存时间:占8位,TTL(Time To Live),单位为跳数。路由器没转发数据报之前就把TTL值减1,最大数值为255;协议:占8位,标记上层需要使用哪个协议进行处理,常用的协议字段如下图所示;首部检验和:占16位,只检验数据报的首部,不包括数据部分;源地址:占32位,4字节;目的地址:占32位,4字节。可变部分:用来支持排错、测量以及安全等措施,很少被使用。

分片数据报

首部检验和

IP层转发分组的流程

在互联网上转发分组的时候,是从一个路由器转发到下一个路由器。

说明:

(1)从上图可以看出来,与路由器R2直连的网络不需要路由表,可以之间交付。但是没有直连的网络则需要路由表来指明目的主机所在的网络以及下一跳的地址;

(2)图中每一个路由器都连接两个网络,则每一个路由器都有两个不同的IP地址。

分组转发算法

从数据报的首部提取目的主机的IP地址D,得出目的网络地址N。若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就是间接交付,执行下一步若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所表明的下一跳路由器;否则,执行下一步。若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行下一步.若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行下一步。报告转发分组出错。

3、子网的划分划分子网

从两级IP地址到三级IP地址:网络号、子网号、主机号,可以用下面的记法来表示子网的IP形式:

三级IP地址可以表示为:IP地址 ::= {<网络号>, <子网号>, <主机号>}

划分子网基本思路(1)划分完子网后,本单位以外的网络是看不见这个子网的,对于它们来说这个单位仍然表现为一个网络;(2)三级IP地址可以表示为:IP地址 ::= {<网络号>, <子网号>, <主机号>};(3)凡是从其他网络发送给本单位某台主机的IP数据报,仍然根据数据报的目的网络号找到连接到本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,将数据报交给目的主机。子网掩码

一个网络中的路由器怎么找到子网,将数据报发送给它呢?从IP数据报的首部是无法看出源主机或者目标主机是否进行了子网划分,这个时候就需要使用子网掩码了。

子网掩码的特点:网络号部分都为1,主机部分都为0。所以都是255.255.,形式(以B类地址为例)。

使用子网掩码的好处:不管网络有没有划分过子网,只要把子网掩码和IP地址进行逐位的“与”(AND)运算,就可以立即得出网络地址。

子网掩码是一个网络或一个子网的重要属性。RFC950中规定:路由器在和相邻路由器交换路由信息时,就必须把自己所在网络或者子网的子网掩码告诉相邻的路由器。在路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。

划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。(每个子网的第一个和最后一个IP都没法用)

使用子网时分组的转发

路由表必须包含以下三项内容:目的网络地址,子网掩码和下一跳地址。

由器转发分组的算法(流程)如下:

从收到的数据报首部提取目的IP地址D先判断是否为直接交付。对路由器直接相连的网络进行逐个检查:用各网络的子网掩码和D逐位相与,看结果是否和相对应的网络地址匹配。若匹配,则把分组进行直接交付,转发任务结束。否则就是间接交付,执行(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由:否则执行(4)。对路由表的每一行,用其中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则执行(5)。若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则执行(6)。报告转发分组出错。

无分类编址CIDR(构造超网)1.网络前缀

无分类编址的正式名字为:无分类域间路由选择CIDR(Classless Inter-Domain Routing,CIDR读作“sider”)。

CIDR主要的两个特点:

(1)CIDR消除了传统的A类、B类和C类地址以及子网的概念。CIDR将32位的IP地址划分为前后两个部分。前部分是”网络前缀“,用来指明网络,后面的部分用来指明主机。因此无分类的两级编址为:

IP地址 :== {<网络前缀>, <主机部分>}

(2)CIDR将网络前缀都相同的连续的IP地址组成一个”CIDR地址块“。知道CIDR地址块中的任何一个地址,就可以知道这个地址块的最小地址和最大地址,以及地址块中的地址数。如下图所示案例:

这两个特殊的主机号是全0和全1的地址,一般不使用。

路由聚合:由于一个CIDR块地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合称为路由聚合。路由聚合也称为构造超网。2. 最长前缀匹配

CIDR中的IP地址用网络前缀和主机两部分表示。因而,路由表中的每个项目由”路由前缀“和”下一跳地址“组成,但是在查找路由表时可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由。这叫做最长前缀匹配,因为网络的前缀越长,地址块就越小,因而路由就越具体。故又称为最佳匹配。

3. 使用二叉线索查找路由表

为了更加有效地查询,通常是把无分类地址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉索引(binary trie),它是一种特殊结构的树。IP地址中从左到右的比特值决定了从根节点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。

说明:图中小圆圈代表中间节点、小方框代表叶子节点(每个叶节点代表唯一前缀)

从二叉线索的根节点自顶向下的深度最多32层,每一层对应IP地址中的一位。一个IP地址存入二叉索引的规则也很简单。先检查IP地址左边的第一位,如果为0,则第一层的节点就在根节点的左下方,如果为1,则在右下方。然后再检查地址的第二位,构造出第二层的结点,以此类推,直至唯一前缀的最后一位。图中加粗的就是前缀0101在这个二叉线索中的路径。

这里需要说明:二叉线索只是提供了一种可以快速在路由表中找到匹配的叶节点的机制。但这是否和网络前缀匹配,还要和子网掩码进行一次逻辑与运算。

为了提高二叉线索的查找速度,广泛使用各种压缩技术。如果前四位是一样的,直接从第五位开始比较。

4、网络控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

ICMP报文的种类

ICMP报文有两种:ICMP差错报告报文和ICMP询问报文。

几种常用的ICMP报文类型如下表所示:

ICMP差错报告报文共有四种:

终点不可达。当路由器或主机不能交付数据报时就向源点发送终点不可达报文。时间超过。当路由器收到生存时间为零的数据报时,除丢弃该数据报之外,还要向源点发送时间超过报文参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。

常用的ICMP询问报文有两种:

回送请求和回答。ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。时间戳请求回答。ICMP时间戳请求报文是某台主机或路由器回答当前的日期和时间。ICMP应用举例ICMP的一个重要的应用就是分组网间探测PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING使用了ICMP回送请求和回送回答报文。PING是应用层直接使用网络层ICMP协议的一个例子。它没有通过运输层的TCP或者UDP。

具体应用:

ping 目标主机名/IP : 查看网络通不通、往返时间等等信息tracert 目标主机IP:跟踪路由,查看从源主机到达目标主机所经过的路由器的IP地址,以及到达其中每一个路由器的往返时间;(说明:Linux下该命令为traceroute)pathping 目标主机IP:功能同tracert。

文章内容来源于网络,作者:赫凯

标签: #路由表必须包含哪三项内容 #路由表必须包括以下三项内容 #路由表必须包含以下三项内容 #路由表不包括以下 #数据结构源点