第四章 网络层
4.1 网络层提供的两种服务
网络层关注的是如何将分组从源端沿着网络路径送达目的端。在计算机领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起长期的争论。争论的实质就是:在计算机通信中,可靠交付应当有谁来负责?是由网络还是端系统?
**两种服务:**网络层应该向运输层提供怎样的服务?
- 虚电路服务
- 数据报服务
虚电路服务
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照设定的方式传送,而不是建立了一条物理连接。注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
如果虚电路断掉了就没有办法通信。
数据报服务
网络层向上一层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。当前互联网使用的就是数据报服务。
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
尽最大努力交付的的好处:
-
由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较);
-
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主
机中的运输层负责(包括差错处理、流量控制等); -
采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用;
因特网能够发展到近日的规模,充分证明了当初采用这种设计思路的正确性。
两种服务比较
4.2 网际协议 IP
虚拟互联网
网络互联设备
中间设备又称为中间系统或中继(ralay)系统。
- 物理层中继系统:转发器(repeater)——集线器;
- 数据链路层中继系统:网桥或交换机(bridge);
- 网络层中继系统:路由器(router)——目前网关指的就是路由器;
- 网络层以上中继系统:网关(gateway)——目前使用很少了。
- 中继系统是转发器或者网桥时,一般并不称之为网络互联,因为这仅仅是将一个网络扩大了,而这仍然是一个网络;
- 网关由于比较负载,目前使用得较少;
- 互联网都是指路由器进行互联的网络;
- 由于历史原因,许多有有关 TCP/IP 的文献将网络层使用的路由器称为网关。
网络互联的问题
互联在一起的网络要进行通信,会遇到许多问题需要解决,如:
- 不同的寻址方案;
- 不同的最大分组长度;
- 不同的网路接入机制;
- 不同的超时控制;
- 不同的差错恢复方法;
- 不同的状态报告方法;
- 不同的路由选择技术;
- 不同的用户接入技术;
- 不同的服务(面向连接的服务和无连接服务);
- 不同的管理与控制方式。
互联网络和虚拟连接网络
所谓的虚拟互联网络也就是逻辑互联网络,它的意思就是互联起来的各种捂脸网络的异构性本来就是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
使用 IP 协议的虚拟互联网络可简称为 IP 网。使用虚拟互联网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互联的各个具体的网络异构细节。
如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络中传送。
IP 协议简介
网际协议 IP 是 TCP/IP 体系中两个主要的协议之一。与 IP 协议配套使用的还有四个协议:
- 地址接卸协议 APR(Address Resolution Protocol);
- 逆地址解析协议RARP(Reverse Address Resolution Protocol)——现在不用这个协议了;
- 网际控制报文协议 ICMP(Internet Control Message Protocol);
- 网际组管理协议 IGMP(Internet Group Management Protocol)。
IP 地址
IP 地址及其表示方法
我们把整个英特网看成为一个单一的,抽象的网络。IP 地址就是给每一个接在因特网上的主机(或路由器)的每一个接口分配一个在世界范围是唯一的 32 位的标识符。
IP 地址现在由因特网名字与号码指派公司 ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
IP地址的编址方法:
- 分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议;
- 子网的划分。这是对最基本的编址方法的改进,器标准 [RFC 950] 在 1985 年通过;
- 构成超网。这是比较新的无分类编址。1993 年提出后很快就得到推广应用。
IP地址层次结构
IP 地址分类
IP地址中的网络号字段和主机号字段
常用的三种类别 IP 地址
127.0.0.1 不属于A类地址,这个地址表示主机的IP;
特殊的 IP 地址
IP | 用途 |
---|---|
127.0.0.1 | 本地环回地址 |
169.254.0.0 | 假如当在 DHCP 服务器有问题不能分配 IP 时, 计算机会给自己分配一个该网段的 IP 地址 |
10.0.0.0 172.16.0.0 - 172.31.0.0 192.168.0.0 - 192.168.255.0 | 保留的私网地址 |
IP 地址的一些重要特性
IP 地址是一种分等级的地址结构。分两个等级的好处是:
- 第一,IP 地址的管理机构在分配 IP 地址是只分配网络号,而剩下的主机号则有得到该网络号的单位自行分配。这样就方便了 IP 地址的管理;
- 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅减小,从而减小了路由表所占用的存储空间。
实际上 IP 地址是标志一个主机(或路由器)和一条链路接口。
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host);
- 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另外一个网络),因此,一个路由器至少应当有两个不同的 IP 地址。
用转发器或者网桥连起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大的地理范围的广域网,都是平等的。
划分子网和构造超网
子网掩码
- 子网掩码很重要,配置错误会造成计算机通信故障;
- 计算机和其他计算通信时,首先断定目标和自己是否在一个网段,先用自己的子网掩码和自己的 IP 地址进行与运算得到自己所属的网段,再用自己的子网掩码和目标地址进行与运算计算出目标地址所属网段;
- 如果不在同一个网段则使用网关的 MAC 地址封装数据帧,这会将数据帧转发给路由器即网关。如果相同则直接使用目标的 MAC 地址封装数据帧,直接把数据帧发给目标IP地址。
- A类网络缺省子网掩码:255.0.0.0
- B类网络缺省子网掩码:255.255.0.0
- C类网络缺省子网掩码:255.255.255.0
- 主机号不能为全0,0表示的是网段;
- 主机号不能全为1,全1表示广播地址。
子网划分示例
子网的划分遵循除2的原则,不能随意划分,比如两百台设备150台在一个网段,50台在另外一个网段,这个是不行的。
- 将 192.168.0.0 255.255.255.0 这个C类地址划分为两个网段
子网掩码为 255.255.255.128
IP 地址的范围分别为:
-
192.168.0.1 - 192.168.0.126
-
192.168.0.129 - 192.168.0.254
-
将 192.168.0.0/24 这个 C 类网段划分 4 个独立的网段
子网掩码为 255.255.255.192
IP地址范围为:
- 192.168.0.1 - 192.168.0.62
- 192.168.0.65 - 192.168.0.126
- 192.168.0.129 - 192.168.0.190
- 192.168.0.193 - 192.168.0.254
-
将 192.168.0.0/24 这个 C 类网段划分 8 个独立的网段
子网掩码为 255.255.255.224
IP 地址范围:
- 192.168.0.1 - 192.168.0.30
- 192.168.0.33 - 192.168.0.62
- 192.168.0.65 - 192.168.0.94
- 192.168.0.97 - 192.168.0.126
- 192.168.0.129 - 192.168.0.158
- 192.168.0.161 - 192.168.0.190
- 192.168.0.193 - 192.168.0.222
- 192.168.0.225 - 192.168.0.254
路由聚合和超网
一个 CIDR 地址块可以表示很多地址吗,这种地址聚合长称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。路由聚合也成为构成超网(suppernetting)。
超网就是将不同网段的地址合并到同一个网段。
问题:在以下这种情况下,A 计算机到 B 计算机通信。必须通过路由器转发,如图所示。这样两个子网能够通信,本来这些计算机物理上在一个网段,还需要路由器转发,效率不高。
可以使用超网将两个网段的地址合并到同一个网段。
如图所示,将 192.168.0.0 和 192.168.1.0 两个C类网络合并。将 IP 地址第 3 个字节和 4 字节写成二进制,可以看到将子网掩码往左移动 1 位,即子网掩码为 255.255.254,网络部分就一样了,这两个网段就合并到了一个网段。
合并网络的规律总结:
在合并网络时需要注意,不要将其他不需要的网络也合并进来,也就是说,并不是所有网络都可以合并到一起的。
IP 地址和 MAC 硬件地址
计算机 A 和计算机 B 通信的过程:
在上图中可以看出:
- 交换机基于数据帧的 MAC 地址转发数据帧,路由器基于数据报的 IP 地址转发数据报;
- 数据包在传输过程不变,过网络设备数据帧要用新的物理层地址重新封装;
- MAC 地址决定了数据帧下一跳哪个设备接收,而 IP 地址决定了数据包的起点和终点。
ARP 和 RARP 协议
什么是ARP 和 RARP 协议
ARP 协议是将 IP 地址解析为 MAC 地址,采取广播的方式。
RARP协议是为 MAC 地址请求一个 IP地址。
ARP 欺骗
由于 ARP 协议采取的是广播的方式,所以会带来很多问题,比如 ARP 欺骗,当一个计算机以广播的方式获取目标计算的 MAC 地址时,此时黑客软件将自己的 MAC 地址响应源计算机,那么下次源计算机和目标计算机通信时就会将数据报给黑客软件所在的电脑,然后黑客软件再把数据转发给目标计算机,这就是 ARP 欺骗。
终端常见命令
ARP -a
,查看计算机获取到的 MAC 地址
ARP -s IP地址 变更后的MAC地址
,修改 MAC 地址
如果修改的网关的 MAC 地址就没法访问外网了
IP数据报格式
一个 IP 数据报有首部和数据两个部分组成。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的;
- 在首部的固定部分的后面是一些可选字段,其长度是可变的,最大40字节。
IP 数据报
-
版本:占 4 位,指的是 IP 协议的版本,目前主要的 IP 协议版本号为 4 (即 IPv4);
-
首部:占 4 位,指的是首部的长度,可表示的最大数值是 15 个单位(一个单位 4 个字节),因此 IP 的首部长度最大是60字节;
-
区分服务:占 8 位,指定数据报发送的优先级,需要在路由器上设置对应的发送优先级区分服务才有效,否则区分服务不起作用(一般情况下都不使用)。有些路由器里区分服务为 QoS 服务质量;
-
总长度:占 16 位,指的是首部长度和数据部分长度之和,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元 MTU;
-
标识(identification):占 16 位,它是一个计数器,用来产生数据报的标识,不是序号,每产生一个数据包,就增加1,最大65535后变为0;
-
标志(flag):占 3 位,目前只有 前两位有意义。标志字段的最低位是 MF(More Fragment)。MF = 1 标识后面还有分片。MF =0 表示最后一个分片。标志字段中间的一位是 DF(Don`t Fragment)。只有当DF = 0 时才允许分片。
-
片偏移:占 13 位,较长的分组在分片后某片在原分组中的相对位置、片偏移以8个字节为偏移单位;
-
生存时间(TTL):占 8 位,TIME To Live,数据报在网络中可通过的路由数的最大值,如果该值为 0 还没到达目标地址,那么该数据将会被丢弃。如果没有该值,那么数据包可能一直存在于网络中;
-
协议:占 8 位,指的是数据报携带的数据使用何种协议,一遍目的主机的 IP 层将数据上交给哪个处理过程;
-
首部检验和:占 16 位,只检验数据报首部,不检验数据部分。这里不是采用的CRC检验而采用简单的计算方法;
- 源地址:占 32 位,源 IP 地址;
- 目的地址:占 32 位,目的 IP 地址;
- 可变部分:IP 首部的可变部分就是一个选项字段,用来支持拍错,测量以及安全措施,内容丰富。选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也是得 IP 数据报的首部长度变为可变的。这就增加了每一个路由器处理数据的开销。实际上这些选项很少被使用。
IP 转发分组的流程
什么是路由
数据路由:路由器在不同网段转发数据包。
网络畅通的条件:能去能回。
- 发送:沿途的路由器必须知道到目标网络下一跳给哪个接口;
- 接收:沿途的路由器必须知道到源网络下一跳给哪个接口;
示例:如图所示,
- 计算机 PC0 ping PC1,网络要想通,要求沿途的路由器 Router0、Router1、Router2和Router3 都必须有到 192.168.1.0/24网段的路由,这样数据包才能到达 PC1;
- PC1 要回应数据包给 PC0,沿途所有的路由器必须有到 192.168.0.0/24 网络的路由,这样书包才能回来。
Windows 路由表
-
route print
,查看 Windows 的路由表
默认的路由就是网关,如果删掉就上不了英特网了
-
route add 192.168.1.0 mask 255.255.255.0 192.168.250.1
,增加路由
-
route delete 192.168.1.0
,删除路由
route ?
查看命令帮助
配置和验证网络均衡
网路中的路由器和计算
机配置好了IP,如图。192.168.0.0/24网段和192.168.3.0/24网段有两条线路①和②,需要给网络中的路由器添加路由表,使得这两个网段能够通过①和②两条路径通信,只要求这两个网段的计算机能够通信即可。
4.3 网际控制报文协议 ICMP
什么是 ICMP
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告;
- ICMP 不是高层协议,而是 IP 层的协议;
- ICMP报文作为 IP 层数据报的数据部分,加上 IP 数据报的首部,组成 IP 数据报发送出去。
ICMP 报文格式
-
类型:有两种,即 ICMP 差错报告报文和 ICMP 询问报文;
ICMP 报文种类 类型值 ICMP 报文类型 差错报告报文 3 终点不可达 4 源点抑制 11 超时 12 参数问题 5 改变路由 询问报文 8/0 (Echo)请求/应答 13/14 时间戳(TimeStamp)请求/应答 -
代码:差错报告报文中会有10代码;
差错报告报文的数据字段内容
- 被 ping 对象收到数据后会将数据字段去掉,只保留 IP 数据报首部和后八个字节,然后在加上 ICMP 的前 8 个字节和 IP 的首部,将这个数据包返回。
4.4 因特网的路由选择协议
RIP 协议
什么是 RIP 协议
路由信息协议 RIP(Routing Information Protocol)是基于距离矢量算法的路由协议,利用跳数来作为计量标准。在带宽、配置和管理方面要求较低,主要适合于规模较小的网络中。
工作原理
-
路由建立
路由器运行RIP后,会首先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应;网络稳定后,路由器会周期性发送路由更新信息。
-
距离矢量的计算
RIP度量的单位是跳数,其单位是1,也就是规定每一条链路的成本为1,而不考虑链路的实际带宽、时延等因素,RIP最多允许15跳。RIP利用度量来表示它和所有已知目的地间的距离。
当一个RIP更新报文到达时,接收方路由器和自己的RIP路由表中的每一项进行比较,并按照距离矢量路由算法对自己的RIP路由表进行修正。
-
定时器
周期更新定时器:用来激发RIP路由器路由表的更新,每个RIP节点只有一个更新定时器,设为30s。每隔30s 路由器会向其邻居广播自己的路由表信息。每个RIP路由器的定时器都独立于网络中其他路由器,因此它们同时广播的可能性很小。
超时定时器:用来判定某条路由是否可用。每条路由有一个超时定时器,设为180s。当一条路由激活或更新时,该定时器初始化,如果在180s之内没有收到关于那条路由的更新,则将该路由置为无效。
清除定时器:用来判定是否清除一条路由。每条路由有一个清除定时器,设为120s。当路由器认识到某条路由无效时,就初始化一个清除定时器,如果在120s内还没收到这条路由的更新,就从路由表中将该路由删除。延迟定时器:为避免触发更新引起广播风暴而设置的一个随机的延迟定时器,延迟时间为1~5s。
-
环路
当网络发生故障时,RIP网络有可能产生路由环路。可以通过水平分割、毒性反转、触发更新、抑制时间等技术来避免环路的产生。
缺点
-
由于 15 跳为最大值,RIP只能应用于小规模网络;
-
收敛速度慢;
-
根据跳数选择的路由,不一定是最优路由,比如跳数少,但带宽低这种情况下就不属于最优路由。
OSPF 协议
什么是 OSPF 协议
开放式最短路径优先([Open Shortest Path First](https://baike.baidu.com/item/Open Shortest Path First/2991528?fromModule=lemma_inlink),OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。
OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法;
- 发送的信息就是与本路由器相邻的所有的路由器的链路状态,但这只是路由器所知道的部分信息;
- 只有当链路状态发生变化时,路由器采用洪泛法向所有的路由器发送信息。
工作原理
-
初始化形成端口初始信息:在路由器初始化或网络结构发生变化(如链路发生变化,路由器新增或损坏)时,相关路由器会产生链路状态广播数据包LSA,该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。
-
路由器间通过泛洪(Flooding)机制交换链路状态信息:各路由器一方面将其LSA数据包传送给所有与其相邻的OSPF路由器,另一方面接收其相邻的OSPF路由器传来的LSA数据包,根据其更新自己的数据库。
-
形成稳定的区域拓扑结构数据库:OSPF路由协议通过泛洪法逐渐收敛,形成该区域拓扑结构的数据库,这时所有的路由器均保留了该数据库的一个副本。
-
形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表。
OSPF 分组
OSPF协议依靠五种不同类型的分组来建立邻接关系和交换路由信息,即问候分组、数据库描述分组、链路状态请求分组、链路状态更新分组和链路状态确认分组。
-
问候(Hello)分组
OSPF使用Hello分组建立和维护邻接关系。在一个路由器能够给其他路由器分发它的邻居信息前,必须先问候它的邻居们。
-
数据库描述(Data base Description,DBD)分组
DBD分组不包含完整的“链路状态数据库”信息,只包含数据库中每个条目的概要。当一个路由器首次连入网络,或者刚刚从故障中恢复时,它需要完整的“链路状态数据库”信息。此时,该路由器首先通过hello分组与邻居们建立双向通信关系,然后将会收到每个邻居反馈的DBD分组。新连入的这个路由器会检查所有概要,然后发送一个或多个链路状态请求分组,取回完整的条目信息。
-
链路状态请求(Link State Request,LSR)分组
LSR分组用来请求邻居发送其链路状态数据库中某些条目的详细信息。当一个路由器与邻居交换了数据库描述分组后,如果发现它的链路状态数据库缺少某些条目或某些条目已过期,就使用LSR分组来取得邻居链路状态数据库中较新的部分。
-
链路状态更新(Link State Update,LSU)分组
LSU分组被用来应答链路状态请求分组,也可以在链路状态发生变化时实现洪泛(flooding)。在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用LSU,用洪泛法向全网更新链路状态。
-
链路状态确认(Link State Acknowledgment,LSAck)分组
LSAck分组被用来应答链路状态更新分组,对其进行确认,从而使得链路状态更新分组采用的洪泛法变得可靠。
特点
- OSPF 不用 UDP 而是直接用 IP 数据报传送;
- OSPF 对不同的链路可根据 IP 分组的不同服务类型而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由;
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径的负载平衡;
- 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能;
- 支持可变长度的子网掩码和无分类编址 CIDR;
- 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
优点
-
OSPF适合在大范围的网络:OSPF协议当中对于路由的跳数,它是没有限制的,所以OSPF协议能用在许多场合,同时也支持更加广泛的网络规模。只要是在组播的网络中,OSPF协议能够支持数十台路由器一起运作。
-
组播触发式更新:OSPF协议在收敛完成后,会以触发方式发送拓扑变化的信息给其他路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成影响。
-
收敛速度快:如果网络结构出现改变,OSPF协议的系统会以最快的速度发出新的报文,从而使新的拓扑情况很快扩散到整个网络;而且,OSPF采用周期较短的HELLO报文来维护邻居状态。
-
以开销作为度量值:OSPF协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF选路主要基于带宽因素。
-
OSPF协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。
(6)应用广泛:广泛的应用在互联网上,其他会有大量的应用实例。证明这是使用最广泛的 IGP 之一。
- 使用的度量值是带宽;
- 使用触发式更新;
- 支持多区域;
缺点
-
OSPF 协议的配置对于技术水平要求很高,配置比较复杂的。因为网络会根据具体的参数,给整个网络划分区域或者标注某个属性,所以各种情况都会非常复杂,这就要求网络分析员对 OSPF 协议的配置要相当了解,不但要求具有普通的网络知识技术,还要有更深层的技术理解,只有具备这样的人员,才能完成 OSPF 协议的配置和日常维护。
-
路由其自身的负载分担能力是很低的。OSPF 路由协议会根据几个主要的因素,生成优先级不同的接口。然而在同一个区域内,路由协议只会通过优先级最高的那个接口。只要是接口优先级低于最高优先级,那么路由就不会通过。在这个基础上,不同等级的路由,无法相互承担负载,只能独自运行。
BGP 协议
什么是 BGP 协议
BGP(Border Gateway Protocol)边界网关协议,是不同自治系统的路由器之间交换路由信息的协议,BGP 较新版本是 BGP-4。
BGP 边界网关协议只是力求寻找一条能过达到目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由。每一个自治系统的管理员要选择至少一个路由器作为该自制系统的“ BGP 发言人”。
BGP 发言人和自治系统 AS 的关系
一个 BGP 发言人与其他自治系统中的 BGP 发言人交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
-
使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。
-
使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。
BGP 所交换的网络可达性的信息就是要达到某个网络所要经过的一系列 AS。当BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。
特点
- BGP 协议交换路由信息数量不是很多;
- BGP 发言人数目不多,路由选择相对简单;
- BGP 协议支持 CIDR;
- BGP 建立时,交换整个路由表信息后只交换变化部分。
4.5 IP 多播
定义
因特网是个公用的网络,连接全世界的各个大学、公司、非盈利组织、个人和政府机关。随着现在宽带的发展,诸如远程教学、视频会议、网络游戏等新兴的因特网应用越来越受欢迎,而且有时变得很必需。这些应用涉及到点对点或者多点对多点的通信,与传统的单播或者广播有很大的不同。
1988年,Deering提出了IP多播的概念,从此IP多播技术得到了广泛的关注。多播介于单播通信和广播通信之间,它可以将发送者发送的数据包发送给位于分散在不同子网中的一组接收者。
IP 多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。多播作为一点对多点的通信,是节省网络带宽的有效方法之一。在网络音频/视频广播的应用中,当需要将一个节点的信号传送到多个节点时,无论是采用重复点对点通信方式,还是采用广播方式,都会严重浪费网络带宽,只有多播才是最好的选择。多播能使一个或多个多播源只把数据包发送给特定的多播组,而只有加入该多播组的主机才能接收到数据包。目前,IP多播技术被广泛应用在网络音频/视频广播、AOD、网络视频会议、多媒体远程教育、“push”技术(如股票行情等)和虚拟现实游戏等方面。
有些应用会有这样的要求:一些分布在各处的进程需要以组的方式协同工作,组中的进程通常要给其他所有的成员发送消息。即有这样的一种方法能够给一些明确定义的组发送消息,这些组的成员数量虽然很多,但是与整个网络规模相比却很小。给这样一个组发送消息称为多点点播送,简称多播。
多播的基础概念是“组”。一个多播组(multicast group)就是一组希望接收特定数据流的接收者。这个组没有物理或者地理的边界:组内的主机可以位于互联网或者专用网络的任何地方。多播组中的每~个节点被称为多播组成员(multicastgroupmember)。
IP 多播地址和多播组
IP多播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类。其中,局部链接多播地址范围在224.0.0.0 - 224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;预留多播地址为224.0.1.0 - 238.255.255.255,可用于全球范围(如Internet)或网络协议;管理权限多播地址为239.0.0.0 - 239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。
使用同一个IP多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。一个多播组的成员是随时变动的,一台主机可以随时加入或离开多播组,多播组成员的数目和所在的地理位置也不受限制,一台主机也可以属于几个多播组。此外,不属于某一个多播组的主机也可以向该多播组发送数据包。
IP 多播技术的硬件支持
要实现 IP 多播通信,要求介于多播源和接收者之间的路由器、集线器、交换机以及主机均需支持 IP 多播。目前,IP多播技术已得到硬件、软件厂商的广泛支持。
应用
在多播的诸多应用中,均可实现单播,但是随着接收者的增多,需要发送的数据包里线性增长,对于多个接收者,需要发送同一个数据包的n份拷贝,这样通信量就会成倍的增加,也会占用网络的许多带宽,有时会引起网络堵塞。但是多播通信IP数据包仅发送一次。路由器会自动的转发到位于不同网段上的每一个接收者,可以使在网络中传输的报文拷贝的数量最小。所以多播是很有必要的。
多播通信模型的一个关键的特性是提供了间接标识的多播组,其中发送方和接收方都不需要知道对方的具体情况。发送方只需要向一个多播地址发送分组而接收方只需要告诉网络自己希望接收发送这个地址的分组。
用户的数据要从一个终端发送到另一个终端,首先要确定传输路由,不同的通信方式,其确定路由的方式也不同。如今网络的通信方式主要有以下几种:
- 单播(unicast:point to point),点到点的通信方式;
- 多播(multicast:point tO multipoint),点到多点的通信方式;
- 汇播(concast:multipoint to point),多点到一点的通信方式;
- 群播(multipoint tO multipoint),多点到多点的通信方式,多播的一种推广;
- 广播(broadcast:point to all point),点到所有节点的通信方式。
一般要求多播服务的业务对带宽和实时性要求较高,涉及用户较多,占用的资源也多,因此有必要优化多播路由。多播路由算法就是要寻求最优多播树,理想有效的路由算法将设计一棵仅覆盖多播组成员的树,并体现如下特征:树随着组成员变化动态更新;最小化节点需要保存的状态信息量;避免链路和节点的流量集中;根据费用函数优化路由。
IGMP 协议
主机 IP 软件需要进行组播扩展,才能使主机能够在本地网络上收发组播分组。但仅靠这一点是不够的,因为跨越多个网络的组播转发必须依赖于路由器。路由器为建立组播转发路由必需了解每个组员在Internet中的分布,这要求主机必须能将其所在的组播组通知给本地路由器,这也是建立组播转发路由的基础。主机与本地路由器之间使用Internet组管理协议(IGMP,Internet Group Management Protocol)来进行组播组成员信息的交互。IGMP是TCP/IP中重要标准之一,所有IP组播系统(包括主机和路由器)都需要支持IGMP协议。
组播协议包括组成员管理协议和组播路由协议。组成员管理协议用于管理组播组成员的加入和离开,组播路由协议负责在路由器之间交互信息来建立组播树。IGMP属于前者,是组播路由器用来维护组播组成员信息的协议,运行于主机和和组播路由器之间。IGMP 信息封装在IP报文中,其IP的协议号为2。
若一个主机想要接收发送到一个特定组的组播数据包,它需要监听发往那个特定组的所有数据包。为解决Internet上组播数据包的路径选择,主机需通过通知其子网上的组播路由器来加入或离开一个组,组播中采用IGMP来完成这一任务。这样,组播路由器就可以知道网络上组播组的成员,并由此决定是否向它们的网络转发组播数据包。当一个组播路由器收到一个组播分组时,它检查数据包的组播目的地址,仅当接口上有那个组的成员时才向其转发。
IGMP提供了在转发组播数据包到目的地的最后阶段所需的信息,实现如下双向的功能:
- 主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息。
- 路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护。
IGMP共有三个版本,即IGMP v1、v2 和 v3。
4.6 虚拟专用 VPN
虚拟私有网络(Virtural Private Network)可以通过特殊的加密通讯协议连接在 Internert 上的位于不同地方的两个或多个企业内部网之间建立一条专有的通信线路,器核心就是在利用公共网络建立虚私有网络。
拨号连接后,VPN 服务器会给连接的计算机分配一个私网的 IP 地址,和被连接的局域网在一个网段中,相当于拨号的计算机加入到了被连接的局域网中;
拨号连接时,公网是不传送私网地址的数据包的,为了解决这个问题会加入源的公网地址和目标的公网地址,将私网的地址作为数据部分在公网传输。
私有地址:
10.0.0.0 到 10.255.255.255
172.16.0.0 到 172.31.255.255
192.168.0.0 到 192.168.255.255
用隧道技术实现虚拟专用网
4.7 网络地址转换 NAT
网络地址转换过程
-
内部主机 X 用本地地址 I P X IP_X IPX 和因特网上主机 Y 通信所发送的数据必须经过 NAT 路由器;
-
NAT 路由器将数据报的源地址 I P X IP_X IPX 转换为全球地址 I P G IP_G IPG,但目的地址 I P Y IP_Y IPY 保持不变,然后发送到因特网;
-
NAT 路由器收到主机 Y 发挥的数据报时,知道数据报中的源地址是 I P Y IP_Y IPY 而目的地址是 I P G IP_G IPG;
-
根据 NAT 转换表,NAT 路由器将目的地址 I P G IP_G IPG 转换为 I P X IP_X IPX 转发给最终的内部主机 X。
NAT – Network Address Translation;
NAT 转换时会将源端口也会替换掉,这样就避免了两个本地主机使用相同端口的情况;
内网主机可以主动出去访问外网主机,但是外网不能主动访问内网;
可以通过端口映射的方法让外网的主机访问内网的主机。