哈工大计算机网络第四章——网络层复习

目录

1. 网络层服务

2. 虚电路网络与数据报网络

3. 路由器体系结构

4. IP协议

5. DHCP协议——动态主机配置协议

6. NAT——网络地址转换

7. ICMP协议——互联网控制报文协议

8. IPv6

​9. 路由算法

10. 路由协议


1. 网络层服务

在从发送主机向接收主机传送数据段(segment)的过程中,发送主机的网络层取得传输层的报文段,将报文段封装到数据报(datagram)中,然后向相邻的路由器发送数据报。接收主机的网络层接收来自相邻路由器的数据报,提取传输层报文段,向传输层交付

❖ 每个主机和路由器都运行网络层协议

❖ 路由器检验所有穿越它的IP数据报的头部域,问题为决策如何处理IP数据报。路由器不允许应用与传输层协议,只有网络层以下的部分。

路由与转发

转发(forwarding): 将分组从路由器的输入端口转移到合适的输出端口,是路由器本地动作,时间很短。

路由(routing): 确定分组从源到目的经过的路径,需要路由算法 (routing algorithms)。是网络范围的处理过程,时间相对较长。

转发表:路由器检查到达分组的一个或多个字段值,使用这些值在转发表中索引,进而转发分组。

路由算法(协议)确定通过网络的端到端路径,转发表确定在本路由器如何转发分组

网络层核心功能-连接建立

数据分组传输之前两端主机需要首先建立虚拟/逻辑连接,由网络设备(如路由器)参与连接的建立。

传输与网络的对比

网络层连接: 两个主机之间 ( 路径上的路由器等网络设备参与其中)

传输层连接: 两个应用进程之间(对中间网络设备透明)

网络层服务模型

无连接服务(connection-less service),典型:数据报网络(datagram network )

▪ 不事先为系列分组的传输确定传输路径

▪ 每个分组独立确定传输路径

▪ 不同分组可能传输路径不同

连接服务(connection service),典型:虚电路网络(virtual-circuit network )

▪ 首先为系列分组的传输确定从源到目的经过的路径 (建立连接)

▪ 然后沿该路径(连接)传输系列分组

▪ 系列分组传输路径相同

▪ 传输结束后拆除连接

2. 虚电路网络与数据报网络

虚电路网络

虚电路:一条从源主机到目的主机,类似于电路的路径(逻辑连接) ,采用分组交换的方式。每个分组的传输利用链路的全部带宽。源到目的路径经过的网络层设备共同完成虚电路功能

通信过程: 呼叫建立(call setup)→数据传输 →拆除呼叫

每个分组携带虚电路标识(VCID),而不是目的主机地址。虚电路经过的每个网络设备 (如路由器)都维护每条经过它的虚电路连接状态。链路、网络设备资源(如带宽 、缓存等)可以面向VC进行预分配。预分配资源=可预期服务性能,如ATM的电路仿真(CBR)

与电路的区别:1. 不进行电路的资源分配。 2. 都需要建立路径 3. 有时会进行网络资源预留,达到电路级的性能。

虚电路包括: 1. 从源主机到目的主机的一条路径 2. 虚电路号(VCID), 沿路每段链路一个编号 3. 沿路每个网络层设备(如路由器),利用转发表记录经过的每条虚电路

VC实现:沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址。同一条VC ,在每段链路上的VCID通常不同,路由器转发分组时依据转发表改写/替换虚电路号

虚电路网络在连接建立时也需要解决路由选择问题,同时也需要进行虚电路的维护管理。

 虚电路信令协议:用于VC的建立、维护与拆除,应用于虚电路网络中。

数据报网络

网络层无连接,每个分组携带目的地址。路由表根据分组的目的地址转发分组。基于路由协议/算法构建转发表,在分组到达时检索转发表。每个分组独立选路。

路由算法(协议)确定通过网络的端到端路径,转发表确定在本路由器如何转发分组

