1.5k likes | 1.63k Views
第 五 章. 网 络 层. 网络层的主要任务是将分组从源节点高效地传送到目的节点。 对于局域网来说,这个问题不难解决: 共享式局域网:源节点发出的分组可被所有节点接收到。 用二层设备连接的局域网:交换设备通过逆向学习法可以获知到各个目的节点的转发路径。 在大型互连网中,这是一个困难的问题,也是本章讨论的重点。. 本章讨论的网络环境. 网络层的主要设计问题. 路由和转发 拥塞控制 网络互联 Internet 的网络层 路由器. 1 转发. 路由表和转发表: 路由表:由路由模块生成和维护, 记录了从路由器到其它目的网络的最佳路由。
E N D
第 五 章 网 络 层
网络层的主要任务是将分组从源节点高效地传送到目的节点。网络层的主要任务是将分组从源节点高效地传送到目的节点。 • 对于局域网来说,这个问题不难解决: • 共享式局域网:源节点发出的分组可被所有节点接收到。 • 用二层设备连接的局域网:交换设备通过逆向学习法可以获知到各个目的节点的转发路径。 • 在大型互连网中,这是一个困难的问题,也是本章讨论的重点。
网络层的主要设计问题 • 路由和转发 • 拥塞控制 • 网络互联 • Internet的网络层 • 路由器
1 转发 • 路由表和转发表: • 路由表:由路由模块生成和维护, 记录了从路由器到其它目的网络的最佳路由。 • 转发表:根据路由表生成,是专门为优化路由表查找而设计的数据结构。 • 根据路由器在转发分组时所依据的信息,有两种基本的转发策略: • 数据报方式:依据分组的目的地址进行转发。 • 虚电路方式:依据分组的连接标识进行转发。
源路由和逐跳路由 • 源路由: • 源节点选择一条从源节点到目的节点的完整路径,将其放置在每个分组的头部,路由器按照分组头中指定的路径转发分组。 • 逐跳路由: • 分组头部不携带任何路由信息,路由器为每个到来的分组选择其传输路径上的下一跳节点,将分组往目的方向推进一步。
数据报转发过程 • 源主机(如H1)的网络层从传输层接收消息,封装成分组,发给最近的路由器(如A)。 • 每个路由器检查收到的分组的目的地址(如H2),若本节点是分组的目的地,将分组交给合适的上层实体处理;否则查找转发表,从相应的输出线路转发分组。 • 如果分组长度超过了输出链路上的最大传输单元,路由器将分组分成较小的片段,每个片段封装成一个分组,各个分组独立传输。 • 目的主机(如H2)将收到的分组交给传输层;如果分组被划分成了多个片段,目的主机先将这些片段重组,再交给传输层。
网络层服务 • 无连接服务(数据报子网): • 每个分组是一个独立的传输单位,携带完整的地址,在每个节点被独立传输,分组之间彼此没有联系。 • 面向连接的服务(虚电路子网): • 传输前先建立连接,分组携带连接号,沿着已建立起来的路径传输。
2 Internet的网络层 The Internet is an interconnected collection of many networks.
网络互连的需要 • 计算机网络发展的早期,网络硬件和物理编址的不兼容性阻碍了使用不同技术的网络之间进行互连。 • 我们需要一个能够提供通用服务的通信系统,可以允许任意一对计算机进行通信。 • 网络互连(internetworking)是为异构网络提供通用服务而设计的模式: • 硬件系统提供互连的物理网络,相互连接的物理网络系统称为互连网络(internetwork)或互连网(internet)。 • 计算机上的软件提供通用服务。
使用路由器的物理网络连接 • 连接异构网络的基本硬件是路由器。 • 路由器可以将使用不同技术的网络连接起来,包括使用不同介质、不同物理编址方式和不同帧格式的网络。 • 路由器主要致力于在其连接的网络之间转发数据。 • 物理上,互连网是一个通过路由器连接的网络集合,每个组织可自由选择网络的数量、类型与拓扑结构等。
虚拟网络 • 计算机和路由器使用协议软件实现通用服务。 • 互连网协议软件提供了单一通信系统表现形式: • 每台计算机被分配一个地址,任何计算机可以向任何其它计算机发送数据包。 • 协议软件隐藏了网络的物理连接、物理地址和路由信息等细节。 • 互连网是一个虚拟网络系统,因为它提供了一个统一网络系统的表现形式,而实际上并不存在这样的网络系统。
因特网的网际层(internet layer) • TCP/IP是应用于互连网的第一套协议,也是目前使用最广泛的网络互连协议,TCP和IP是其中最核心的两个协议。 • TCP/IP的网际层包括三个重要的组成部分: • IP协议(Internet Protocol):描述编址及分组转发规则。 • 一组路由协议:包括域内路由协议和域间路由协议 • 一组控制协议:包括控制消息协议(ICMP)及地址映射协议等。
2.1 IP协议 • 设计目标: • 实现异构网络的互连,并使系统具有良好的可扩展性。 • 尽力而为(best-efforts)的服务模型: • 网际层只是尽最大努力将数据报从源节点传向目的节点,既不保证数据报一定会无差错地到达目的节点,也不保证数据报的传输顺序。 • 功能简单,容易实现,从而系统可靠性好,吞吐量高,易于支持异构操作。 • IP协议由两个部分组成: • 编址方法及地址分配策略 • 数据报格式及对数据报的处理规则 • 两个版本:IPv4和IPv6。
IP协议提供的服务 • IP协议提供的服务: • 数据报转发 • 数据报分片 • 报头检错 • 限制数据报寿命 • 利用选项支持功能扩展 • IP协议未提供的服务 • 数据检错 • 可靠性 • 流量控制
(2)IP地址 • 网络接口与IP地址: • 网络接口:主机或路由器与物理链路之间的边界。 • 每个网络接口对应一个IP地址。 • IPv4地址: • 32比特的数,通常用点分十进制形式表示。如二进制IP地址:11000001 00100000 11011000 00001001 用点分十进制形式表示为:193.32.216.9。 • 设计IP地址时考虑到了单播、组播、广播通信的需要,以及易于在大规模网络中寻掉的需要。
IP单播地址 • IP单播地址被划分成网络号和主机号两部分: • 网络号:标识一个物理网络 • 主机号:标识该物理网络上的一个网络接口 • A、B、C类地址对应不同规模的网络,可以根据网络规模申请相应类别的网络地址。
地址分配 • 在互连网络中,每个IP地址必须是唯一的。 • 为在因特网范围内保证IP地址的全局唯一性: • 网络号由ICANN统一分配 • 主机号由网络管理员统一分配。 • 建立私有网络的组织可以自己选择网络号(建议使用A类、B类和C类地址),但同样必须保证每个网络号在私有网络内的唯一性。
特殊的IP地址 • 全0或全1的网络号及主机号是特殊地址 ,从不分配给特定的网络接口: • 网络号有效、主机号全为0的地址保留给网络本身。 • 网络号有效、主机号全为1的地址保留作为定向广播,即在网络号指定的网络中广播。 • 32位全1的地址称为本地广播地址,表示仅在发送节点所在的网络中广播。 • 32位全0的地址指示本机。 • 网络号为0、主机号有效的地址指代本网中的主机。 • 形如127.xx.yy.xx的地址保留作为回路测试,发送到这个地址的分组不输出到线路上,而是送回内部的接收端。
网络数量与地址数量 • 一个A类、B类及C类地址可提供的地址数量: • A类地址:224-2 = 16777214 • B类地址:216-2 = 65534 • C类地址:28-2 = 254 • A类、B类、C类地址的个数: • A类地址:27-2 = 126 • B类地址:214-2 = 16382 • C类地址:221-2 = 2097152 • A类、B类、C类地址的范围: • A类地址:1.0.0.0~126.255.255.255 • B类地址:128.1.0.0~ • C类地址:
子网编址 • 从概念上说,引入子网仅略微改变了IP地址的解释: • 主机号进一步划分成子网号和主机号两部分 • 子网号标识网络内的一个子网,主机号标识子网中的一个网络接口 • 管理员可以根据实际管理的需要,选择合适的子网号长度
网络内部的分组转发 • 网络内部划分了子网后, • 子网内的路由器负责在本子网内转发分组 • 主路由器负责在子网间转发分组 • 如何确定目的地址属于哪个子网? • 根据目的地址中的(网络号+子网号)确定
子网掩码(subnet mask) • 如何知道子网号的长度? • 每个节点上配置子网掩码 来指示网络号+子网号的长度。 • 子网掩码: • 32比特的数,对应主机号的位上都为0。 • 点分十进制表示,如255.255.255.0。 • 如何获取(网络号+子网号): • IP地址与子网掩码相与,如 128.10.1.1 AND 255.255.255.0 = 128.10.1.0。
(4) IP数据报转发 • 路由器转发数据报的两种情形: • 直接交付(direct delivery):目的路由器通过物理网络将数据包直接发送给目的主机。直接交付不涉及到路由器。 • 间接交付(indirect delivery):中间路由器将数据包转发给另一个路由器处理。
使用直接交付还是间接交付? • 如何判断使用直接交付还是间接交付? • 直接交付:数据包的目的地址与路由器的某一端口地址具有相同的网络号。 • 间接交付:数据包的目的地址与路由器所有端口地址的网络号均不相同。
直接交付和间接交付的实现 • 直接交付的实现: • 目的路由器确定目的地址对应的物理地址(地址解析) • 将数据包封装在物理网络帧中发送 • 间接交付的实现: • 路由器确定数据包转发路径上的下一跳地址(查找转发表) • 确定下一跳地址对应的物理地址(地址解析) • 将数据包封装在物理网络帧中发送
转发表 • 转发表中的每个表项记录了一个可能的目的地址,以及去往这个目的地址的下一跳信息。 • 转发表中的一个表项通常是一个目的网络而不是一个特定的目的地址,这种路由称网络前缀路由。 • IP协议使用逐跳路由,转发表中只记录去往目的地址的下一跳路由器,下一跳路由器必须是通过单个网络可达的。 • 缺省路由:当转发表中没有找到目的网络时,可以将数据包发送给一个默认的路由器。 • 允许特定主机路由
IP数据报的转发过程 从数据包中提取目的IP地址 D,计算网络前缀 N; if D与自己的任何一个IP地址匹配 then 将数据包交给protocol域指定的协议实体处理 else if N与自己的任何一个直连网络的地址匹配 then 通过该直连网络把数据包直接交付到目的节点D else if 表中包含到D的特定主机路由 then 把数据包发送到表中指定的下一跳 else if 表中包含到网络N的一个路由 then 把数据包发送到表中指定的下一跳 else if 表中包含一个缺省路由 then 把数据包发送到表中指定的默认路由器 else 宣告选路出错,向数据包的源地址发送一条错误报告消息
(5)无类域间路由CIDR • 分类编址方案的缺陷: • 只能按照三种固定的大小来分配地址空间,地址浪费严重。 • 路由表必须记录每个已分配的网络,路由表规模呈爆炸式增长。 • CIDR的基本思想是抛弃类的概念, • 按照实际需要的地址数量而不是类来分配地址空间,提高地址分配的效率。 • 允许将若干条路由聚合(aggregate)成一条路由,减小路由表的规模。
按照实际需要分配地址 • 举例: • 若一个网络需要2000个地址,可为其分配一个具有2048个连续地址的地址块。这些地址的前21位必须相同,从而外界可将其看成是一个具有21位网络号的网络。 • CIDR地址分配的原则: • 地址块的长度L必须是2的幂次 • 所有地址的前(32-log2L)位必须相同 • 网络地址的表示方法: • 用掩码指示网络地址的长度,如194.24.0.0 (255.255.248.0) • 用”/长度“指示网络地址的长度,如194.24.0.0/21。
CIDR地址分配的一个例子 • ISP有一块从194.24.0.0开始的地址块 • 剑桥大学申请2048个地址(11位) • 牛津大学申请4096个地址(12位) • 爱丁堡大学申请1024个地址(10位) • 空闲地址块(10位)
路由表更新 • 路由表中添加三个表项: • 194.24.0.0/21,(11111111 11111111 11111000 00000000) • 194.24.8.0/22 ,( 11111111 11111111 11111100 00000000 ) • 194.24.16.0/20 ,( 11111111 11111111 11110000 00000000 ) • 若路由器收到目的地址为194.24.17.4的数据包,其查表过程为: • 194.24.17.4 AND 255.255.248.0 = 194.24.16.0,与表项入口不符 • 194.24.17.4 AND 255.255.252.0 = 194.24.16.0,与表项入口不符 • 194.24.17.4 AND 255.255.240.0 = 194.24.16.0,与表项入口相符,选择该路由项。
路由聚合 • 将路由表中符合聚合条件的若干条路由合并成一条路由。 • 举例: • 一个ISP为连接到其网络上的16个新网络分配了从192.4.16.0~192.4.31.0的16个C类地址,并且这16个网络都通过同一个路由器接入因特网,则路由表中可以使用一条路由192.4.16.0/20来代替这16条路由。 • 路由聚合的条件: • 这些路由的网络前缀可以聚合成一个更短的前缀 • 这些路由使用相同的下一跳地址
RFC 1519将当时剩余的IPv4地址进行了统一分配,将世界划分为4个区,每个区分配一大块地址(约3200万个),具体如下: • 地址194.0.0.0到195.255.255.255给欧洲 • 地址198.0.0.0到199.255.255.255给北美 • 地址200.0.0.0到201.255.255.255给中美和南美 • 地址202.0.0.0到203.255.255.255给亚洲和太平洋地区
IP地址的层次 • 从概念上讲,每个IP地址被划分成前缀和后缀两部分。 • 地址前缀标识了一个网络或若干个符合路由聚合条件的网络集合,路由器根据地址前缀转发数据包。 • 基于类的地址按字节边界将地址划分成前缀和后缀,由地址的类型域指示边界。 • 采用子网编址和CIDR(超网)之后,前缀和后缀的边界由地址掩码来指示。
最长前缀匹配查找 • 采用CIDR编址后出现的新问题: • 地址前缀的长度无法从IP地址本身得到 • 转发表中不同路由表项的地址前缀可能重叠 • 举例:在前面的例子中,若192.4.23.0改从另一个路由器接入因特网,则路由表中有以下两个表项: • 192.4.16.0/20 • 192.4.23.0/24 • 最长前缀匹配原则: • 在所有匹配的路由表项中,选择前缀最长的路由表项。 • 在大规模路由表中进行快速路由查找是一个难题。
(6)数据报分片 • 最大传输单元MTU: • 一个物理网络的帧所能携带的最大数据量。 • 以太网的MTU等于1500字节,许多广域网的MTU为576字节。 • MTU限制带来的问题: • 一个较长的数据包无法通过MTU较小的中间网络。 • IP协议使用分片技术解决这个问题: • 当IP包的长度超过输出线路的MTU时,数据包被分成较小的片段(报片)传输,称为分片(fragmentation)。 • 每个报片封装成独立的数据报传输。
封装报片使用的报头 • 封装报片使用的报头取自原始数据报,但以下字段可能发生改变:总长度,标志位,分片偏移,头部检查和。
分片的长度 • 由于分片偏移量只有13比特,除最后一个报片外,其余报片的长度应为8字节的整倍数。 • 假设报头的长度为H,报片长度为N,则N应为满足以下条件的最大整数: • H + N ≦ MTU • N 为8的倍数
分片的处理过程 • 根据报头长度H和输出线路的MTU,确定报片长度N。 • 将数据报的载荷划分成长度为N的若干片段(最后一个报片可能不足N字节)。 • 将原始数据报的报头加到每一个报片的前面,修改报头中的以下字段: • 总长度 = H + N; • 最后一个报头的MF位置0,其余报头的该位置1; • 分片偏移量 = 报片在原始数据报中的字节偏移量/8; • 计算头部检查和。
分片的例子 • 例:要将一个长度为4000字节的IP包发送到MTU为1500字节的链路上,IP报头长度为20字节。 • 报片长度 N = 1480字节。 • 原始数据报的载荷被分成三个报片,长度分别为1480字节、1480字节和1020字节。
进一步分片 • 当一个分片到达一个MTU更小的网络时,需要进一步分片。 • 对报片进行再分片的方法与对原始数据报分片是类似的。