第四章—网络层
4.1、概述
转发功能和路由选择功能的区别?
- 转发涉及在单个的路由中从一条入链路到一条出链路的传送
- 路由选择涉及一个网络的所有路由器,他们经路由选择协议共同交互,决定分组从源到目地结点所采用的的路径
4.1.1、转发和路由选择
网络层两种最重要功能:
- 转发:当一个分组到达路由器到一条输入链路时,路由器必须将该分组移动到合适的输出链路
- 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路 由或路径。计算这些路径需要用到==路由选择算法==
路由选择算法:
每台路由器具有一张转发表 (forwaring table) 。路由器通过检查到达分组首部字段的 值来转发分组,然后使用该值在该路由器的转发表中索引查询 存储在转发表项中的该首 部的值指出了该分组将被转发的路由器的输出链路接口 分组首部中的该值可能是该分组 的目的地址或该分组所属连接的指示,这取决于网络层协议。
路由选择算法由两种模式:
集中式:算法在某个中心场点执行,并向每台路由器下载路由选择信息
分布式:使用运行在每台路由器上的分布式 路由选择算法的一部分
**分组交换机:**指一台通用分组交换设备,根据分组首部字段值从输入链路接口转移分组到输出链路接口。 **链路层交换机:**基于链路层字段中的值做转发决定 **路由器:**基于网络层字段值做转发决定 **连接建立:**某些网络结构(ATM、帧中继、MPLS)除了转发和路由选择功能,还有连接建立功能。要求从源到目的地沿着所选择路径彼此握手,建立连接。
4.1.2、网络服务模型
网络服务模型 (network service model) 定义了分组在发送与接收端系 统之间的端到端运输特性。
当运输层向网络层传递分组时,能由网络层提供的特定服务有:
- **确保交付:**该服务确保分组将最终到达其目的地
- **具有时延上界的确保交付:**该服务不确保分组交付
- **有序分组交付:**该服务确保分组以它们发送的顺序到达目的地
- **确保最小带宽:**模拟在发送和接收主机之间一条特定的比特率的传输链路的行为
- **确保最大时延抖动:**该服务确保位于发送方的两个相继分组之间的时间等于在目的地接收他们之间的时间量
- **安全性服务:**使用仅由源和目的主机所知晓的一个秘密会话密钥,在源主机中的网络 层能够加密向目的主机发送的所有数据报负载
因特网的网络层提供了单一的服务,称为尽力而为服务 (best- effort service),无带宽保证,无丢包保证,无顺序保证,不定时,无拥塞指示。
4.2、虚电路和数据报网络
仅在网络层提供连接服务的计算机网络称为虚电路 (Virtual-Circuit, VC) 网络;
仅在网络层提供无连接服务的计算机网络称为数据报网络 (datagram network)
4.2.1、虚电路网络
包括ATM、帧中继的体系结构是虚电路网络,在网络层使用连接。IP是数据报网络
一条虚电路的组成如下:
①源和目的主机之间的路径(即一系列链路和路由器) ;
②VC 号,沿着该路径的每段链路的一个号码;
③沿着该路径的每台路由器中的转发表表
在虚电路网络中,该网络的路由器必须为进行中的连接维持连接状态信息( connection state information) 。特别是,每当跨越一台路由器创建一个新连接,必须在该路由器的 转发表中增加一个新的连接项;每当释放一个连接,必须从该表中删除该项 值得注意的 是,即使没有 vc 号转换,仍有必要维持连接状态信息,该信息将 vc 号与输出接口号联 系起来。
虚电路的三个明显不同的阶段:
- ·**虚电路建立:**在建立阶段,发送运输层与网络层联系,指定接收方地址,等待网络建立虚电路。网络层决定发送方与接收方之间的路径,即该虚电路的所有分组 要通过的一系列链路与路由器。网络层也为沿着该路径的每条链路决定一个 vc 号。最后,网络层在沿着路径的每台路由器的转发表中增加一个表项 在虚电路 建立期间,网络层还可以预留该虚电路路径上的资源(如带宽)
- **数据传送:**一旦创建了虚电路,分组就可以开始沿该虚电路流 动了
- **虚电路拆除:**当发送方(或接收方)通知网络层它希望终止该虚电路时,就启动 这个阶段 然后网络层通常将通知网络另一侧的端系统结束呼叫,井更新路径上 每台分组路由器中的转发表以表明该虚电路已不存在了
**信令报文:**端系统向网络发送指示虚电路启动与终止的报文,以及路由器之间传递的用于建立 虚电路(即修改路由器表中的连接状态)的报文
**信令协议:**用来交换信令报文的协议
4.2.2、数据报网络
在数据报网络中,每当一个端系统要发送分组,它就为该分组加上目的端系统的地 址,然后将分组推进网络中。
路由器用分组的目的地址的**前缀( prefix)**与该表中的表项 进行匹配;如果存在一个匹配项,则路由器向与该匹配项相联系的链路转发分组
当有多个匹配时,该路由器使用最长前缀匹配规则( longest prefix matching rule) ;即在该表中寻找最伏的匹配项,并向与最长前缀匹配相关联的链路 接口转发分组
4.3、路由器工作原理
**路由器结构概况:**高层面(非常简化的)通用路由器体系架构(==路由器转发平面==)
- 路由:运行路由选择算法/协议-生成路由表
- 转发:从输入到输出链路交换数据报-根据路由表进行分组转发
输入端口:
- 要执行将 条输入的物理链路与路 由器相连接的物理层功能
- 要执行需要与位于人链路远端的数据链路层 交互的数据链路层功能
- 在输入端口坯要完成查找功能
- 控制分组(如携带路由选择协议信息的分 组)从输人端口转发到路由选择处理器
**交换结构:**交换结构将路由器的输入端口与输出端口相连接 这种交换结构完全 包含在路由器中,即它是 个网络路由器中的网络
**输出端口:**输出端口存储从交换结构接收的分组,并通过执行必要的链路层和物 理层功能在输入链路上传输这些分组
**路由选择器:**路由选择处理器执行路由选择协议,维护路由选择表以及连接的链路状态信息,并为路由器计算转发表
4.3.1、输入端口
线路端接:Bit级的接收
数据链路层:路由协议动作、解封装
分布式交换(查找、转发、排队):
- 根据数据报头的信息:如目的地址,在输入端口内存中的转发表中查找合适的输出端口
- **基于目标的转发:**仅仅依赖于IP数据报的目标IP地址
- **通用转发:**基于头部字段的任意集合进行转发
4.3.2、交换结构
-
将分组从输入缓冲区传输到合适的输出端口
-
交换速率:分组可以按照该速率从输入传输到输出
经内存交换结构
- 在输入端口与输出端口之间的交换是在 CPU (路由选择处理器)的直接控制下完成的
- 分组被拷贝到系统内存,CPU从分组的头部提取出目标地址,查找转发表,找到对应的输出端口,拷贝到输出端口
- 转发速率被内存的带宽限制 (数据报通过BUS两遍)
- 一次只能转发一个分组
经总线交换结构
- 数据报通过共享总线,从输入端 口转发到输出端口
- 总线竞争: 交换速度受限于总线 带宽
- 1次处理一个分组
经互联网的交换(纵横模式)
- 同时并发转发多个分组,克服总线带宽 限制
- Banyan(榕树)网络,crossbar(纵横) 和其它的互联网络被开发,将多个处理 器连接成多处理器
- 当分组从端口A到达,转给端口Y;控 制器短接相应的两个总线
- 高级设计:将数据报分片为固定长度的 信元,通过交换网络交换
4.3.3、输出端口
输出端口处理取出存放在输出端口内存巾的分组并将其发送到输出链路上 ,选择和取出排队的分组进行传输,执行所需链路层和物理层的功能
4.3.4、输出端口排队
- 假设交换速率Rswitch是Rline的N倍(N:输入端口的数量)
- 当多个输入端口同时向输出端口发送时,缓冲该分组(当通 过交换网络到达的速率超过输出速率则缓存)
- 排队带来延迟,由于输出端口缓存溢出则丢弃数据报
输出端口的一个分组调度程序必须在这些排队的分组中选取一个发送。分组调度程序在提供服务质量保证上有很大的作用 主动队列管理(RQM): 缓存填满前丢弃(或首部加个标记)一个分组,向发送方提供一个拥塞信号 随机早期检测算法(RED):平均队列长度在某个范围内时,以某种概率被丢弃/标记。 线路前部阻塞(HOL)
深色阴影分组必须等待。但不仅该分组要等待,左下角队列中排在该分组之后的浅色阴影分组也要等待,即使右侧输出端口中无竞争。这种现象叫做线路前部阻塞(HOL)
4.4、网际协议:因特网中的转发和编址
与协议IP配置套的还有三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
互联网的网络层:主机,路由器中的网络层功能
4.4.1、数据报
IPv4的数据报格式:
- ·版本(号): 这 4 比特规定了数据报的 IP 协议版本 通过查看版本号,路由器能 够确定如何解释 数据报的剩余部分 不同的 版本使用不同的数据报格式
- **首部长度:**一般的IP 数据报具有 20 字节的首部
- **服务类型:**服务类型 (TOS) 比特包含在 IPv4 首部巾,以便使不同类型的 数据 报(例如,一些特别要求低时延、高吞吐量或可靠性的数据报)能相互区别开来
- **数据报长度:**数据报的理论最大长度为 65535 字节 然而,数据报很少有超过15 字节的
- 标识、标志、片偏移: 这三个字段与所谓 分片有关
- 寿命: 寿命 (Time-To- Live TTL) 字段用来确保数据报不会永远(如由于民时间 的路由选择环路)在网络中循环
- **协议:**该字段仅在一个 数据报到达其最终目的地才会有用 该字段值指示了 IP 数据报的数据部分应交给哪个特定的运输层协议
- **首部检验和:**首部检验和用于帮助路由器检测收到的 数据报中的比特错误。首 部检验和是这样计算的:将首部中的每 个字节当作一个数,用反码运算对这些 数求和 。
- **源和目的 地址:**当某源生成一个数据报时,它在源 字段中插入它的四地址, 在目的 IP 地址字段中插人其最终目的地的地址
- 选项: 选项字段允许 首部被扩展
- 数据(有效载荷):
IP数据报分片
并不是所有链路层协议都能承载相同长度的网络层分组 的协议能承载大数据报,而有的协议只能承载小分组,以太网帧能够承载不超过 1500 节的数据,而某些广域网链路的帧可承载不超过 576 字节的数据。一个链路层帧能 承载的最大数据量叫做最大传送单元( Maximum Transmission Unit , MTU)
例如:一个 字节的数据报 (20 字节 IP 首部加上 3980 字节 有效载荷)到达一台路由器,且必须被转发到一条 MTU 15∞字节的链路上 这就意味 着初始数据报中 3980 字节数据必须被分配为 个独立的片(其中的每个片也是一个1P数 据报) 假定初始数据报贴上的标识号为 777 。
4.2.2、IPv4编址
IP地址及其表示方法
IP地址由互联网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配
IP地址都是32位的二进制代码。为了提高可读性,我们将32位IP地址中的每隔 8 位插入一个空格,为了方便记忆我们将其等效位十进制数,并在每个数之间插入一个小数点。这叫做点分十进制记忆法。
IP地址由两部分组成:
- 网络号
- 主机号
IP地址在整个互联网范围内是唯一的
IP地址的分类
一般不指派的IP地址:
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
---|---|---|---|---|
可以 | 不可 | 在网络上的本主机 | ||
X | 可以 | 不可 | 在本网络上主机号为X的主机 | |
全1 | 全1 | 不可 | 可以 | 只在本网络上进行广播(各路由均不转发) |
Y | 全1 | 不可 | 可以 | 对网络号为Y的网络上的所有主机进行广播 |
127 | 非全0或全1的任何数 | 可以 | 可以 | 用于本地软件环回测试 |
无分类编制CIDR
- 网络前缀:
无分类域间路由选择CIDR(Classless Inter_Domain Routing)
CIDR的定义的IP地址是:IP地址::= {<网络前缀>, <主机号>}
- 地址块
CIDR把 网络前缀相同的所有连续的IP地址组成一个"CIDR 地址块"
- 例如:已知IP地址 128.14.35.7/20 是某CIDR地址块中的一个地址,现在把他写成二进制表示形式:前20位是网络前缀,后12位是主机号
128.14.35.7/20=10000000 00001110 00100011 00000111
- 最小地址:128.14.32.0/20=10000000 00001110 00100000 00000000
- 最大地址:128.14.32.0/20=10000000 00001110 00101111 11111111
- 地址掩码
地址掩码(简称掩码):由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度。
/20地址块的地址掩码是:11111111 11111111 11110000 0000000,这个CIDR记法表示为:255.255.240.0/20
- A类网络,地址掩码为:255.0.0.0或255.0.0.0/8
- B类网络,地址掩码为:255.255.0.0或255.255.0.0/16
- C类网络,地址掩码为:255.255.255.0或255.255.255.0/24
把二进制的IP地址和地址掩码进行按位运算,即可得出网络地址
常用的CIDR地址块
DHCP
如何获取地址、分配地址? 1. 获取一块地址 子网获取IP地址:由ISP从它大块地址中分配 ISP获取IP地址:IP地址由因特网名字和编号分配机构ICANN管理(也管理DNS根服务器、AS标识号)。ICANN向区域性因特网注册机构分配地址,处理本地域内的地址分配/管理 2.获取主机地址 组织获得一块地址,就可为组织内的主机、路由器接口逐个分配IP地址 主机地址能手动配置,也能自动配置,即动态主机配置协议DHCP 3.动态主机配置协议DHCP---UDP DHCP允许主机自动获取一个IP地址 DHCP可配置,可以使主机每次连网获得相同IP地址,也可每次分配一个临时IP地址。 DHCP还允许主机查看子网掩码、默认网关(第一跳路由器地址)、本地DNS服务器地址 DHCP能将主机连接进一个网络的自动能力,常被称为即插即用协议 DHCP是一个客户-服务器协议。新来的主机要获得自使用的IP地址等网络配置信息 每个子网都有一台DHCP服务器 若子网没有DHCP服务器,则由一个路由器做DHCP中继代理,该代理知道该网络的DHCP服务器地址
发现新主机时DHCP的四个步骤:
- **DHCP 服务器发现 :**一台新到的主机的首要任务是发现一个要与其交互的 DHCP 服务器 这可通过使用 DHCP 发现报文 (DHCP discover message) 来完成, 客户在 UDP 分组中向端口67的发送该发现报文
-
DHCP 服务器提供:
- DHCP收到DHCP发现报文后,响应一个DHCP提供报文,仍然使用广播地址,因为此时新客户并没有IP地址
- 可能有多台DHCP服务器,每台服务器提供的报文中,有向客户主机推荐的IP地址、网络掩码以及IP地址租用期
- DHCP请求: 客户从提供中选一个,向选中的服务器提供一个DHCP请求报文进行响应,回显配置参数
-
DHCP:
- 服务器用 DHCP ACK 报文 (DHCP ACK message) DHCP 请求报文 进行响应,证实所要求的参数
- 一旦客户收到 DHCP ACK 后,交互便完成了,并且该客户能够在租用期内使用 DHCP 分配的 lP 地址
网络地址转换
动机: 本地网络只有一个有效IP地址:
- 不需要从ISP分配一块地址,可用一个IP地址用 于所有的(局域网)设备--省钱
- 可以在局域网改变设备的地址情况下而无须通知 外界
- 可以改变ISP(地址变化)而不需要改变内部的 设备地址
- 局域网内部的设备没有明确的地址,对外是不可 见的--安全
实现:
- 外出数据包:替换源地址和端口号为NAT IP地址 和新的端口号,目标IP和端口不变 …远端的C/S将会用NAP IP地址,新端口号作为目标地址
- 记住每个转换替换对(在NAT转换表中) .. 源IP,端口 vs NAP IP ,新端口
- 进入数据包:替换目标IP地址和端口号,采用存 储在NAT表中的mapping表项,用(源IP,端口)
NAT转换表:
对NAT是有争议的:
- 路由器只应该对第3层做信息处理,而这里对端口号(4层)作了处 理
- 违反了end-to-end 原则
- 端到端原则:复杂性放到网络边缘:无需借助中转和变换,就可以直接传送到目标主机
- NAT可能要被一些应用设计者考虑, eg, P2P applications
- 外网的机器无法主动连接到内网的机器上
- 地址短缺问题可以被IPv6 解决
UPnP
NAT 穿越正越来越多地由通用即插即用( UPnP) 提供, UPnP是 种允许主机发现并 配置邻近 NAT 的协议 。 0 UPnP要求主机和 NAT 都是 UPnP兼容的。使用UPnP,在主机上运行的应用程序能为某些请求的公共端口号请求一个NAT映射**(专用IP地址,专用端口号 — 公共IP地址,公共端口号)**。如果某NAT接收请求并生成映射,来自外部的结点能发起到(公共IP地址,公共端口号)的TCP连接。
4.2.3、IPv6
初始动机: 32-bit地址空间将会被很快用完
另外的动机: 头部格式改变帮助加速处理和转发
- TTL-1
- 头部checksum
- 分片
- 头部格式改变帮助QoS
IPv6 数据报格式:
- 固定的40 字节头部
- 数据报传输过程中,不允许分片
IPv6中引人的最重要的变化显示在其数据报格式中:
- 扩大的地址容量: IPv6 地址长度从 32 比特增加到 128 比特
- 简化高效的 40 字节首部: 许多叫字段已被舍弃或作为选 因而所形成的 40 字节定长首部允许更快地处理 数据报。
- 流标签与优先级: IPv6 有一个难以捉摸的 (flow) 定义
IPv6的字段
-
**版本号(version):**不同的IP协议版本使用不同的数据报格式。
-
**通信量等级(Traffic Classes):**使得源节点和路由器能够识别IPv6信息包的优先级。与IPv4服务类型TOS字段含义类似。
-
**流标签(Flow Label):**标记那些需要IPv6路由器特殊处理(如一种非默认服务质量或实时服务)的信息包顺序。
-
**有效负载长度(Payload Length):**定长40字节数据报首部后面的字节数量,包括扩展报头和负载数据,即数据报长度-40。
-
**下一个首部(Next Header):**当IPv6没有扩展报头时,该字段的作用和IPv4的上层协议字段一样。当含有扩展报头时,该字段的值即为第一个扩展报头的类型。
-
**跳限制(Hop Limit):**转发数据报的每台路由器对该字段的值减1,若减为0则丢弃该数据报。
-
源和目的IP地址(Source/Destination Address)
-
**数据(Data):**当数据报到达目的地时,该有效载荷就从IP数据报移出,并交给下一个首部字段中指定的协议。
-
源和目的IP地址(Source/Destination Address)
从IPv4到IPv6的迁移
**双栈:**引人 IPv6使能结点的最直接方式可能是一种双栈( dual- stack) 方法,即使用该方法的IPv6 结点还具有完整的 IPv4 实现
**隧道:**允许如E 接收、源于 IPv6 数据报 隧道依据的基本思想如下:假定两个 IPv6 点(如图中的 E) 要使用 IPv6 数据报进行交互,但它们是经由中间IPv4路由器互联的 我们将两台 IPv6 路由器之间的中间 IPv4路由器的集合称为一个隧道( tunnel) , 如图 4-26 所示 借助于隧道,在隧道发送端的 IPv6结点(如 B) 可将整个 IPv6 数据报放 到一个 IPv4 数据报的数据(有效载荷)字段中。