在转发表中,满足最长前缀匹配优先。在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口(entry)。

数据报网络与虚电路网络的区别:

Internet (数据报网络)

❖ 计算机之间的数据交换。是“弹性”服务,没有严格时间需求

❖ 链路类型众多。特点、性能各异,但统一服务困难

❖ “智能”端系统 (计算机) ,可以自适应、性能控制、差错恢复

❖ 简化网络, 复杂“边缘”

ATM (VC网络)

❖ 电话网络演化而来

❖ 核心业务是实时对话: ▪ 严格的时间、可靠性需求 ▪ 需要有保障的服务

❖ “哑(dumb)” 端系统(非智能) ▪ 电话机 ▪ 传真机

❖ 简化“边缘”, 复杂网络

3. 路由器体系结构

两个核心功能:1. 运行路由算法/协议  2. 将数据报从入口到输出端口

分为:

1. 输入端口: 终结入物理层链路的物理层功能;与位于入链路层远端的数据链路层交互来执行链路层功能。执行查找功能,通过查询转发表决定路由器的输出端口

2. 交换结构:交换结构将路由器的输入端口连接到输出端口。

3. 输出端口:存储交换结构接收的分组,执行必要的链路层和物理成功能在输出链路上出书分组。

4. 路由选择处理器:执行控制平面功能。在传统路由器中执行路由协议,维护路由选择表与关联链路状态。

4. IP协议

网络层功能:

 IP数据报格式

版本号:占4位,IP协议的版本号有 4→IPv4,6 → IPv6

首部长度:占4位,以4个字节为单位,如果为5,意味着首部长度为20(5×4)字节

服务类型(TOS):字段占8位,指示期望获得哪种类型的服务。只有在网络提供区分服务(DiffServ)时使用,通常IP分组的该字段(第2字节)的值为00H

总长度:占16位,为IP分组的总字节数。最大IP分组的总长度:65535B,最小的IP分组首部:20B。IP分组可以封装的最大数据:65535-20=65515B

生存时间(TTL):占8位,是IP分组在网络中可以通过的路由器数。每次转发这个分组,TTL减一,如果TTL为0,丢弃分组。

协议:占8位,指示IP分组封装的数据包的协议。实现复用分用,6为TCP,表示封装的为TCP段;17为UDP,表示封装的是UDP数据报。

首部校验和:占16位,实现IP分组的差错检测。计算时,将此字段置0,计算其他字段之和。采用反码算数运算求和,和的反码作为首部校验和字段。

源IP地址、目的IP地址:占32位,标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器 (网络接口)的IP地址

选项字段:长度可变,在1-40B之间,携带安全、源选路径、时间戳和路由记录等内容,实际很少使用。

填充:长度可变,范围在0-3B之间,目的在不一起首部,符合32位对其,保障首部长度是4字节的整数倍。

IP分片与重组

MTU(最大传输单元):链路层数据帧可封装数据的上限,不同链路的MTU不同。

大IP分组向较小MTU链路转发时,可以被“分片”,分成多个IP分组,IP分片到达目的主机后进行“重组”。IP首部的相关字段用于标识分片以及确定分片的相对顺序

标识字段占16位,标识一个IP分组。IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识

