网络层:为主机之间提供逻辑通信
- 传统的电信网使用面向连接的通信方式和昂贵的程控交换机提供可靠传输服务。
- 因为计算机(端系统)具有强大的差错处理能力,所以互联网使用简单灵活的、无连接的、尽最大努力交付的数据报服务,而让运输层在计算机上完成差错处理。路由器因此设计简单、价格低廉。
网际协议IP:
- IP服务模型为尽力而为交付服务(best-effort delivery service),即不可靠服务
- IP协议常使用ARP协议,而ICMP和IGMP协议常使用IP协议。
- 虚拟互连网络:
- 中间设备:
- 物理层:转发器。
- 数据链路层:网桥/桥接器。
- 网络层:路由器。
- 网络层以上:网关。
- 由转发器或网桥连接在一起的设备属于同一个网络。路由器负责网络间的互连。
- 使用IP协议的网络连接在一起,形成虚拟互联网络。所谓虚拟互连网络,即其中的各种物理网络的异构性客观存在,但是利用IP协议就可以使这些性能各异的网络在网络层上看起来像是一个统一的网络。
- 转发方式:主机先查自己的转发表(本网络),若有则直接交付,没有则发送给路由器。
- 中间设备:
- IP地址:
- 为互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内唯一的标识符。
- 编址方式:
- 分类的IP地址(1981):
-
分类方法:
-
指派范围和特殊IP地址:
-
点分十进制记法:8位一个十进制数,用‘.’分隔。
-
优点:
- 管理机构只分配网络号,而主机号由该网络的单位自行分配。
- 路由器仅根据目的主机的网络号转发分组,大大减小了路由表。
-
多归属主机:连接在多个网络上,从而必须拥有多个IP地址的主机(如路由器)。
-
每一个网络拥有一个网络号。
-
两路由器直连时,中间的线路可以不分配IP地址,称为“无编号网络”或“无名网络”。
-
缺点:
- IP地址空间利用率有时低下。
- 给每一个物理网络分配一个网络号会使路由表过大。
- 两级IP地址不够灵活。
-
- 划分子网(1985):
- 采用三级IP地址(网络号,子网号,主机号)。
- 划分子网址是将主机号再划分,并不改变网络号。
- 子网对于网络外部是透明的。
- 外部路由使用网络号将分组转发到该网络路由器,该网络路由器再使用子网号将其转发到相应的子网。
- 子网的网络地址是网络号 + 子网号 + 全零。
- 子网掩码(subnet mask):子网划分的依据。IP地址与子网掩码成对出现。路由表中的每一个项目需包含子网掩码。查路由表时,将目的IP地址与某一项的子网掩码做与运算,并将结果与该项的网络号对比。
- 子网号不能为全1或全0(除非使用CIDR)。
- 划分子网增加了灵活性,但减少了能够连接在网络上的主机总数。
- 构成超网(1993):
- IP地址不再分为ABC类。
- IP地址结构:(网络前缀,主机号)。
- 斜线记法:点分十进制/前缀位数。
- 网络前缀相同的连续IP地址为一个“CIDR地址块”。
- 为了横向兼容,CIDR继续使用子网掩码。
- 分配到一个CIDR地址块的单位仍然可以继续“划分子网”,这些“子网”的网络前缀一定比原前缀长。
- 路由聚合(route aggregation)/构成超网(supernetting):基本上每一个CIDR地址块都包含多个ABC类地址,在路由表中以CIDR地址
块为整体转发,大大地减少了路由表表项。 - 最长前缀匹配:路由项为(网络前缀,下一跳地址)。出现多项匹配时,选取前缀最长的一项。
- 优点:刚有效的分配地址空间,减小路由表的规模。
- 分类的IP地址(1981):
- 网络层及以上使用IP地址,数据链路层及以下使用MAC地址。
- 地址解析协议ARP(可归为数据链路层):
- IP地址→MAC地址。
- 每台主机有一个ARP高速缓存,存放本局域网上的各主机和路由器的地址映射,每一个映射都有生存时间。
- 表中查无此项时:
- ARP进程在本局域网上广播一个ARP请求分组。内容为:我的IP地址…我的MAC地址…我想知道IP地址是…的主机的硬件地址。
- 本局域网上的所有主机的ARP进程都收到该ARP请求分组,并更新自己的高速缓存。IP地址一致时就收下该分组,并发送ARP响应分组,包含自己的MAC地址。
- 主机收到响应分组后就更新高速缓存。
- IP数据报格式:
- 首部长度:单位为32位字。常用20字节,最多60字节,不是4的倍数需填充。
- 总长度:单位字节,是首部 + 数据的总长度。不能超过数据链路层的MTU,过长需分片。
- 标识(identification):IP软件维持一个计数器,每发送一个数据报计数器就加1,使得每个数据报拥有不同的标识号。当数据报过长需要分片时,就将该数据报的标识写入所有分片,保证最后能合并成一个完整的数据报。(网络层负责分片和拼接,数据链路层负责按片传输。)
- 标志(flag):最低位MF = 1表示后面还有分片。中间位 = 1表示不能分片。
- 片偏移:记录该分片在原分组中的相对位置。以8字节为单位,因此分片的长度必须是8的倍数。
- 生存时间TTL:跳数限制,路由器每转发一次就减一。防止无法交付的数据报无限制兜圈。最大255。
- 协议:指出数据部分使用的协议。
- 首部检验和:将首部按16位划分并以二进制求和取反并写入该字段。每经过一个路由器需重新计算。路由器检验时将首部按16位划分并以二进制求和取反,结果为0则无误。
- 可变部分:IPv6不使用。
- IP层转发分组流程:
- 路由表:由(目的网络地址,下一条地址)组成。
- 特定主机路由:给特定的主机制定特定的路由。
- 默认路由:当一个网络只有很少的对外连接时使用。
- 找到下一跳路由器的IP地址后,并不修改IP首部(IP首部的地址永远不变),而是将其交给数据链路层的网络接口软件,该软件将IP地址转换成MAC地址后再放入链路层的帧首部。
- 具体流程:
- 网际控制报文协议ICMP:
- ICMP报文装载在IP数据报的数据中发送。
- ICMP报文格式:
- 检验和:检验首部+数据(因为IP首部检验和并不检验数据)。
- ICMP报文类型:
- 终点不可达:路由器或主机不能交付数据报时就回复。
- 时间超过:路由器收到生存时间为零的数据报时,或者终点在预先规定的时间内不能收到整个数据报,就将已收到的数据报片丢弃,并回复。
- 参数问题:路由器或主机收到数据报首部中有错误字段时就回复。
- 改变路由(重定向):由路由器发送给主机,要求主机修改路由表。(由于路由器只跟路由器交换路由信息,而不跟主机交换路由信息,所以当主机绕远路时,最佳路由应由路由器通过ICMP报文告知主机)
- 何时发送ICMP重定向报文:
- 数据包进入路由器的接口与数据包被路由出的接口是同一个接口。
- 源 IP 地址的子网或网络与被路由的数据包的下一跳 IP 地址处于同一个子网或网络上。
- 数据报不是源路由的。
- 内核被配置为发送重定向。
- 不发送ICMP差错报文的特殊情况:
- ICMP报文出错时;
- 第一个分片的数据报片的所有后续分片;
- 具有多播地址或特殊地址的数据报。
- 应用:
- 分组网间探测PING(Packet InterNet Groper):
- 用来测试两台主机间的连通性。
- 是应用层直接使用ICMP的例子,其并没有使用TCP或UDP。
- 分组网间探测PING(Packet InterNet Groper):
路由选择协议:
- 分为静态路由选择和动态路由选择,目前基本上均为动态(自适应)路由选择。
- 将整个互联网划分为许多自制系统(Autonomous System),简称AS。一个大的ISP就是一个AS。AS内部路由器使用单一技术管理。
- 两大类:内部网关协议IGP(进行域内路由选择)和外部网关协议EGP(进行域间路由选择)。
内部网关协议
- 路由信息协议RIP(Routing Information Protocol):
- 分布式(路由器之间不断交换信息)、基于距离向量、简单。
- 距离(跳数)定义:从路由器到直连网路的距离为1,从路由器到非直连网络的距离为经过的路由器数加1。
- 一条路径最长为15跳(RIP只适合小型互联网)。
- RIP总是选择跳数最少的路径。
- 路由信息交换原则:
- 仅和相邻路由器交换。
- 交换的信息是当前本路由器所知道的全部信息,即整个路由表。
- 按固定的时间间隔交换路由信息。
- 路由表信息包括:到某个网络的最短距离,以及应经过的下一跳地址。
- RIP协议可以收敛(自治系统中所有的结点都得到正确的路由选择信息)。
- 距离向量算法:
- RIP报文格式:
- 使用IP和UDP。
- 路由标记填入自治系统号ASN,以辨别是系统内部的信息还是外部的信息。
- 问题:当网络出现故障时,要经过较长时间才能将次消息传给所有路由器。即“好消息传播的快,坏消息传播的慢”。
- 开放最短路径优先OSPF(Open Shortest Path First):
- 使用Dijkstra提出的最短路径算法SPF。
- 不使用UDP,而是直接使用IP数据报传送。
- 分布式、基于链路状态。
- 自治系统再向下划分多个区域,每个区域有一个32位点分十进制表示的区域号。
- 为了使每一个区域能与本区域以外的网络进行通信,OSPF使用层次结构的区域划分。上层区域为主干区域(区域号0.0.0.0),用来连同下层的区域。
- 路由信息交换原则:
- 向本区域里的所有路由器洪泛信息。
- 发送的信息是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量)。
- 只有当链路状态发生变化时,路由器才洪泛信息。
- 最终所有的路由器都建立一个链路状态数据库,即本区域的拓扑结构图。
- 优点:更新过程收敛的快,适用于大规模网络。
- OSPF报文格式:
- 类型:OSPF分组有5种类型。
- 问候分组:发现和维持邻站的可达性。
- 数据库描述分组:向邻站给出自己所有链路状态项目的摘要信息。
- 链路状态请求分组:向对方请求某项链路状态项目的详细信息。
- 链路状态更新分组:向全网洪泛并更新。
- 链路状态确认分组:对链路更新分组的确认。
- 类型:OSPF分组有5种类型。
- 允许给路径加权值。
- 如果同一目的网络有多个相同代价的路径,则将通信量平摊,称为多路径间的负载平衡。
- 支持子网划分和CIDR。
- 因为网络中的链路状态经常变化,所以让每一个链路状态带上一个32位的序号,序号越大表示状态越新。序号最短每5s增长一次。
- 两个同步的路由器叫做完全邻接的。
- 当某个路由器的链路状态发生变化时,该路由器需使用链路状态更新分组,用可靠的洪泛法(首次收到回复确认报文)使本区域所有路由器更新链路状态。