网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络层不提供服务质量承诺。
与IP配套的四个协议
ARP
(Address Resolution Protocol
)RARP
ICMP(Internet Control Message Protocol)
IGMP(Internet Group Management Protocol)
网际层的 IP 协议及配套协议
没有一种单一的网络能够适应所有用户的需求。
网络互相连接起来要使用一些中间设备
(relay)
系统(repeater)
(bridge)
(router)
(brouter)
(gateway)
,连接两个不兼容的系统,高层协议转换由于历史原因,许多有关
TCP/IP
的文献曾经把网络层使用的路由器称为网关。
IP
协议”统一”
1.
IP
地址及其表示方法
IP 地址的编址方法
三个历史阶段:
1. 分类的IP
地址—>1981
2. 子网的划分—>1985
3. 构建超网—>1993
1~3
位,其数值分别规定为
0
,
10
和
110
D类地址前四位为
1110
,用于多播
2.
常见的三种类别的IP
地址
环回测试
IP地址的指派范围
网络类别 | 最大可指派的网络数 | 第一个网络号 | 最后一个网络号 | 每个网络中的主机数 | 原因 | 比例 |
---|---|---|---|---|---|---|
A | 27−2 | 1 | 126 | 224−2 | 本网络(网络号全为0)占一个,环回测试(127)占一个 | 50% |
B | 214−1 | 128.1 | 191.225 | 216−2 | 128.1.0.0 不指派,网络号不减 2 ,但是主机号还是要减 |
25% |
C | 221−1 | 192.0.1 | 223.255.255 | 28−2 | 192.0.0.0 不指派,网络号不减 2 ,但是主机号还是要减 |
12.5% |
一般不使用的特殊IP地址
IP地址 | 意思 |
---|---|
0.0.0.0 | 在本网络上的主机(参见DHCP协议) |
网络号全为0 | 在本网络的某个主机 |
225.255.255.255 | 只在本网络上进行广播(各路由器均不转发) |
主机号全为1 | 对该网络上的所有主机进行广播 |
127.x.x.x | 本地环回测试 |
物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为IP地址是用软件实现的)。
unnumbered network/anonymous
,当两个路由器直接相连时,在连线两端的接口处,可以不分配网络地址。
ARP
和逆地址解析协议RARP
ARP请求分组是广播发送的,ARP响应分组是普通的单播。
应当注意的问题
ARP
是解决同一个局域网上的主机或路由器的IP
地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP
找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
ARP使用的四种典型情况
共20字节
数据格式常用 4 字节( 32 位 )来描述
2.
IP数据报首部的可变部分
1~40
字节
路由表 每行对应一个网络
分组转发算法
查路由表—>计算路由器MAC地址—>写入MAC帧首部
1.
从两级IP地址到三级IP地址
2.
子网掩码
极力推荐子网掩码中选用连续的1
路由器在和相邻路由器交换路由信息时,必须把自己所在网络的子网掩码告知对方。
子网数要根据情况减2,除去全0和全1两种情况【子网号不能为全1或全0,但随着CIDR的广泛使用,现在全1和全0的子网号也可以使用了,但是一定要谨慎使用】
在划分子网的情况下路由器转发分组的算法
(1) 从收到的分组的首部提取目的 IP 地址 D。
(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
简化的路由转发算法
1
. 网络前缀 Variable Length Subnet Mask
,在划分子网的网络中可同时使用几个不同的子网掩码
在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
sider
,网络前缀(简称前缀)
CIDR 最主要的特点
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
IP 地址从三级编址(使用子网掩码)又回到了两级编址。
斜线记法
网络前缀小于13后大于27的都较少使用
地址聚合
构成超网
前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
这些 C 类地址合起来就构成了超网。
CIDR 地址块中的地址数一定是 2 的整数次幂。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
2.
最长前缀匹配
从匹配结果中选择具有最长网络前缀的路由
3.
使用二叉线索查找路由表
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
不应发送 ICMP 差错报告报文的几种情况
对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
对具有多播地址的数据报都不发送 ICMP 差错报告报文。
对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
1
. 理想的路由算法
2
. 分层次的路由选择协议
路由选择协议分类
- 内部网关协议IGP**Interior Gateway Protocol**:RIP/OSPF
- 外部网关协议EGP**External Gateway Protocol**:/EGP[缺点很多,不再使用]/BGP-4
这里要指出两点
因特网的早期 RFC 文档中未使用“路由器”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个属于当作同义词。
IGP 和 EGP 是协议类别的名称。但 RFC 在使用 EGP 这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是 EGP。因此在遇到名词 EGP 时,应弄清它是指旧的协议 EGP 还是指外部网关协议 EGP 这个类别。
1
. 工作原理
Routing Information Protocol
,
基于距离向量的路由选择协议
hop count
),因为每经过一个路由器,跳数就加 1,只能包含15个路由器,直连网络的距离定义为0
RIP不能在两个网络之间同时使用多条路由,RIP选择一条具有最短路由器的路由,哪怕还存在另一条高速(低时延)但路由器较多的路由。
三个重要问题:
1. 和哪些路由器交换信息?
2. 交换什么信息?
3. 在什么时候交换信息?
RIP 协议的三个要点;
1. 仅和相邻路由器交换信息
2. 交换当前本路由器所知道的全部信息,即自己的路由表
3. 按固定的时间间隔交换信息,例如每隔30s
路由表的建立
路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。
以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
convergence
,自治系统中所有的结点都得到正确的路由选择信息的过程
路由表中信息
目的网络 | 距离 | 下一跳路由 |
---|---|---|
Net2 | 3 | R4 |
Net3 | 4 | R5 |
2
. 距离向量算法
对地址为X的相邻路由器发来的RIP报文,把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1
Bellman-Ford算法
地址为X的相邻路由器发来RIP报文
目的网络N不变
所有距离字段d自增1
下一跳路由修改为X
if(目的网络N不在路由表中)
添加该条路由
else if(目的网络N在路由表中)
{
// 查看下一跳路由器地址
if(下一跳路由为X)
把收到的项目替换原路由表的项目 //使用最新消息更新一切
else if(d < 路由表中信息) // 到目的网络N,但下一跳路由器不是X
更新
}
while()
{
标记相邻路由为不可达路由
距离置为16
}
RIP保证每个路由器到每个目的网络的路由都是最短的(跳数最少)
路由器之间交换信息
虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
3
. RIP协议的报文格式
RIP协议使用UDP进行传送,端口520
当网络出现故障时,要经过较长的时间才能将此信息传送到所有的路由器
Open Shortest Path First
最短路径算法SPF
分布式的链路状态协议
OSPF | RIP |
---|---|
向本自治系统的所有路由器发送信息【洪泛法,水波】 | 向相邻的路由器发送信息 |
发送的信息是与所有相邻路由器的链路状态【代价】 | 到所有网络的距离和下一跳路由器 |
发生变化时才发送信息 | 定期交换信息 |
划分区域
划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
OSPF使用层次结构的区域划分
区域标识符
: 主干区域0.0.0.0
,其他0.0.0.1
OSPF直接使用IP数据报传送,协议字段为89
2
. OSPF的五种分组
类型1,问候(Hello)分组。
类型2,数据库描述(Database Description)分组。
类型3,链路状态请求(Link State Request)分组。
类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
类型5,链路状态确认(Link State Acknowledgment)分组。
OSPF 的其他特点
完全连接的fully adjaent
摘要信息
可靠的洪泛法
BGP 使用的环境却不同
BGP只能是力求寻找一条能够到达目的网络且比较好的路由,而并非寻找一条最佳路由。
BGP采用了路径向量路由选择协议。
路径向量路由选择协议
距离向量协议
链路状态协议
BGP 协议的特点
BGP协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
每一个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
多播数据报的目的地址写入的是多播组的标识符,然后暑假让加入到这个多播组的主机的IP地址与多播组的标识符关联起来。
D类地址前四位为1110,用于多播
D类地址范围是224.0.0.0-239.255.255.255
多播数据报和一般的IP数据报的区别就是它使用D类地址作为目的地址【肯定不能作为源地址】,并且首部的协议字段值是2,表明使用IGMP协议。
以太网硬件地址字段中的第1字节的最低位为1时即为多播地址。
P166页图4-47
1
. IP多播需要两种协议
多播转发必须动态地适应多播组成员的变化,网络拓扑并未发生变化
多播路由在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个数据报从哪里来到哪里去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
2
. 网际组管理协议IGMP
专用地址
1. 10.0.0.0~10.255.255.255
或记为10/8
24位块
2. 172.16.0.0~172.31.255.255
或记为172.16/12
20位块
3. 192.168.0.0~192.168.255.255
或记为192.168/16
16位块
virtual private network
所有通过因特网传送的数据都必须加密