标志位:占3位,由保留位,DF (Don't Fragment) 和MF (More Fragment) 组成。

DF =1:禁止分片;

DF =0:允许分片

MF =1:非最后一片;

MF =0:最后一片(或未分片)

片偏移:占13位,一个IP分组分片封装原IP分组数据的相对偏移量 ,以8字节为单位进行计算

IP分片过程

假设原IP分组总长度为L,待转发链路的MTU为M。若L>M,且DF=0,则可以分片。分片时每个分片的标识复制原IP分组的标识。通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片。一个最大分片可封装的数据应该是8的倍数,因此,一个最大分片可封装的数据为:

需要分片数量:

每片的块偏移:

每片的总字段长度:

每片的MF标志位:

IP编址

接口(interface): 主机/路由器与物理链路的连接,实现网络层功能。路由器通常有多个接口,主机通常只有一个或两个接口 (e.g.,有线的以太网接口,无线的802.11接口)

IP地址为32比特(IPv4)编号标识主机、路由器的接口。IP地址与每个接口关联,编址即为接口分配IP地址。IP地址采用以下形式:网络号(NetID) – 高位比特,主机号(HostID) –CID特

IP子网:IP地址具有相同网络号的设备接口,不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口。

 其中每个标蓝的地方都是一个IP子网,路由器之间的链路为特殊的IP子网,一共6个IP子网。

 “有类”编址

特殊IP地址

子网划分

IP地址:由以下部分组成:网络号(NetID) – 高位比特,子网号(SubID) – 原网络主机号部分比特,主机号(HostID) – 低位比特 

 

子网掩码:NetID、SubID位全取1,HostID位全取0,由子网地址加子网掩码确认子网大小。

应用:将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址

CIDR

无类域间路由(CIDR: Classless InterDomain Routing)

融合子网地址与子网掩码,方便子网划分。采用无类地址格式:a.b.c.d/x,其中x为前缀长度

路由聚合

采用CIDR可以提高IPv4 地址空间分配效率和高路由效率。将多个子网聚合为一个较大的子网,构造超网(supernetting)。

层次编址可以使得路由信息通告更加高效。采用最长前缀匹配优先原则。

5. DHCP协议——动态主机配置协议

主机获得IP地址的方式:

1. 硬编码——静态配置

 2. 动态主机配置协议——DHCP

DHCP允许主机主动获取一个IP地址。主机从服务器动态获取IP地址、子网掩码、默认网关地址 、DNS服务器名称与IP地址。由于DHCP具有将主句连接进入一个网络的网络相关的自动能力,故被称为“即插即用”协议(零配置协议)。DHCP允许地址重用,支持在用地址续租,支持移动用户加入网络。
DHCP是一个客户——服务器协议。客户为新到达的主机,需要获得自身使用的IP地址和相关网络配置信息。每个子网都应该有一个DHCP服务器,如果没有,需要一个DHCP中继代理(路由器),代理需要知道用于该网络的DHCP服务器地址。

对于新到达的主机,有4个步骤

1. DHCP服务器发现。新到达的主机需要发现与之交互的DHCP,使用DHCP发现报文。客户生成的IP数据报使用广播地址进行广播,向端口67发送报文。

2. DHCP服务器提供。DHCP服务器收到发现报文后,用DHCP提供报文进行响应。仍然使用广播地址(主机此时还没IP地址),提供的报文包括发现报文的事务ID、推荐的IP地址、网络掩码和IP地址租用期(IP地址有效时间量)。

3. DHCP请求。新的主机从一个或多个服务器的提供中选一个,并向选择的服务器提供DHCP请求报文进行响应,表示选择这个IP地址,将所有参数传回。

4. DHCP ACK。服务器使用DHCP ACK报文,对主机的请求报文进行响应,表示主机被分配上了这个IP地址,并在报文中证实这些参数。

DHCP协议在应用层 实现,请求报文封装到 UDP数据报中。一直采用IP广播的方式,或链路层广播 (e.g. 以太网广播)

DHCP服务器构造 ACK报文 ▪ 包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址 

6. NAT——网络地址转换

动机

▪ 只需/能从ISP申请一个IP地址,可能出现IPv4地址耗尽

▪ 本地网络设备IP地址的变更,无需通告外界网络

▪ 变更ISP时,无需修改内部网络设备IP地址

▪ 内部网络设备对外界网络不可见,即不可直接寻址(安全)

NAT的实现

利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)。将每对(NAT IP地址, 新端口号) 与(源IP地址, 源端口号)的替换信息存储到NAT转换表中。根据NAT转换表,利用(源IP地址, 源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址, 新端口号)。

