目录
差错报告报文:终点不可达、源点抑制、时间超过、参数问题、改变路由(重定向)
分组网间探测PING (Packet InterNet Groper):
2.数据库描述 (Database Description) 分组
3.链路状态请求 (Link State Request) 分组
4.链路状态更新 (Link State Update) 分组
5.链路状态确认 (Link State Acknowledgment) 分组
路由优先级:Direct > OSPF > Static > RIP
概述
主要任务:实现网络互连,进而实现数据包在各网络之间的传输
ps: 因特网使用TCP/IP协议栈,其中的网络层使用网际协议IP(核心协议),故在TCP/IP协议栈中网络层也被称作网际层
提供的两种服务:面向连接的虚电路、不面向连接的数据报
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。(不发生出错、丢失、重复和失序)
因特网的设计:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
对比
虚拟互连网络
概念:互连在一起的计算机网络
使网络互相连接的中间设备:
- 物理层:转发器(中继器)
- 数据链路层:网桥、桥接器(网桥和路由器的混合物)、交换机
- 网络层:路由器
- 网络层以上:网关
ps:路由器也被称作网关
地址解析协议 ARP
主要作用
同一局域网下将主机或路由器的IP地址解析为物理地址
使用过程
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播—个ARP响应分组,源主机收到后将此映射写入ARP缓存 (默认动态类型20min更新一次)。
ps:ARP cache中的ARP表是由主机自动建立的。
位置
封装在帧中传输,不封装在IP数据报中
因特网控制报文协议 ICMP
作用
更有效的转发IP数据报和提高交付成功的机会
位置
被封装在IP数据报中
ps:主机和路由器使用ICMP来发送差错报告报文和询问报文
种类
差错报告报文:终点不可达、源点抑制、时间超过、参数问题、改变路由(重定向)
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。(无法交付)
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。(拥塞丢数据)
- 时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时问超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丟弃,并向源点发送时间超过报文。(TTL=0)
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。(首部字段有问题)
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。(可通过更好的路由)
不应该发生差错报告报文的情况:
- ICMP 差错报告报文
- 第一个分片的数据报片的所有后续数据报片
- 具有多播地址的数据报
- 具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报
询问报文:回送请求和回答报文、时间戳请求和回答报文
不能使用询问报文的情况:
- 信息请求与回答报文
- 掩码地址请求和回答报文
- 路由器询问和通告报文
- 源点抑制报文
应用举例
分组网间探测PING (Packet InterNet Groper):
- PING 用来测试两个主机或路由器之间的连通性
- PING 使用了 ICMP 回送请求(ICMP Echo request)与回送回答(ICMP Echo reply)
- 报文 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP
跟踪路由(Traceroute):
- 用来跟踪一个分组从源点到终点的路径
- 在 Windows 操作系统中这个命令是 tracert
- 它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪
因特网组管理协议 IGMP
是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间
IPv4地址
概念
给每个连接在因特网上的主机(或路由器)的每一个接口分配一个在全世界范围是惟一的 32 bit 的标识符。用点分十进制表示。
ps:一个路由器至少应当有两个不同的 IP 地址
IP 地址 ::= { <网络号>, <主机号>}
特点
同一个局域网下主机或路由器的网络前缀必然相同,与子网掩码相与结果相同
编址方法
- 分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议
- 子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在 1985 年通过
- 构成超网。新的无分类编址(CIDR)方法,1993 年提出后很快就得到推广应用
分类编织的IPv4地址
ps:主机号“全0”为网络地址,“全1”为广播地址,不能分配给主机或路由器端口
- A类网络号最小为0 (不指派),最大为127(不指派)
可指派网络数:2的8-1次方-2=126 可指派主机数:2的24次方-2=16777214
- B类网络号最小为128.0 ,最大为191.255
可指派网络数:2的16-2次方-1=16384 可指派主机数:2的16次方-2=65534
- C类网络号最小为192.0.0,最大为223.255.255
可指派网络数:2的24-3次方=2097152 可指派主机数:2的8次方-2=254
划分子网的IPv4地址
32bit的子网掩码可以表明分类IP地址的主机号部分被借用了几个bit作为子网号
- 子网掩码使用连续的1来表示网络号和子网号
- 子网掩码使用连续的0来表示主机号
- 将划分子网的IPv4地址与对应的子网掩码进行逻辑与运算(相与)即可得到其子网的网络号
无分类编址CIDR的IPv4地址(无分类域间路由选择)
IP 地址 ::= { <网络前缀>, <主机号>}
CIDR使用“斜线记法”,即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占比特数
ps:网络号改称为网络前缀
地址块:CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”
如:128.14.35.7/20的地址块为2的12次方-2
特殊地址块:
- 前缀n=32 此IP地址用于主机路由器
- 前缀n=31 主机号为0和1 。用于点对点链路
- 前缀n=0 即0.0.0.0 用于默认路由
子网掩码:由一连串的1和0组成,而1的个数就是网络前缀个数。
表示方法:/后面的数字是子网掩码中1的个数
- 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
构成超网(路由聚合)
概念:一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合
作用:有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能
方法:找共同最长网络前缀
ps:网络前缀越长,地址块越小,路由越具体
IPv4数据报格式
组成:首部+数据
完整格式:
ps:首部的前一部分为固定字长20字节
- 版本:占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度:占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节。
- 区分服务:占 8 位,用来获得更好的服务。 在旧标准中叫做服务类型,但实际上一直未被使用过。 1998 年这个字段改名为区分服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段
- 总长度:占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU(1500字节)。
- 标识:占 16 位, 它是一个计数器,用来产生 IP 数据报的标识。
- 标志:占 3 位,目前只有前两位有意义。 标志字段的最低位是 MF (More Fragment)。 MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。 标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF = 0 时才允许分片。
- 片偏移:占13 位,指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。
- 生存时间:占8 位,记为 TTL (Time To Live), 指示数据报在网络中可通过的路由器数的最大值。路由器是在转发数据报之前把TTL值减1。
- 协议:占8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分 上交给那个处理过程
- 首部检验和:占16 位,只检验数据报的首部, 不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
- 源地址:占4字节
- 目的地址:占4字节
ps:IP 数据报在穿越因特网过程中有可能被分片。在IP数据报分片以后,通常由以下目的主机进行重组。
IPv6地址
创建目的:IPv4 的 32 位地址已经耗尽,解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP
主要变化:
- 更大的地址空间。IPv6的地址空间是IPv4的4倍(128位)
- 扩展的地址层次结构。
- 灵活的首部格式
- 改进的选项。IPv6首部固定
- 允许协议继续扩充。
- 支持即插即用。因此IPv6不需要DHCP
- 支持资源的预分配
- IPv6首部改为8字节对齐,IPv4首部是4字节对齐。IPv6组成是基本首部+有效载荷
表示方式
零压缩:即一连串连续的零可以为一对冒号所取代。
ps:在任一地址中只能使用一次零压缩
冒号十六进制记法
每个 16 位的值用十六进制值表示,各值之间用冒号分隔。
例如: 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
使用零压缩:FF05:0:0:0:0:0:0:B3 可压缩为: FF05::B3
点分十进制记法
例如:0:0:0:0:0:0:128.10.2.1 再使用零压缩即可得出: ::128.10.2.1
ps:在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0
IPv6数据报格式
组成:基本首部+有效载荷
ps:首部长度固定字长40字节
基本首部:
- 版本:4 位。它指明了协议的版本,对 IPv6 该字段总是 6
- 通信量类:8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验
- 流标号:20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量 所有属于同一个流的数据报都具有同样的流标号
- 有效载荷长度:16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。
- 下一个首:8 位。它相当于 IPv4 的协议字段或可选字段。
- 跳数限制:8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。 当跳数限制的值为零时,就要将此数据报丢弃。
- 源地址;128 位。是数据报的发送站的 IP 地址。
- 目的地址:128 位。是数据报的接收站的 IP 地址。
ps:6种扩展首部:逐跳选项、路由选择、分片、鉴别、封装安全有效载荷 、目的站选项
类型:单播、多播、任播
分类
自治系统 AS
自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由
静态路由配置
概念:是指用户或网络管理员使用路由器的相关命名给路由器人工配置路由表
产生路由环路等问题:配置错误、聚合了不存在的网络、网络故障
路由条目类型:直连网络、静态路由(人工配置)、动态路由(路由选择协议)
特殊的静态路由条目:
- 默认路由(目的网络:0.0.0.0 子网掩码:0.0.0.0)
- 特点主机路由(目的网络为特定的主机IP,子网掩码:255.255.255.255)
- 黑洞路由(下一跳为null0)
ps:静态路由人工配置方式简单,开销小,但不能及时适应网络状态的变化,一般在小规模网络中采用
内部网关协议 RIP
- RIP 是一种分布式的、基于距离向量的路由选择协议。
- RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录
三个特点
1.Who:仅和相邻路由器交换信息
2.What:交换的信息是当前本路由器所知道的全部信息,即自己的路由表
3.When:按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息
“距离”的定义
- RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1
- 直连:从一个路由器到直接连接的网络的距离定义为 1
- 非直连:从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1
ps:这里的“距离”实际上指的是“最短距离”
RIP 允许一条路径最多只能包含 15 个路由器,“距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网
ps:RIP的每个路由器不知道全网拓扑结构
基本工作过程
- 路由器刚开始工作时,只知道自己到直连网络的距离为“1”
- 每个路由器仅和相邻路由器周期性的交换并更新路由信息
- 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址(收敛)
距离向量算法
(1)先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
- 发现新网络,添加
- 到达目的网络,相同下一跳,最新消息,更新
- 到达目的网络,不同下一跳,等价负载均衡
- 到达目的网络,不同下一跳,新路由优势,更新
- 到达目的网络,不同下一跳,新路由劣势,不更新
(3)若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)
(4) 返回
位置
RIP 协议使用运输层的用户数据报 UDP进行传送(使用 UDP 的端口 520),因此 RIP 协议的位置应当在应用层。但转发 IP 数据报的过程是在网络层完成的
RIP2 报文
组成:首部+路由部分(20字节)
格式:
ps:UDP端口号:520
一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4+20*25=504 字节。如超过,必须再用一个 RIP 报文来传送。
ps:RIP2 具有简单的鉴别功能
ps:RIP 协议最大的优点就是实现简单,开销较小。主要缺点是好消息传播得快,坏消息传播得慢
内部网关协议 OSPF
基本特点
- “开放”。表明 OSPF 协议不是受某一家厂商控制,而是公开发表的
- “最短路径优先”
- 采用分布式的链路状态协议
- who:向所有路由器发送信息
- what:发送的信息是路由器的部分信息(与本路由器相邻的所有路由器的链路状态)
- when:当链路状态发送变化或每隔一段时间(如30min),路由器向所有路由器用泛洪法发生链路状态信息
ps:链路状态是指本路由器和哪些路由器相邻,以及链路要付出的“代价”(费用、距离、时延等)
链路状态数据库(LSDB)
基于LSDB进行最短路径优先SPF计算
概念:由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步))
重要优点:更新过程收敛得快
ps:每个路由器都知道全网的拓扑结构
区域
概念:为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围
ps:每一个区域都有一个 32 位的区域标识符,区域也不能太大,在一个区域内的路由器最好不超过 200 个
- 主干路由器(BBR):R3、R4、R5、R6、R7
- 区域内路由器(IR):R1、R2、R8、R9
- 区域边界路由器(ABR):R3、R4、R7(每个区域至少有一个区域边界路由器)
- 自治系统边界路由器(ASBR):R6
ps:主干区域只能有一个,非主干区域之间的通信必须通过主干区域中转才能实现
五种分组类型
1.问候 (Hello) 分组
Hello报文用于发现和维护邻站的可达性
2.数据库描述 (Database Description) 分组
DD报文通过携带LSA头部信息,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
3.链路状态请求 (Link State Request) 分组
向对方请求发生某些链路状态项目的详细信息
4.链路状态更新 (Link State Update) 分组
用洪泛法对全网更新链路状态
5.链路状态确认 (Link State Acknowledgment) 分组
对链路更新部分的确认
ps:LSU发送完整的链路状态(Link State)项目
形成路由表的三个阶段
1.邻居发现。通过Hello报文发现并建立邻居关系(相邻路由器每隔10秒交换一次Hello报文) 形成邻居表
在多点接入的网络中路由器的邻居关系建立:
- DR:指定路由器 BDR:备用的指定路由器
- 所有的非DR/BDR只与DR/BDR建立关系
- 非DR/BDR通过DR/BDR交换信息
2.LSDB数据库同步。邻接路由器之间通过LSU泛洪,通告拓扑信息 DD\LSR\LSAck作为辅助 形成整个区域统一的LSDB
3.路由计算阶段。每台路由器独立进行SPF计算 形成路由表
ps:在一个路由器上可以同时运行RIP和OSPF两种路由协议
路由优先级:Direct > OSPF > Static > RIP
外部网关协议 BGP
BGP是不同自治系统的路由器之间交换路由信息的协议 ,最多使用的协议BGP-4
ps: BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
基本工作原理
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人”
- 不同自治系统的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,端口号为:179,在此TCP连接上交换BGP报文以建立BGP会话,利用建立BGP会话交换路由信息,提供可靠的服务,也简化了路由选择协议
- BGP发言人除了运行BGP外,还必须运行自己所在自治系统内的内部网关协议IGP
- BGP 交换的网络可达性的信息(要到达某个网络所要经过的一系列 AS)
- 各 BGP 发言人根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由(并非是最佳路径)
ps:使用TCP连接互相交换报文的两个BGP发言人互相称为对方的邻站或对等站
特点
- 适用于多级结构
- 支持 CIDR。因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 节省网络带宽和减少路由器的处理开销。在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。
报文类型
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错
虚拟专用网 VPN
概念:利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网
本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请
ps:专用地址只能作为本地地址
全球地址——全球唯一的 IP 地址,必须向互联网的管理机构申请
专有(私有)地址:
- A 类:10.0.0.0 -10.255.255.255
- B 类:172.16.0.0 - 172.31.255.255
- C 类:192.168.0.0 - 192.168.255.255
网络地址转换 NAT
定义:是一种地址转换技术,能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网的主机和资源。
作用:解决IPv4地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
静态 NAT:是指 NAT 转换前的地址和 NAT 转换后的地址是一对一的对应关系,通常是一个私网地址对应一个公网地址,手动将对应信息配置到网关中。
动态 NAT:是在网关配置一个 IP 地址池( IP address pool ),地址池里面包含多个 IP 地址。在 NAT 建立会话时,在地址池内的 IP 地址按顺序分配一个转换后的 IP 地址。由于地址范围能够手动进行设置和更改,因此这种方式应用的比较多。
虽然和静态 NAT 有点类似,私有地址和公网地址是一对一的映射关系,但不是指定的 NAT 转换后地址,而是动态分配的、在 IP 地址池中排序靠前的有效地址。
NAPT:
当有大量的内网客户端要跟外网通信,而公网地址只有一个或者少量时,网关无法完成私有地址和公网地址的一对一的分配。这时,网关需要结合 TCP 或 UDP 端口号,完成多个私有地址映射成一个公网地址的转换,这种转换方式叫做 NAPT( Network Address Port Translation ,网络地址端口转换)。