计算机网络——网络层(2)
IPv6
- 从根源上解决了IPv4地址耗尽的问题。
- 特点:
- IPv4的32位增大到了128位,共16字节
- IPv6不允许分片,只有在包的源结点才能分片,是端到端的
- 扩展阅读:闲谈IPv6-尴尬的IPv4。大意是解析IPv4的痛点,精华部分理解:
- 原本的arp协议其实是没有使用IP协议进行封包,导致每一种链路层都需要一个arp协议。使用IPv6后,arp的功能由ICMPv6来替代,是使用IP承载的;
- IPv6自动完成:电脑接入网络后,网口按照规则生成一个链路本地地址,使用此地址和本链路的其他节点通信;
- IPv6不再需要NAT;
- 原来IPv4的分类地址使美国占据大量A类地址,IPv6使得地区分布更加均匀;
IPv4 | IPv6 | |
---|---|---|
同一链路的通信 | 必须使用DHCP或者手工指定同一网段的IP地址 | 可以直接使用自动配置的链路本地地址 |
同一机构内通信 | 人工配置IP地址,如果使用全局的公网地址,时刻注意着不能有地址冲突。 | 使用本地唯一地址 |
互联网通信 | 需要在出口路由器或者防火墙上配置多条策略,防止私有地址的外泄。 | 私有的链路本地地址和机构地址跑不出出口路由器 |
关于私有地址 | 针对ABC类的每一类地址都有一个私有段,私有段不连续。私有段和地址分类有交集,必须显式进行区分 | 直接针对限域来规定是否私有,私有段连续。可以直接解析地址本身得到地址的限域 |
IPv6的地址结构
- 推荐阅读:IPv6数据报头部格式
- 目的地址:
- 单播:
- 多播:一个交给多个
- 任播:一个交给多个中的某一个
- 地址表示法:(紧凑型)每4位用一个十六进制数表示,并且用冒号分隔,例,4B5F:AA12:0216:FEBC:BA5F:039A:BE9A:2170(8部分×4个×进制代表的4位=128位);以及为0时的::省略办法。
- 首部40B,地址长度16B
- 分级概念:
- 顶级:指明全球都知道的公共拓扑;
- 二级:指明单个场点;
- 三级:指明单个的网络接口。
- IPv6要能够向后兼容;
- 两种协议的选择问题上,可以采用双协议栈和隧道技术两种策略:
- 双协议栈:一部分主机或路由器装有两个协议栈,来回切换;
- 隧道技术:将整个IPv6数据报封装到IPv4数据报的数据部分,这样使得IPV6的数据报能载IPv4网络的隧道中传输。
IGP、EGP
- 有关概念可以参考上一篇博客:计算机网络——网络层(1)的层次路由段。简单来说,IGP是域内的内部使用路由协议,主要有RIP协议和OSPF协议;EGP是域间使用的外部网关协议,如BGP-4等。
RIP路由信息协议
- RIP:Routing Information Protocol,是根据最少跳数进行路径选择的协议。使用距离向量路由算法。
- 规定:
- 每个路由器都要维护它自己到其他每一个目的网络的距离记录(即跳数);
- RIP允许一条路径最多只能包含15跳,距离等于16时被视为不可达;
- 默认在任意两个使用RIP协议的路由器之间每30秒(固定时间间隔)广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护,仅发生在相邻路由器,而且交换的是全部信息);
- 不支持子网掩码的RIP广播,所以每个网络的子网掩码必须相同。但在新的RIP2中,支持变长子网掩码和CIDR。
- 一般,第一次广播后,每一路由器知道自己相邻路由器的路由表信息;第二次广播后,就知道了距离自己2跳的路由表信息;若干次后,在一个小型互联网中,所有路由器就知道了整个IP网络的路由表,称为RIP协议最终是收敛的。收敛之后,每个路由器到每个目标网络的路由都是距离最短的。
- 优点:实现简单,开销小,收敛过程快;
- 缺点:
- RIP限制了网络的规模;
- 路由器之间交换的是完整的路由表,因此网络规模越大,开销也越大;
- 当出现网络故障时,会出现慢收敛现象(即需要较长时间才能将此消息传送到所有路由器),称为“好消息传得快,坏消息传的慢”,使更新过程的收敛时间长。
- RIP是应用层协议,它在传输层使用UDP传送数据。
OSPF开放最短路径优先协议
- 使用分布式链路状态路由算法。
- 与RIP对比的区别:
- 向所有路由器发送部分信息(只有本路由相邻的所有路由器的链路状态而已,并非整个路由表);
- 只有当链路状态发生变化时,才会使用洪泛法发送消息,而RIP是定期发送;
- OSPF是网络层协议,不使用UDP或TCP而是直接IP数据报发送。
- 更多特点:
- 可对于不同类型的业务灵活计算出不同的路由(根据IP分组的不同服务类型将链路设置为不同的代价);
- 如果同一个目的网络有多条相同代价的路径,可使用负载均衡分配给这几条路径;
- 路由器之间交换的分组具有鉴别功能,可以保证只在可信赖的路由器之间交换信息;
- 支持可变长度的子网划分和CIDR;
- 每一个链路状态都带上一个32位的序号,序号越大,状态就越新;
- 30分钟刷新一次数据库中的链路状态。
- OSPF原理:交换链路状态信息后,建立一个全网的拓扑结构图,使用Dijkstra最短路径算法计算自己到各网络最短路径,以及构建自己的路由表。(路由表不会存储完整路径,只会存储下一跳去哪)。
- OSPF应用在规模很大的网络时,会将一个自治系统划分为若干个更小的范围(区域),使用洪泛法时,交换信息的范围局限在区域内,而不是整个网络拓扑。这些区域也有层次之分,上层的叫主干区域,负责连通下层的区域和其他自治域。 连接主干区域和其他下层区域的路由器称为区域边界路由器。主干区域中的路由器都叫主干路由器。
- OSPF的五种分组类型
- 问候分组:检测可达性,通常10秒一次;
- 数据库描述分组:向邻站发送自己的链路状态数据库中的摘要信息;
- 链路状态请求分组:向对方请求某些链路的信息;
- 链路状态更新分组,使用洪泛法对全网更新链路状态;
- 链路状态确认分组:对链路更新分组的确认。
BGP边界网关协议
- BGP,Border Gateway Protocol。是一种外部网关协议。
- 扩展阅读:BGP协议基本原理
- BGP是自治系统外部路由协议,用来在AS之间传递路由信息;
- 路径矢量路由协议,从设计上避免了环路的发生;
- 支持CIDR和路由聚合;
- 只发送增量路由更新。在建立邻居关系后,路由器会将自己的全部路由信息告知邻居,此后如果路由表发生了变化,只将增量/更新部分发送给邻居。
- 路由表包括:
- 已知路由器的列表;
- 路由器能够达到的地址
- 每个路由器的路径的跳数
- BGP是应用层协议,基于TCP的。
- BGP发言者(BGP Speaker):发送BGP消息的路由器称为BGP发言者,它接收或者产生新的路由信息,并发布给其他BGP发言者。
- 使用四种报文:
- 打开报文:与相邻的发言人建立关系
- 更新报文:发送更新信息
- 保活报文:确认打开报文、周期性确认邻站关系
- 通知报文:用来发送检测到的错误
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换结点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 和本结点相邻的路由器 |
交换内容 | 当前本路由器知道的全部信息 | 与本路由器相邻的所有路由器的链路状态 | 首次发整个路由表,非首次发有变化的部分 |
IP组播
- 组播机制:让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干台目标主机,并被它们正确接收。是应用于UDP的(因为TCP是一对一的)。
- 流程:源主机把单个分组发送给一个组播地址(标识一组地址),网络将分组给该组播地址内每一台主机投递一份拷贝。
- 在IP组播中,组播地址在D类地址空间进行分配(IPv6中也有一部分地址空间交给了组播组)。
- 主机可以选择加入或离开一个组,一台主机可以属于多个组。主机使用IGMP(因特网组管理协议)的协议加入组播组。它们使用该协议通知在本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。
- IP组播地址:使用D类地址格式作为目的地址(不可作为组播组的源地址),每一个D类IP地址标志一个组播组。范围是224.0.0.0~239.255.255.255(并不是所有D类地址)。
- 对组播数据报不产生ICMP差错报文,因此ping不通。
- IP组播分为两类,只在本局域网上进行硬件组播,在因特网范围内进行组播:
- 在因特网上进行组播的最后阶段,仍要把组播数据报放在局域网上用硬件组播交付给组播组的所有成员。
- IANA拥有的以太网组播地址范围是:01-00-5E-00-00-00到01-00-5E-7F-FF-FF。只有23位可作为组播。D类IP地址可供分配的也只有23位。1110+空5位+23位=32位IP地址。举例:224.215.145.231映射到组播MAC地址: 01-00-5E-57-91-E6(后23位是87.145.231,转化为16进制就是57-91-E6)。
移动IP
- 移动IP技术:移动结点以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。是为了满足移动结点在移动时保持连接性而设计的。举例:出差到外地,也能使用公司内网或者共享的资料。
- 移动IP技术使漫游的主机可以用多种方式连接到因特网,移动IP的核心网络功能仍然是基于在固定互联网中一直在使用的各种路由选择协议。移动IP技术不同于移动自组网络(此处不做延伸)。
- 关键技术:代理搜索(判断自己是否处于漫游状态);转交地址(移动节点来到外网时从外代理处得到的临时地址);登录(移动节点到达外网时进行一系列认证、注册、建立隧道的过程);隧道(家代理与外代理之间临时建立的双向数据通道)。
- 通信流程:
- 移动结点在本地网时,按传统的TCP/IP方式进行通信;
- 漫游到外地网络时,仍使用固定IP通信。为了能够收到通信端发给它的IP分组,移动结点需要向本地代理注册当前的位置地址(即转交地址);
- 本地代理收到转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给移动结点的IP分组通过隧道送到转交地址处;
- 在转交地址处解除隧道封装,恢复原始的IP分组,最后送到移动结点,这样移动结点就收到了这些发给它的IP分组;
- 移动结点在外网通过外网的路由器或者外代理向通信对端发送IP数据包;
- 当移动结点来到另一个外网时,向本地代理更新注册的转交地址;
- 当移动结点回到本地网时,向本地代理注销转交地址,恢复TCP/IP的方式进行通信。
网络层设备——路由器
- 任务:连接不同的网络(连接异构网络)并完成路由转发(1.路由计算;2.分组转发)。在多个逻辑网络(即多个广播域)互联时必须使用路由器。
- 路由器具有两个部分:分组转发部分(输入端口、输出端口、交换开关)和控制部分(路由处理器,任务是选择出路由表,并定期更新维护路由表)。
- 路由器是面向协议的,能够完成不同线路、不同协议之间转换。网桥不行。
- 路由表具有四个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口。
- 转发表由路由表得出:目的站、下一跳的MAC地址。
- 路由表总是由软件实现,转发表可以用软件,可以用特殊的硬件实现。