NAT争议

▪ 路由器应该只处理第3层功能

▪ 违背端到端通信原则,应用开发者必须考虑到NAT的存在,e.g., P2P应用

▪ 地址短缺问题应该由IPv6来解决

NAT穿透

问题:客户期望连接内网地址为 10.0.0.1的服务器,但客户不能直接利用地址 10.0.0.1直接访问服务器。对外唯一可见的地址是NAT 地址: 138.76.29.7

解决方案1: 静态配置NAT ,将特定端口的连接请求转发给服务器,比如 (138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)。

解决方案2: 利用UPnP (Universal Plug and Play) 互联网网关设备协议 (IGD-Internet Gateway Device ) 自动配置: 学习到NAT公共IP地址 (138.76.29.7) 。在NAT转换表中,增删端口映射

解决方案3: 中继(如Skype) 。NAT内部的客户与中继服务器建立连接,外部客户也与中继服务器建立连接。中继服务器桥接两个连接的分组

7. ICMP协议——互联网控制报文协议

ICMP协议被主机和路由器用来彼此沟通网络层的信息。典型用途为差错报告和网络探询。

ICMP通常被认为是IP的一部分,但体系结构中位于IP之上,因为ICMP报文承载在IP分组中。

两类ICMP报文

(1)差错报告报文(5种)

• 目的不可达

• 源抑制(Source Quench)

• 超时/超期

• 参数问题

• 重定向 (Redirect)

(2)网络探询报文(2组)

• 回声(Echo)请求与应答报文(Reply)

• 时间戳请求与应答报文

不发送ICMP差错报文的特殊情况

▪ 对ICMP差错报告报文不再发送 ICMP差错报告报文

▪ 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文

▪ 对所有多播IP数据报均不发送 ICMP差错报告报文

▪ 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送 ICMP 差错报告报文

ICMP报文格式与承载方法

一个ICMP报文包括一个类型字段和一个编码字段,同时有检验和字段,接下来4个字节是ICMP的类型。到此处ICMP的前8个字节确定,之后的数据部分包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节(便于发送方确定引发出错的数据报)。ICMP报文作为IP分组封装的数据承载在IP分组中。

类型和编码列表

(感觉不可能考)

应用举例:Traceroute

源主机向目的主机发送一系列UDP 数据报,第1组IP数据报TTL =1,第2组IP数据报TTL=2, 以此类推,但是设置的目的端口号是不可能使用的端口号。当TTL耗尽时,路由器丢弃数据报,向源主机发送ICMP报文 (type=11, code=0) 。ICMP报文携带路由器名称和IP地址信息。当ICMP报文返回到源主机时, 记录RTT。

停止准则:1. UDP数据报最终到达目的主机 2. 目的主机返回“目的端口不可达” ICMP报文 (type=3, code=3) 3. 源主机停止

8. IPv6

最初动机: 32位IPv4地址空间已分配殆尽

其他动机: 改进首部格式  1. 快速处理/转发数据报 2. 支持QoS

IPv6数据报格式

固定40字节的基本首部,不允许分片。

优先级(priority): 标识数据报的优先级

流标签(flow Label): 标识同一“流”中的数据报

下一个首部(next header): 标识下一个选项首部或上层协议首部(如TCP首部)

与IPv4相比

彻底移除校验和(checksum),以减少每跳处理时间。允许选项(options)字段,但是从基本首部移出,定义多个选项首部, 通过“下一个首部”字段指示。在ICMPv6这个新版ICMP中,附加报文类型,例如“Packet Too Big”,同时增加多播组管理功能。

表示形式(128位,采用8组4个16进制数的形式表示)

❖ 一般形式: 1080:0:FF:0:8:800:200C:417A

❖ 压缩形式: FF01:0:0:0:0:0:0:43 压缩→FF01::43

