网络层提供的两种服务 虚电路服务和数据报服务
网络层提供的服务:
(1)虚电路服务 (2)数据报服务
(网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务)
网际协议IP
与IP协议配套使用的三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
网络连接的中间设备:
- 物理层使用的中间设备转发器(repeater)
- 数据链路层使用的中间设备网桥或桥接器(bridge)
- 网络层使用的中间设备路由器(router)
- 在网络层以上使用的中间设备叫网关(gateway)
IP地址
IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围唯一的32位标识符。IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
IP地址的编址方法三个阶段:
- 分类的IP地址 就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。网络号必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)
- 子网的划分
-
构成超网
IP地址 ::{<网络号>,<主机号>}
IP地址并不仅仅指明一个主机,而是还指明了主机所连接到的网络。
IP地址的特点:
- 每一个IP地址都是由网络号和主机号组成。IP地址是一个分等级的地址结构。第一,IP地址管理机构在分配IP地址时只分配网络号(第一级),剩下的主机号(第二级)由得到该网络号的单位自行分配。第二,路由器仅根据目的主机所连接的网络号转发分组,这样就可以使路由器表中的项目数大幅度减少,从而减少了路由表所占的存储空间以及查找路由表的时间。
- 实际上IP地址是标志一个主机和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。由于一个路由器至少连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
- 用转发器或网桥连接起来的若干个局域网仍为一个网络
- 在IP地址中,所有分配到的网络号的网络都是平等的。
物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部。
(1)在IP层抽象的互联网上只能看到IP数据报。
(2)虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
(3)在局域网的链路层,只能看到MAC帧。
(4)皮层抽象的互联网屏蔽了下层复杂的细节,使用统一的、抽象的IP地址研究主机和主机或者路由器之间的通信。
IP数据报首部的固定部分中的各字段
- 版本 占4位,IP协议的版本。
- 首部长度 占4位,可表示最大十进制数值是15.
- 区分服务 占8位,用来获得更好的服务
- 总长度 总长度字段为16位
在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU。
- 标识 占16位
- 标志 占3位,标志字段中的最低位记为MF(More Fragment)。MF = 1 表示后面“还有分片”的数据报。MF= 0 表示这已经是数据报中的最后一个。标志字段中间的一位记为DF(Don’t Fragment),意思“不能分片”,只有当DF = 0时才允许分片。
- 片偏移 占13位,片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移一8个字节为偏移单位,每个分片的长度一定是8字节的整数倍。
- 生存时间 占8位,TTL(Time To Life),数据报在网络中的寿命。
- 协议 占8位,表示数据报使用何种协议。
- 首部检验和 占16位,检验数据报的首部,不包括数据部分。
- 源地址 占32位
- 目的地址 占32位
IP转发分组
划分子网和构造超网
1.划分子网
(1)从两级IP地址到三级IP地址
IP地址::={<网络号>,<子网号>,<主机号>}
(2)子网掩码
从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行子网的划分。32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息。所以使用子网掩码(subnet mask).
使用子网掩码的好处:不管网络有没有子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND),就能立即得出网络地址来。这样在路由器处理到来的分组是就可以采用同样的算法。
(现在因特网的标准规定:所有的网络必须使用子网掩码,路由表中也必须有子网掩码这一栏。如果不划分子网掩码,使用默认子网掩码。)
A类地址的默认子网掩码是255.0.0.0,或0xFF000000;
B类地址的默认子网掩码是255.255.0.0,或0xFFFF0000;
C类地址的默认子网掩码是255.255.255.0,或0xFFFFFF00;
子网掩码是一个网络或一个子网的重要属性。划分子网增加了灵活性,但却减少了能够连接在网络上的总计数。
2.使用子网时分组转发
路由表必须包含三项内容:目的网络地址、子网掩码和下一跳地址。
3.无分类编址CIDR(构成超网)
1网络前缀
无分类域路由选择CIDR(Classless Inter-Domain Routing)
CIRD特点:
(1)CIDR消除了传统的A类、B类、C类地址以及划分子网的概念,可以更加有效的分配IPv4的地址空间。使用“网络前缀”,从三级变回无分类的两级编址。
IP地址::={<网络前缀>,<主机号>}
CIDR还使用“斜线记法”,在IP地址后面增加“/”,然后写上网络前缀所占的位数。
(2)CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道之歌地址块的起始地址(最小地址)和最大地址,以及地址块中的地址树。(斜线记法中,斜线后面的数字就是地址掩码中1的个数)
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合。路由聚合也称构成超网。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀边长。
2最长前缀匹配
网络前缀,应当从匹配结果中选择具有最长网络前缀的路由,叫做最长前缀匹配。
3使用二叉线索查找路由表(为了提高二叉线索的查找速度,使用压缩技术)
地址解析协议ARP
网际控制报文协议ICMP(实例:ping命令)
ICMP报文种类有两种,ICMP差错报告报文和ICMP询问报文
ICMP差错报告报文:
- 终点不可达 当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
- 源点抑制 当路由器或主机由于拥塞而丢弃数据报时,就向源点抑制报文,使源点知道应当把数据报的发送速率放慢
- 时间超长 当路由器接收到生存时间为0的数据报时,除了丢弃数据报外,还要向源点发送时间超过报文。
- 参数问题 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就该丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向) 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
ICMP询问报文:
- 回送请求和回答 ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
- 时间戳请求和回答 ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
互联网的路由器选择协议
1.理想的路由算法
(1)算法必须是正确的和完整的。
(2)算法应能适应通信量和网络拓扑的变化。
(3)算法在计算上应简单。
(4)算法应具有稳定性。
(5)算法应是公平的。
(6)算法应是最佳的。“最佳”只能是相对于某一种特定要求得出的较为合理的选择而已。
2.分层次的路由选择协议
因特网将整个互联网划分为许多较小的自治系统(autonomous system),记为AS。一个AS对其他AS表现出的是一个单一和一致的路由选择策略。
在目前的因特网中,一个大的ISP就是一个自治系统。因特网把路由选择协议划分为两类:
- 内部网关协议IGP(Interior Gateway Protocol) 在一个自治系统内部使用的路由选择协议,与在互联网中的其他自治系统选用什么路由选择协议无关。如RIP和OSPF协议。
-
外部网关协议EGP(External Gateway Protocol) 若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议)。当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。
自治系统之间的路由选择也叫域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(intradomain routing)
内部网关协议RIP
2.1工作原理
RIP(Routing Information Protocol)是内部网关协议中最先的到广泛使用的协议,叫路由信息协议。RIP是一种分布式的基于距离向量的路由选择协议,最大特点就是简单。
RIP协议“距离”:从一路由器到直接连接的网络的距离定义为1.从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1.
RIP协议的“距离”也成为“跳数”(hop count),因为每经过一个路由器,跳数就加1。RIP认为好的路由就是通过的路由器的数目少,即距离短。RIP允许一条路径最多只能包含15个路由器。RIP只适用于小型互联网。
一定要弄清楚的概念,RIP协议的特点:
- 仅和相邻路由器交换信息。
- 路由器交换的信息是当前本路由所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息
路由表中最重要的信息就是:到某个网络的距离最短,下一跳地址。路由表更新的原则是找出到每个目的网络的最短距离。这种更新叫做距离向量算法。
2.2距离向量算法
(1)对地址X的路由器发来的RIP报文,先修改报文中的所有项目:把下一跳字段中的地址都改为X,并把所有的距离字段值加1。每一个项目都有三个关键数据:到目的网络N,距离d,下一跳路由器是X。
(2)对修改后的RIP报文中的每一个项目,进行以下步骤:
若原来的路由表没有目的网络N,则把该项目添加到路由表中,若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目,若收到的项目中的距离d小于路由表中的距离,则进行更新。
(3)若3分钟黑没有收到响铃路由器的更新路由表,则把此距离路由器记为不可达的路由器,即把距离置为16.
(4)返回。距离向量算法的基础就是Bellman-Ford算法(或Ford-Fullkerson算法):设X是结点A到B的最短路径上的一个结点。若把路径A->B拆成两段路径A->X和X->B,则每一段也都是最短路径。
2.3RIP协议的报文格式
RIP报文由首部和路由部分组成。路由标记填入自治系统号ASN(Autonomous System Number),这是考虑使RIP有可能受到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。一个RIP保温最多可包括25个路由,RIP报文最大长度4+20*25=504字节.
RIP存在一个问题是当网络出现故障时,要经过比较常的时间才能将此信息传送到所有的路由器。这一特点叫做:好消息传播得快,而坏消息传播得慢。
内部网关协议OSPF
OSPF(Open Shortest First)开放最短路径优先。
它只是一个协议名字,并不表示其他的路由选择协议不是“最短路径优先”。OSPF最主要的特征就是使用分布式的链路状态协议(link state protocol),OSPF有三个要点:
(1)向本自治系统中所有路由器发送信息。使用洪泛法(flooding),路由器通过所有输出端口向所有相邻的路由器发送信息。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。链路状态就是说明本路由器都和那些路由器相邻,以及该链路的“度量”(metric)。用来表示费用、距离、时延、带宽、等等。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送信息。
从上述三方面可以看出,OSPF和RIP的工作原理相差较大。由于各路由器之间频繁的交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库,这个数据库实际上就是全网的拓扑结构图。这个拓扑结构图在全网范围内是一致的。因此,每一个路由器都知道全网共有多少个路由器,等等。
OSPF其他特点:
(1)OSPF允许管理员给每条路由指派不同的代价。OSPF对于不同类型的业务可计算出不同的路由。
(2)如果到同一个目的网络有多条相同代价的路径,那么可以将同信量分配给这几条路径,这叫做路径间的负载均衡。
(3)所有在OSPF路由器之间交换的分组,都具有鉴别的功能。
(4)OSPF支持可变长度的子网划分和无分类的编址CIDR.
(5)由于网络中的链路状态可能经常发生变化,因此OSPF让每一个链路状态都带上一个32位的序号,序号越大状态就越新。
OSPF的五种分组类型
- 问候(hello)分组,用来发现和维持邻站的可达性。
- 数据库描述(database description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 链路状态请求(link state request)分组,向对方请求发送某些链路状态项目的详细信息。
- 链路状态更新(link state update)分组,用洪泛法对全网更新链路状态。
- 链路状态确认(link state acknowledgment)分组,对链路更新分组的确认。
OSPF规定,每两个相邻路由器每隔10s要交换一次问候分组,对链路更新分组的确认。
外部网关协议BGP
BGP采用了路径向量(path vector)路由选择协议。BGP协议交换路由信息的结点数量级是自治系统个数的量级。
BGP-4的四种报文:
(1)open(打开)报文,用来与相邻的另一个BGP发言人建立关系,使通信初始化。版本(1字节)、本自治系统号(2字节)、保持时间(2字节)、BGP标识符(4字节)、可选参数长度(1字节)、可选参数。
(2)update(更新)报文,用来通告某一路由的信息,以及列出要撤销的多条路由。不可行路由长度(2字节)、撤消的路由、路径属性总长度(2字节)、路径属性、网络层可达性信息NLRI
(3)keeplive(保活)报文,用来周期性地证实邻站的连通性。只有BGP的19字节长通用首部。
(4)notification(通知)报文,用来发送检测到的差错。差错代码(1字节)、差错子代码(1字节)、差错数据
3.7路由器的构成
1路由器的结构
路由器可以划分两大部分:路由选择部分和分组转发部分
路由选择部分也叫控制部分,核心构件是路由选择处理机;分组转发部分由三部分组成:交换结构、一组输入端口、一组输出端口
2.交换结构
通过存储器、通过总线、通过互连网络
3.8 IP多播
1.IP多播的基本概念
能够运行多播协议的路由器称为多播路由器(multicast router)。在因特网上进行多播就叫做IP多播。IP多播所传送的分组需要使用多播IP地址。多播地址只能用于目的地址,而不能用于源地址。224.0.1.0至238.255.255.255 全球范围都可使用的多播地址。
IP多播分为两种。一种是只在局域网上进行硬件多播,另一种则是在因特网的范围进行多播。
2.网际组管理协议IGMP和多播路由选择协议
(1)IP多播需要两种协议
多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成成员接入的网络。
(2)网际组管理协议IGMP
IGMP工作分两个阶段:
第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给因特网上的其他多播路由器。
第二阶段:组成员关系使动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还基础是组成员。只要有一个主机对某个组响应,那么多播路由器就认为这个组是活跃的。如果没有响应,认为本网络的主机已经离开这个组,就会转发给其他多播路由器。
(3)多播路由选择协议
多播路由选择实际上就是要找出以源主机为根节点的多播转发树。
转发多播报时使用了以下三种方法:
- 洪泛与剪除 采用反向路径广播RPB(reverse path broadcasting)的策略。RPB的要点是:每一个路由器在收到一个多播数据报时,先检查数据报是否从源点经最短路径传送来的。如果在多播转发树上的某个路由器发现它下游树枝已经没有该多播组的成员,就赢把它和下游的树枝一起剪除。
- 隧道技术 隧道技术适用于多播组的位置在地理上很分散的情况。
- 基于核心的发现技术
下面是一些建议使用的多播路由选择协议:
距离向量多播路由选择协议DVMRP
基于核心的转发树CBT
开放最短通路优先的多播扩展MOSPF
协议无关多播-密集方式PIM-DM
3.9虚拟专用网VPN和网络地址转换NAT
1.虚拟专用网VPN
在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发
利用公用的因特网作为机构专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(virtual private network)。所有通过因特网传送的数据都必须加密。
2.网络地址转换NAT
NAT(network address translation)。使用端口号的NAT也叫网络地址与端口号转换NAPT(network address and port translation)sa
理解:在计算机网络领域,网络层应该向运输层提供怎样的服务引起了争论,于是出现了两种服务,一种是利用面向连接通信方式提供的虚电路服务,一种是向上只提供灵活的、无连接的、尽最大交付的数据报服务。网络层中有着使互连起来的计算机能够通信的IP协议,还有与IP协议配套使用的地址解析协议ARP,网际控制协议ICMP,网际组管理协议IGMP。而当进行通信,路由器(包含目的网络地址和下一跳地址)根据目的IP地址来转发分组(详细步骤为分组转发算法),后来又出现了划分子网与构造超网(无分类编址CIDR)。