网络层服务
主机到主机
核心功能:转发、路由、连接建立(并不是所有网络都需要的)
无连接服务:如数据报网络
连接服务:如虚电路网络
虚电路网络
每个分组的传输利用链路的全部带宽;
沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址;
同一条VC,在每段链路上的VCID通常不同。路由器转发分组时依据转发表改写/替换虚电路号。
应用于虚电路网络如ATM、帧中继网络等。
每条虚电路包括:
从源主机到目的主机的一条路径
虚电路号(VCID),沿路每段链路一个编号
沿路每个网络层设备(如路由器),利用转发表记录经过的每条虚电路
虚电路信令协议
数据报网络
路由器根据分组的目的地址转发分组,每个分组独立选路。
最长前缀匹配优先:在检索转发表时,如果匹配成功两条以上或者多条入口的时候,优先选择与分组目的地址匹配前缀最长的入口(entry)。
数据报网络VS虚电路网络
数据报网络以Internet网络为例 | VC网络以ATM为例 |
---|---|
计算机之间的数据交换:“弹性”服务,没有严格时间需求 | 电话网络演化而来 |
链路类型众多:特点、性能各异;统一服务困难;效率低 | 核心业务是实时对话:严格的时间、可靠性需求;需要有保障的服务 |
智能”端系统(计算机):可以自适应、性能控制、差错恢复 | “哑(dumb)”端系统(非智能):电话机、传真机 |
简化网络,复杂“边缘” | 简化边缘,复杂“网络 |
Internet网络层概述
IP协议(主要是IPv4)
IP数据报分组格式
名称 | 解释 |
---|---|
版本号 | 字段占4位,IP协议的版本号:4就是指IPv4,6就是指IPv6。 |
首部长度 | 字段占4位,IP分组首部长度。以4字节为单位。例:5→IP首部长度为20(5*4)字节 |
服务类型(TOS) | 字段占8位,指示期望获得哪种类型的服务。1998年这个字段改名为区分服务;只有在网络提供区分服务(DiffServ)时使用;一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H。 |
总长度 | 字段占16位,IP分组的总字节数(首部+数据)。最大IP分组的总长度:65535B;最小的IP分组首部:20B;IP分组可以封装的最大数据65535-20=65515B |
标识 | 字段占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字节为单位。 |
生存时间(TTL) | 字段占8位,IP分组在网络中可以通过的路由器数(或跳步数)。路由器转发一次分组,TTL减1;如果TTL=0,路由器则丢弃该IP分组。 |
协议 | 字段占8位,指示IP分组封装的是哪个协议的数据包,实现复用/分解。例:如果协议字段的值为6,那么表示封装的是TCP段;17表示封装的是UDP数据报。 |
首部校验和 | 字段占16位,实现对IP分组首部的差错检测。逐跳计算、逐跳校验。 |
源IP地址、目的IP地址 | 字段各占32位,分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址 |
选项字段 | 长度可变,范围在1~40B之间:携带安全、源选路径、时间戳和路由记录等内容。实际上很少被使用。 |
填充 | 字段占长度可变,范围在0~3B之间:目的是补齐整个首部,符合32位对齐,即保证首部长度是4字节的倍数 |
IP分片
最大传输单元(MTU):链路层数据帧可封装数据的上限。不同链路的MTU不同。
大IP分组向较小MTU链路转发时,路由器可以将大的IP分组“分片”;IP分片到达目的主机后进行“重组”。
IP首部的相关字段用于标识分片以及确定分片的相对顺序:总长度、标识、标志位和片偏移
DF=1 禁止分片
DF=0 允许分片
MF=1 非最后一片
MF=0 最后一片
IP分片过程
假设原IP分组总长度为L,待转发链路的MTU为M;
若L>M,且DF=0,则可以/需要分片;
分片时每个分片的标识复制原IP分组的标识;
通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片;
一个最大分片可封装的数据应该是8的倍数,因此,一个最大分片可封装的数据为
需要的总片数为
每片的片偏移字段取值为:
每片的总长度字段为:
每片的MF标志位为:
例:
IP编址
- IP地址
高位比特——网络号(NetID)
低位比特——主机号(HostID) - 有类IP地址(Addresses)
有类地址 | 所占比例 | Net ID+Host ID | 范围 |
---|---|---|---|
A类地址 | 50% | 8位+24位 | 0.0.0.0~127.255.255.255 |
B类地址 | 25% | 16位+16位 | 128.0.0.0~191.255.255.255 |
C类地址 | 12.5% | 24位+8位 | 192.0.0.0~223.255.255.255 |
D类地址 | 6.25% | 32位 | 224.0.0.0~239.255.255.255 |
E类地址 | 6.25% | 32位 | 240.0.0.0~255.255.255.255 |
- 特殊IP地址:
- 私有地址:只用于内部网络,在公共互联网上无效
- IP子网
IP地址具有相同网络号的设备接口;
不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口- 子网划分
高位比特——网络号(NetID)
原网络主机号部分比特——子网号(SubID)
低位比特——主机号(HostID)
- 子网掩码
作用:确定是否划分以及利用多少位划分子网。
形式:如IP地址,32位,点分十进制形式。
取值:NetID、SubID位全取1;HostID位全取0。
应用:将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址 - 例
- 子网划分
2.
目的IP地址:172.32.1.112 , 子网掩码:255.255.254.0
172.32.1.112 = 10101100 00100000 00000001 01110000
255.255.254.0 = 11111111 11111111 11111110 00000000
---------------------------------------------------------------
10101100 00100000 00000000 00000000
172 32 0 0
子网地址:172.32.0.0(子网掩码:255.255.254.0)
地址范围:172.32.0.0~172.32.1.255
可分配地址范围:172.32.0.1~172.32.1.254
广播地址:172.32.1.255
CIDR(另一种IP编址)
无类域间路由(CIDR:Classless InterDomain Routing)
消除传统的A、B、C类地址界限;
NetID+SubID→Network Prefix(Prefix)可以任意长度;
融合子网地址与子网掩码,方便子网划分。比如子网201.2.3.64,子网掩码是255.255.255.192,就可以写成201.2.3.64/26;
无类地址格式:a.b.c.d/x,其中x为前缀长度。
优点:
1.可以提高IPv4地址空间分配效率
2.提高路由效率:将多个子网聚合为一个较大的子网,构造超网(supernetting);路由聚合。
DHCP协议(Dynamic Host Configuration Protocol)
- 从服务器动态获取:
IP地址
子网掩码
默认网关地址
DNS服务器名称与IP地址 - “即插即用”
- 允许地址重用
- 支持在用地址续租
- 支持移动用户加入网络
- DHCP协议在应用层实现
- 默认网关:一台主机如果找不到可用的网关,就把数据报发给默认指定的网关,由这个网关来处理。现在主机使用的网关,一般是指默认网关。
- 工作过程:
主机广播”DHCP discovver” (发现报文);
DHCP服务器利用“DHCP offer”(提供报文)进行相应;
主机请求IP地址:“DHCP request”(请求报文):依然用广播域是为了告诉其他服务器收回预分配的地址;
DHCP服务器分配IP地址:“DHCP ack”(确认报文):包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址。
如示意图:
NAT
- 网络地址转换(使私有地址可以在公共网络上成功通信)
- 实现
替换:利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
记录:将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT 转换表中
替换:根据NAT转换表,利用(源IP地址,源端口号)替换每个进入内网IP数据报的(目 的IP地址,目的端口号),即(NAT IP地址,新端口号) - NAT穿透问题
1.静态配置NAT,将特定端口的连接请求转发给服务器;
2.利用UPnP互联网网关设备协议IGD自动配置;
3.中继(如Skype):
NAT内部的客户与中继服务器建立连接
外部客户也与中继服务器建立 连接
中继服务器桥接两个连接的分组
互联网控制报文协议(ICMP)
- 功能:差错(或异常)报告;网络探询
- 报文类型:
- 差错报告报文(5种)
目的不可达
源抑制
超时/超期
参数问题
重定向 - 网络探询报文(2组)
回声请求与应答报文
时间戳请求与应答报文
- 差错报告报文(5种)
- 几种不发送ICMP差错报告报文的特殊情况:
对ICMP差错报告报文不再发送ICMP差错报告报文;
除第一个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文;
对所有多播IP数据报均不发送ICMP差错报告报文;
对具有特殊地址(如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文; - 几种ICMP报文已不再使用:
信息请求与应答报文;
子网掩码请求和应答报文;
路由器询问和通告报文; - ICMP报文封装到IP数据报中进行传输
- ICMP差错报告报文数据封装
IPv6简介
数据报格式
固定长度40字节基本首部,不允许分片。
优先级:标识数据报的优先级
流标签:标识同一流中的数据报。根据不同流标签提供不同服务。
下一个首部:标识下一个选项首部或上层协议首部,如TCP首部
IPv6 与 IPv4的对比
IP v6特点如下:
校验和:彻底移出,以减少每跳处理时间
选项:允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示
ICMPv6:新版ICMP(多播组管理功能)
不允许分片
灵活的首部格式
支持更多的服务类型
地址长度为128bit
首部必须是8B的整数倍
简化了报文头部格式(8个域,IPv4 12个),加快报文转发,提高了吞吐量
IPv6地址表示形式
一般形式: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向IPv6过渡
隧道(tunneling):IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络
例题
答:
(1)
可分配地址:126个
202.118.1.1-202.118.1.126
202.118.1.129-202.118.1.254
(2)
(3)
路由算法
链路状态路由算法
- Dijkstra算法
距离-向量路由算法
- Bellman-Ford方程(动态规划)
*无穷计数问题解决方案- 毒性逆转
- 定义最大度量
层次路由
- 聚合路由器为一个区域:自治系统AS
- 同一AS内的路由器运行相同的路由协议(算法)
·自治系统内部路由协议(intra-AS),也叫内部网关协议(IGP)
·不同自治系统内的路由器可以运行不同的AS内部路由协议 - 网关路由器:
·位于AS“边缘”
·通过链路连接其他AS的网关路由器
.热土豆路由:最近的网关路由
AS内部路由协议
路由信息协议:RIP(Routing Information Protocol)
- 距离向量路由算法
- 距离度量:跳步数 (max = 15 hops), 每条链路1个跳步
- 每隔30秒,邻居之间交换一次DV,成为通告(advertisement)
- 每次通告:最多25个目的子网(IP地址形式)
- RIP路由表的处理
1.RIP路由表是利用一个称作route-d的应用层进程进行管理
2.应用进程实现
3.通告报文周期性地通过UDP数据报发送
开放最短路径优先:OSPF(Open Shortest Path First)
- 采用链路状态路由算法
- OSPF通告在整个AS范围泛洪 ,OSPF报文直接封装到IP数据报中.
- 与OSPF极其相似的一个路由协议:IS-IS路由协议
- OSPF优点(与RIP对比):
- 安全(security): 所有OSPF报文可以被认证 (预防恶意入侵)
- 允许使用多条相同费用的路径 (RIP只能选一条)
- 对于每条链路,可以针对不同的TOS设置多个不同的费用度量 (e.g., 卫星链路可以针对“尽力” (best effort) ToS设置“低”费用;针对实时ToS设置“高”费用)
- 集成单播路由与多播路由: 多播OSPF协议(MOSPF) 与OSPF利用相同的网络拓扑数据
- OSPF支持对大规模AS分层
两层分级:局部域(Area)、主干区(Backbone)
区边界路由器
主干路由器
内部网关路由协议:IGRP(Interior Gateway Routing Protocol)
Cisco私有协议 .
AS间路由协议
BGP
-
BGP为每个AS提供了一种手段
eBGP: 从邻居AS获取子网可达性信息.
iBGP: 向所有AS内部路由器传播子网可达性信息.
基于可达性信息与策略,确定到达其他 网络的 “好"路径. -
BGP会话:两个BGP路由器交换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路由选择
网关路由器收到路由通告后,利用其输入策略(import policy)决策接受/拒绝该路由 。路由器可能获知到达某目的AS的多条路由,基于以下准则选择:
1.本地偏好(preference)值属性: 策略决策(policy decision)
2.最短AS-PATH
3.最近NEXT-HOP路由器: 热土豆路由(hot potato routing)
4.附加准则 -
桩网络(stub network/AS): 只与一个其他AS相连
-
双宿网络(dual-homed network/AS): 连接两个其他AS
-
采用不同AS内与AS间路由协议
- 策略(policy):
inter-AS: 期望能够管理控制流量如何被路由,谁路由经过其网络等.
intra-AS: 单一管理,无需策略决策 - 规模(scale):
层次路由节省路由表大小,减少路由更新流量
适应大规模互联网 - 性能(performance):
intra-AS: 侧重性能
inter-AS: 策略主导
- 策略(policy):