❖ IPv4-嵌入形式: 0:0:0:0:0:FFFF:13.1.68.3 或 ::FFFF:13.1.68.3

❖ 地址前缀: 2002:43c:476b::/48 (注: IPv6不再使用掩码!)

❖ URLs: http://[3FFE::1:800:200C:417A]:8000

IPv6基本地址类型

❖ 单播:一对一通信(相当于IPv4的主机与主机通信)

❖ 多播:一对多通信(相当于IPv4向子网发数据)

❖ 任意播:一对任意一组之一通信

IPv4向IPv6过渡——隧道

隧道: IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络

9. 路由算法

网络抽象:图

路由算法:寻找最小路径的算法。

路由算法分类

静态路由: ❖ 手工配置 ❖ 路由更新慢 ❖ 优先级高

动态路由: ❖ 路由更新快(定期更新,及时响应链路费用或网络拓扑变化)

全局信息: ❖ 所有路由器掌握完整的网络拓扑和链路费用信息 ❖ E.g. 链路状态(LS)路由算法

分散信息: ❖ 路由器只掌握物理相连的邻居以及链路费用 ❖ 邻居间信息交换、运算的迭代过程 ❖ E.g. 距离向量(DV)路由算法

链路状态(LS)路由算法

Dijkstra 算法

❖ 通过“链路状态广播”,所有结点(路由器)掌握网络拓扑和链路费用,所有结点拥有相同信息

❖ 通过获得该结点的转发表计算从一个结点(“源”) 到达所有其他结点的最短路径

❖ 迭代: k次迭代后,得到到达k个目的结点的最短路径

距离向量(DV)路由算法

Bellman-Ford方程(动态规划)

重点:结点获得最短路径的下一跳, 该信息用于转发表中!

结点x已知到达每个邻居的费用 c(x,v)和维护其所有邻居的距离向量Dv = [Dv (y): y є N ]。其中Dx (y) = 从结点x到结点y的最小费用估计。

特点:

1. 异步迭代: 引发每次局部迭代的因素为局部链路费用改变或来自邻居的DV更新

2. 分布式: 每个结点只当DV变化时才通告给邻居,邻居在必要时(其DV更新后发生改变)再通告它们的邻居无穷计数问题

毒性逆转(poisoned reverse): 如果一个结点(Z)到达某目的(X)的最小费用路径是通过某个邻居(Y),则通告给该邻居结点到达该目的的距离为无穷大。

定义最大度量(maximum metric): 定义一个最大的有效费用值,如15跳步为最大有效跳数,16跳步表示无穷

层次路由

聚合路由器为一个区域: 自治系统AS (autonomous systems) 。同一AS内的路由器运行相同的路由协议(算法),即自治系统内部路由协议 (“intra-AS” routing protocol) 。不同自治系统内的路由器可 以运行不同的AS内部路由协议。网关路由器(gateway router)位于AS“边缘” ,通过链路连接其他AS的网关路由器。

转发表由AS内部路由算法与 AS间路由算法共同配置。AS内部路由算法设置AS内部目的网络路由入口 (entries)。AS内部路由算法与AS间路由算法共同设置AS外部目的网络路由入口。

10. 路由协议

❖Internet采用层次路由

❖AS内部路由协议也称为内部网络协议IGP (interior gateway protocols)

❖最常见的AS内部路由协议:

▪ 路由信息协议:RIP(Routing Information Protocol)

▪ 开放最短路径优先:OSPF(Open Shortest Path First)

▪ 内部网关路由协议:IGRP(Interior Gateway Routing Protocol)

RIP

距离向量路由算法

▪ 距离度量:跳步数 (max = 15 hops), 每条链路1个跳步

▪ 每隔30秒,邻居之间交换一次DV,成为通告(advertisement)

▪ 每次通告:最多25个目的子网(IP地址形式)

