1)网络层向下层提供怎样的服务("可靠传输" or "不可靠传输")
2)网络层寻址问题
3)路由选择问题
1)可靠通信由网络层来保证
必须建立网络层的连接--虚电路VC(Virtual Circuit)
2)通信双方沿着已建立的虚电路发送分组
3)目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需要携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)
4)这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)
5)通信结束后,需要释放之前所建立的虚电路
6)很多广域分组交换网都使用面向连接的虚电路服务。eg. 曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
1)可靠通信应当由用户主机来保证
2)不需要建立网络层连接
3)每个分组可走不同的路径
4)每个分组的首部必须携带目的主机的完整地址
5)这种通信方式所传送的分组可能误码、丢失、重复和失序
6)由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做的比较简单,而且价格低廉(与电信网的交换机相比较)
7)因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
对比的方面 |
虚电路服务 |
数据报服务 |
思路 |
可靠通信应当由网络来保证 |
可靠通信应当由用户主机来保证 |
连接的建立 |
必须有 |
不需要 |
终点地址 |
仅在连接建立阶段使用,每个分组使用短的虚电路号 |
每个分组都有终点的完整地址 |
分组的转发 |
属于同一条虚电路的分组均按照同一路由进行转发 |
每个分组独立选择路由进行转发 |
当结点出故障时 |
所有通过出故障的结点的虚电路均不能工作 |
出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 |
总是按发送顺序到达终点 |
到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 |
可以由网络负责,也可以由用户主机负责 |
由用户主机负责 |
网际协议IP 是 TCP/IP 体系中两个最主要的协议之一。
与 IP 协议配套使用的还有三个协议:
ARP协议的用途:从网络层使用的IP地址,解析出在数据链路层使用的MAC地址
我们知道,网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系。此外,在一个网络上可能会有新的主机加进来,或撤走一些主机。更换网络适配器也会使主机的硬件地址发生改变。
而ARP协议解决这个问题的方法就是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
ARP高速缓存表
当主机B要给主机C发送数据包时, 会首先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址, 但未找到,因此,主机B需要发送ARP请求报文,来获取主机C的MAC地址
ARP请求报文有具体的格式,上图的只是简单描述 ARP请求报文被封装在MAC帧中发送,目的地址为广播地址 主机B发送封装有ARP请求报文的广播帧,总线上的其他主机都能收到该广播帧
收到ARP请求报文的主机A和主机C会把ARP请求报文交给上层的ARP进程 主机A发现所询问的IP地址不是自己的IP地址,因此不用理会 主机C的发现所询问的IP地址是自己的IP地址,需要进行相应
动态与静态的区别:
ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用
ARP协议的使用是逐段链路进行的
1)只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
2)主机号为"全0"的地址是网络地址,不能分配给主机或路由器的各接口
3)主机号为"全1"的地址是广播地址,不能分配给主机或路由器的各接口
A类地址:
网络号的最高位固定为0
B类地址:
网络号的最高位固定为10
C类地址:
网络号的最高位固定为110
D类地址:
网络号的最高位固定为1110
E类地址:
网络号的最高位固定为1111
例题:
IP 地址的指派范围:
一般不使用的特殊的 IP 地址:
IP 地址的一些重要特点:
(1)IP 地址是一种分等级的地址结构。分两个等级的好处是:
(2)实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
(3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
(4)所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
4.4.1 如何划分子网
基本思路
划分为三个子网后对外仍是一个网络
优点:
4.4.2 子网掩码
32位比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
重要:(IP 地址) AND (子网掩码) = 网络地址
例子:
例题1.
例题2.
4.4.3 默认子网掩码
4.4.4 小结
4.5.1 为什么使用无分类编址?
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
CIDR 最主要的特点:
4.5.2 如何使用无分类编址?
举例:
4.5.3 路由聚合(构造超网)
路由聚合的方法:找共同前缀
例题1:
例题2:
4.5.4 小结
给定一个IPv4地址块,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址。
4.6.1 定长的子网掩码FLSM
定长的子网掩码FLSM(Fixed Length Subnet Mask)
划分子网的IPv4就是定长的子网掩码
举例:
通过上面步骤分析,就可以从子网1 ~ 8中任选5个分配给左图中的N1 ~ N5 采用定长的子网掩码划分,只能划分出2^n个子网, 其中n是从主机号部分借用的用来作为子网号的比特数量, 每个子网所分配的IP地址数量相同 但是也因为每个子网所分配的IP地址数量相同,不够灵活,容易造成IP地址的浪费
4.6.2 变长的子网掩码VLSM
变长的子网掩码(Variable Length Subnet Mask)
无分类编址的IPv4就是变长的子网掩码
在该地址块中给左图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配。
IP数据报的发送和转发过程包含以下两部分:
注意:为了将重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,在之后的举例中,我们忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。
举例:
源主机如何知道目的主机是否与自己在同一个网络中,是直接交付,还是间接交付?
可以通过目的地址IP和源地址的子网掩码进行【逻辑与】运算得到【目的网络地址】 -如果目的网络地址和源网络地址 相同,就是在同一个网络中,属于【直接交付】 -如果目的网络地址和源网络地址 不相同,就不在同一个网络中,属于【间接交付】, 传输给主机所在网络的默认网关(路由器——下图会讲解),由默认网关帮忙转发
主机C如何知道路由器R的存在?
用户为了让本网络中的主机能和其他网络中的主机进行通信, 就必须给其指定本网络的一个路由器的接口,由该路由器帮忙进行转发, 所指定的路由器,也被称为默认网关 例如。路由器的接口0的IP地址192.168.0.128做为左边网络的默认网关
主机A会将该IP数据报传输给自己的默认网关,也就是图中所示的路由器接口0
路由器收到IP数据报后如何转发?
假设IP数据报首部没有出错,路由器取出IP数据报首部各地址字段的值
接下来路由器对该IP数据报进行查表转发
逐条检查路由条目, 将目的地址与路由条目中的地址掩码进行逻辑与运算得到目的网络地址, 然后与路由条目中的目的网络进行比较, 如果相同,则这条路由条目就是匹配的路由条目,按照它的下一条指示, 图中所示的也就是接口1转发该IP数据报。
路由器是隔离广播域的,如果因特网中数量巨大的路由器收到广播IP数据报后都进行转发,则会造成巨大的广播风暴,严重浪费因特网资源。
例题:
小结:
由于因特网中包含了众多的网络,如果我们给R1添加针对这些网络的每一条路由条目,则会给人工配置带来巨大的工作量,并且使R1的路由表变得非常大,降低了查表转发的速度。
实际上,对于具有相同下一跳的不同目的网络的路由条目,我们可以用一条默认路由条目来替代。
多条路由可选,匹配路由最具体的
举例:
假设将R2的路由表中第三条目录配置错了下一跳
这导致R2和R3之间产生了路由环路
举例:
正常情况
错误情况
解决方法
在R2路由表中添加针对所聚合的、不存在的网络的黑洞路由。黑洞路由的下一跳为null0,这是路由器内部的虚拟接口,可以把它形象地堪称一个”黑洞“,IP数据报进入它后就有去无回了。也就是路由器丢弃了该IP数据报,而不是转发该IP数据报。
举例
解决方法:添加故障的网络为黑洞路由
假设一段时间后故障网络恢复了,R1又自动地得出了其接口0的直连网络的路由条目,则针对该网络的黑洞网络会自动失效。
如果又发生故障,则生效该网络的黑洞网络
小结
因特网所采用的路由选择协议的主要特点
在目前的互联网中,一个大的ISP就是一个自治系统。这样,互联网就把路由选择协议划分为两大类,即:内部网关协议 IGP、外部网关协议 EGP
网关协议也可称为路由协议
整个路由器接口可划分为两大部分:路由选择部分、分组转发部分
路由选择部分:
1)核心部件:路由选择处理机,其任务是根据所使用的路由选择协议周期性的与其他路由器进行路由信息的交互,来更新路由表
如果送交给输入端口的网络层的分组是路由器之间交换路由信息的路由报文,则把这种分组送交给路由选择处理机,路由选择处理机根据分组的内容来更新自己的路由表。
路由选择处理机还会周期性地给其他路由器发送自己所知道的路由信息。
分组转发部分:
1)交换结构
2)一组输入端口:
信号从某个输入端口进入路由器
物理层将信号转换成比特流,送交数据链路层处理
数据链路层从比特流中识别出帧,去掉帧头和帧尾后,送交网络层处理
如果送交网络层的分组是普通待转发的数据分组,则根据分组首部中的目的地址进行查表转发
若找不到匹配的转发条目,则丢弃该分组;否则,按照匹配条目中所指示的端口进行转发
2)一组输出端口
网络层更新数据分组首部中某些字段的值,例如将数据分组的生存时间减1,然后送交数据链路层进行封装
数据链路层将数据分组封装成帧,交给物理层处理
物理层将帧看成比特流将其变换成相应的电信号进行发送
路由器的各端口还会有输入缓冲区和输出缓冲区
RIP的工作过程
RIP的路由条目的更新规则
路由器C的路由表到达各目的网络的下一跳都记为问号, 可以理解为其他路由器并不需要关心路由器C的这些内容 假设路由器C的RIP更新报文发送周期到了, 则路由器C将自己路由表中的相关路由信息封装到RIP更新报文中发送给路由器D
路由器C能到达这些网络,说明路由器C的相邻路由器也能到达,只是比路由器C的距离大1,于是根据距离的对比,路由器D更新自己的路由表
例题:
RIP存在“坏消息传播得慢”的问题
解决方法
但是,这些方法也不能完全解决“坏消息传播得慢”的问题,这是距离向量的本质决定。
小结
注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
概念
问候(Hello)分组
IP数据报首部中协议号字段的取值应为89,来表明IP数据报的数据载荷为OSPF分组
发送链路状态通告LSA
洪泛法有点类似于广播,就是从一个接口进来,从其他剩余所有接口出去
链路状态数据库同步
OSPF五种分组类型
OSPF的基本工作过程
OSPF在多点接入网络中路由器邻居关系建立
如果不采用其他机制,将会产生大量的多播分组;若DR出现问题,则由BDR顶替DR
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)
小结
BGP(Border Gateway Protocol) 是不同自治系统的路由器之间交换路由信息的协议
小结
首部:
版本、首部长度、可选字段、填充字段
IP数据报的首部长度一定是4字节的整数倍
因为首部中的可选字段的长度从1个字节到40个字节不等,那么,当20字节的固定部分加上1到40个字节长度不等的可变部分,会造成首部长度不是4字节整数倍时,就用取值为全0的填充字段填充相应个字节,以确保IP数据报的首部长度是4字节的整数倍
区分服务、总长度
标识、标志、片偏移
注意:片偏移量必须为整数,并且以8个字节为单位
对IPv4数据报进行分片
现在假定分片2的IP数据报经过某个网络时还需要进行分片
生存时间
协议
首部检验和
源IP地址和目的地址
例题:
第一题:
第二题:
小结
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议。
ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议
ICMP 报文的格式
ICMP差错报告报文共有以下5种:
不应发送ICMP差错报告报文情况
常用的ICMP询问报文:
ICMP应用举例
小结