链路失效与恢复:如果180秒没有收到通告,代表邻居/链路失效,即经过该邻居的路由不可用,需要重新计算路由。向邻居发送新的通告,如果转发表改变,邻居再依次向外发送通告。链路失效信息在快速传播到全网的过程中,可能发生无穷计数问题。毒性逆转技术用于预防乒乓(ping-pong)环路 (另外:无穷大距离 = 16 hops)

RIP路由表是利用一个称作route-d (daemon)的应用层进程进行管理,使用应用进程实现,通告报文周期性地通过UDP数据报发送。

OSPF

open意味着“开放”,即公众可用。采用链路状态路由算法(LS分组扩散(通告),每个路由器构造完整的网络(AS)拓扑图,利用Dijkstra算法计算路由)。OSPF通告中每个入口对应一个邻居。OSPF报文直接封装到IP数据报中,然后OSPF通告在整个AS范围泛洪。与OSPF极其相似的一个路由协议IS-IS路由协议。

OSPF的优点

❖安全(security): 所有OSPF报文可以被认证 (预防恶意入侵)

❖允许使用多条相同费用的路径 (RIP只能选一条)

❖对于每条链路,可以针对不同的TOS设置多个不同的费用度量 (e.g., 卫星链路可以针对“尽力” (best effort) ToS设置“低”费用;针对实时ToS 设置“高”费用)

❖集成单播路由与多播路由: ▪ 多播OSPF协议(MOSPF) 与OSPF利用相同的网络拓扑数据 ❖OSPF支持对大规模AS分层(hierarchical)

区边界路由器(Area Border Routers): “汇总” 到达所在区网络的距离, 通告给其他区边界路由器

主干路由器(Backbone Routers): 在主干区内运行OSPF路由算法.

AS边界路由器(AS boundary routers): 连接其他AS.

BGP

❖ 边界网关协议BGP (Border Gateway Protocol): 事实上的标准域间路由协议

▪ 将Internet “粘合”为一个整体的关键

❖ BGP为每个AS提供了一种手段:

▪ eBGP: 从邻居AS获取子网可达性信息.

▪ iBGP: 向所有AS内部路由器传播子网可达性信息.

▪ 基于可达性信息与策略,确定到达其他网络的 “好” 路径

❖BGP会话(session): 两个BGP路由器 (“Peers”) 交换BGP报文:

▪ 通告去往不同目的前缀(prefix)的路径 (“路径向量 (path vector)”协议)

▪ 报文交换基于半永久的TCP连接

❖BGP报文:

▪ OPEN: 与peer建立TCP连接,并认证发送方

▪ UPDATE: 通告新路径 (或撤销原路径)

▪ KEEPALIVE: 在无UPDATE时,保活连接;也用于对 OPEN请求的确认

▪ NOTIFICATION: 报告先前报文的差错;也被用于关闭连接

❖ 通告的前缀信息包括BGP属性

▪ 前缀+属性= “路由”

❖ 两个重要属性:

▪ AS-PATH(AS路径): 包含前缀通告所经过的AS序列: e.g., AS 67, AS 17

▪ NEXT-HOP(下一跳): 开始一个AS-PATH的路由器接口,指向下一跳AS.

• 可能从当前AS到下一跳AS存在多条链路

❖ 通告的前缀信息包括BGP属性

▪ 前缀+属性= “路由” ❖ 两个重要属性:

▪ AS-PATH(AS路径): 包含前缀通告所经过的AS序列: e.g., AS 67, AS 17

▪ NEXT-HOP(下一跳): 开始一个AS-PATH的路由器接口,指向下一跳AS.

• 可能从当前AS到下一跳AS存在多条链路、

OSPF和BGP之间的区别

OSPF是AS内部的路由选择,是运行在单一ISP的网络中的路由选择算法。

BGP是一个AS间路由选择协议,是ISP之间的路由选择,称为边界网关协议。


版权声明:本文为littleteresa原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。