- 虚拟互联网的概念
- IP地址与物理地址的关系
- 传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR
- 路由选择协议的工作方式
网络层提供的服务可以是”面向连接“的或是”无连接“的服务。
用于打电话的传统电信网使用面向连接的通信方式,它先建立连接预留出网络资源(建立一条虚电路),然后再传送信息,提供的是可靠传输的服务。
互联网采用的是无连接的方式,发送分组时不需要建立连接。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。这样使造价降低,运行灵活。
这里的 IP 是 IP 协议的第 4 个版本,实际叫做 IPv4。较新的还有 IPv6。
与 IP 协议配套的还有三个协议:
不同网络的区别很大,因为没有一种单一的网络能够适应所有用户的需求。因此需要通过一些中间设备将网络连接起来。
根据所在层次,可以将中间设备分为以下四种:
在物理层使用转发器或在数据链路层使用网桥时,仅是把一个网络扩大了。从网络层看,这还是一个网络,不是网络互连。
网络互连是在网络层通过路由器实现的。
都使用 IP 协议的网络互连以后叫虚拟互连网络,含义是这些在物理层面不同的网络在网络层看起来好像是一个统一的网络,又叫 IP 网。
现在的互联网就是使用了 IP 协议和 TCP 协议。
IP 地址及其表示方法
整个互联网就是一个单一的、抽象的网络。
IP 地址就是给互联网上每一台主机或路由器的每一个接口分配一个全世界唯一的 32 位的标识符。
IP 地址的编址方法经历了三个阶段:
分类的 IP 地址就是讲 IP 地址划分为多个固定类,每一类地址由两个固定长度的字段组成。
IP 地址 = {<网络号>,<主机号>},它既指明了主机接口,也指明了所在网络。
分类的 IP 地址分为以下 5 类:
分类是考虑到了不同网络间的差异性,有的网络主机很多,有的则很少。
现在广泛使用无分类 IP 地址进行路由选择,分类的地址已经成为历史。
IP 地址是 4 字节共 32 位字符,平常电脑上显示的是每个字节按转化为 10 进制后的结果,称为点分十进制法。
IP 地址有以下几个特点:
硬件地址(又称物理地址、MAC地址)是数据链路层和物理层使用的地址。MAC帧传送时使用的源地址和目的地址都属于硬件地址,放在 MAC 帧的首部。
IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。放在 IP 数据报的首部。
下面是三个局域网通过两个路由器连接在一起,主机 H1 要与主机 H2 通信。
路由器因为同时连在两个局域网上,所以有两个硬件地址。
注意:
网络层用的是 IP 地址,但实际网络的链路上传送数据帧时还是要用硬件地址。
当数据传到不同网络时,MAC 帧中的硬件地址还会发生改变,主机或路由器怎么知道该在 MAC 帧的首部中填入什么硬件地址呢?
ARP 协议的用途是从网络层使用的 IP 地址解析出数据链路层使用的硬件地址。
根据地址解析协议 ARP,每台主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
主机的硬件地址可能会发生改变,因此该映射表会时常更新,映射表中的每个项目都有生存时间,超过生存时间的项目会被删掉。
当主机 A 向本局域网上的主机 B 发送 IP 数据报时有两种情况:
ARP 解决的是同一个局域网上主机或路由器的 IP 地址到硬件地址的映射问题。它无法解析另一个局域网上主机的硬件地址,实际上也不用。
使用 ARP 的四种典型情况:
总的来说,当发送方与接收方不在同一个网络时,要通过同时位于两个或更多个网络上的路由器来中转,而 ARP 协议则用于每个局域网内部的地址解析。
一个 IP 数据报的首部包括两部分,前一部分是固定长度,共 20 字节。后面是一些可选字段,长度可变。
IP 数据报首部的固定部分的各字段:
IP 数据报首部的可变部分
长度可变,具有多种功能,但很少使用。IPv6 已经把这部分做成固定长度的了。
路由器的路由表中不直接存储主机地址,而是存储目的网络的地址和对应下一跳的地址。
路由表中并没有指明完整的网络路径,仅指出要想到达某个网络,需要先到哪个路由器,即仅指出下一步该怎么走。这样一跳一跳直到最后到达目的网络。
分组转发算法如下:
之前是两级 IP 地址,缺点很多。后在 IP 地址中又增加了一个子网号字段,将 IP 地址分为了三级。
划分子网是把 IP 地址的主机号再划分,未改变网络号。
子网掩码
划分子网后,IP 数据报的首部无法体现是否进行了划分。需要使用子网掩码。
现在的互联网规定所有的网络都必须使用子网掩码,路由器的路由表中也必须有子网掩码这一栏。
路由器在和相邻路由器交换信息时,必须把自己所在子网的子网掩码告诉对方。
使用子网划分后,路由表中必须包含目的网络地址、子网掩码和下一跳地址三项内容。
此时的分组转发算法如下:
无分类编址全名无分类域间路由选择 CIDR。
CIDR 有两个主要特点:
CIDR 使用 32 位的地址掩码,地址掩码中 1 的个数对应的就是前缀的长度。前缀越短,其地址块包含的地址数越多。
使用 CIDR 可以更有效地分配地址空间。
最长前缀匹配
CIDR 中,路由表的每个项目由网络前缀和下一跳地址组成,查找时可能得到不止一个匹配结果。这是从匹配结果中选择具有最长网络前缀的路由,因为它对应的地址块最小。
使用二叉线索从查找路由表
无分类编址的路由表通常存放在一个二叉线索树中。
下图的二叉线索树表示了一个有 5 个 IP 地址的路由表。树的每一层对应 IP 地址中的一位,树最多有 32 层。
给定一个 IP 地址,查找它是否在该项目表中,只需在二叉线索树中一层层对应向下寻找,若中间无法在二叉树中找到对应分支,表明这个地址不在这个二叉线索中。
网际控制报文协议 ICMP 用于更有效地转发 IP 数据报和提高交付成功的机会。
ICMP 报文装在 IP 数据报中,作为其中的数据部分。
ICMP 报文的首部共 8 个字节,具体如下图。
其中检验和字段用来检验整个 ICMP 报文。
ICMP 报文包括 ICMP 差错报告报文和 ICMP 询问报文两类,每类下细分为几种不同的类型。
表中给出了 4 种常用的 ICMP 差错报告报文:
另外 2 种常用的 ICMP 询问报文:
ICMP 差错报告报文的数据字段是固定格式的:把收到的需要进行差错报告的 IP 数据报的首部和数据字段的前 8 个字节(为了得到运输层的端口号和运输层报文的发送序号)提取出来作为 ICMP 报文的数据部分。
PING
ICMP 的一个重要应用是进行分组网间探测 PING(Packet InterNet Groper),以测试两台主机之间的连通性。
PING 使用了 ICMP 回送请求和回送回答报文。它会连续发送 4 条回送请求报文。
PING 是应用层直接使用 ICMP 的例子,未经过运输层。
使用方法:
在 Windows 的 Dos 窗口中键入 ping hostname 即可测试本机与主机 hostname 之间的连通性,hostname 应该是某个主机的 IP 地址或域名
ping www.baidu.com;//测试与百度之间的连通性
ping 192.168.100.5;//测试与 IP 地址为 192.168.100.5 的之间的连通性
tracert
tracert 可以用来跟踪一个分组从源点到终点的路径。
tracert 从源主机向目的主机发送一连串的 IP 数据报。数据报中封装的是无法交付的 UDP 用户数据报。
这些数据报中,第一个数据报的生存时间 TTL 设为 1,后面依次增长。当第 i 个数据报到达了路径上的第 i 个路由器,其 TTL 也减到了 0,此时该路由器就会发送 ICMP 时间超过差错报告报文给源主机。由此就可以获得到达目的主机所经过的所有路由器的 IP 地址,以及到达每一个路由器的往返时间。
使用方法:
在 Windows 的 Dos 窗口中键入 tracert hostname 即可测试本机到主机 hostname 所经过的路由器。
路由选择协议的核心是采用何种算法来获得路由表中的各项目。
路由选择算法可以分为静态路由选择策略和动态路由选择策略。
其中动态的可以较好地使用网络状态的变化,但实现起来较复杂,适用于大网络。互联网采用的主要是动态的、分层次的路由选择协议。
分层次的路由选择协议
互联网被划分为许多小的自治系统(AS),一个 AS 是在单一技术管理下的一组路由器,一个 AS 对另一个 AS 表现出的是一个单一的和一致的路由选择策略。目前互联网中,一个大的 ISP 就是一个 AS。也可以进一步划分。
这样互联网就把路由选择协议分为了两类:
RIP 是一种分布式的基于距离向量的路由选择协议,最大优点是简单。
RIP 协议要求每一个路由器都要维护从它自己到其他每一个目的网络的距离记录,距离的单位是跳数。RIP 选择一条具有最少路由器的路径。
RIP 允许一条路径最多有 15 个路由器,因此 RIP 只适用于小型互联网。
RIP 和 OSPF 同为分布式路由选择协议,特点是每一个路由器都要不断地和其他路由器交换路由信息。
RIP 的特点是:
路由器刚开始的路由表是空的,通过不断地和与它直接相连的路由器交换并更新信息,经过多次更新后,所有的路由表就都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址了。
路由表中最主要的信息就是到某个网络的最短距离和下一跳地址。
OSPF 是分布式的链路状态协议,适用于大型互联网。OSPF 只在链路状态发生变化时,才向本自治系统中的所有路由器用洪泛法发送与本路由器相邻的所有路由器的链路状态信息。
链路状态指明本路由器和哪些路由器相邻,以及该链路的度量(度量可表示费用、距离、时延、带宽等),所有的路由器最终都能建立一个全网的拓扑结构图。
BGP 是 BGP-4 的简写。BGP 是不同 AS 的路由器之间交换路由信息的协议,是一种路径向量路由选择协议。BGP 力求寻找一条能够到达目的网络(可达)且比较好的路由(不兜圈子),而非寻找最佳路由。
路由器的结构
两部分——路由选择部分 和 分组转发部分
路由选择部分:
控制部分,核心是路由选择处理机,路由选择处理机的作用是构造路由表,同时定期更新维护路由表路由表;
分组转发部分:
由三部分组成——输入输出端口,交换结构
交换结构的工作是将收到的分组根据路由表从输入端口转发到输出端口;
三种转发方法:
IPv4 的地址已经耗尽。
IPv6目前尚未推出标准协议。
IPv6 将协议数据单元 PDU 称为分组,而非 IP 数据报。
IPv6 的主要变化:
IPv6 数据报分为基本首部和有效载荷。有效载荷中允许有 0 个或多个扩展首部。
注意扩展首部不属于首部。
IPv6 的首部包括:
IPv6 数据报的目的地址可以是以下三种之一:
IPv6 地址有 128 位,采用冒号十六进制计法:每 16 位用 16 进制表示并用冒号隔开,因此共分为了 8 段,每段是一个不超过 4 位的 16进制数。
两种从 IPv4 向 IPv6 过渡的策略:双协议栈和隧道技术。
ICMPv6 是应用于 IPv6 的 ICMP 协议版本,比 ICMPv4 复杂很多,地址解析协议 ARP 和网际组管理协议 IGMP 的功能都合并到了 ICMPv6 中。
ICMPv6 是面向报文的协议,利用报文来报告差错、获取信息。
在一对多的通信中,多播可以比单播节省很多资源。
局域网具有硬件多播功能,所以不需要复制分组就能使所有的多播组成员收到分组。
IP 多播所传送的分组需要使用多播 IP 地址。在传统的 IP 地址中的 D 类地址就是多播地址,每个 D 类地址可以标识一个多播组。
多台主机可以加入到一个多播组中共享一个多播地址。不同网络的主机可以加入到同一个多播组中。每一台主机可以随时加入或离开一个多播组。
能够运行多播协议的路由器为多播路由器。
多播地址只能用于目的地址,不能用于源地址。
IP 多播有两种:
多播 IP 地址与以太网硬件地址之间有映射关系,但不是一一对应的。收到多播数据报的主机需要在 IP 层进行过滤。
IGMP 协议用于让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。IGMP 工作在单个本地局域网内部。
因为主机随时可能加入或退出某个多播组。并且发送多播数据报的主机可以位于多播组内,也可以不位于多播组内。所以 IP 多播很复杂。
IGMP 协议的工作内容:
多播路由选择协议
多播路由选择协议有多种,尚未进行标准化。
多播路由选择协议在转发多播数据报时有以下 3 种方法:
目前的多播路由选择协议:
因为 IP 地址的紧缺。所以现在使用了一种“本地地址”。本地地址仅在本机构内部有效,不是全球唯一的地址,又称可重用地址。
本地地址只能用于一个机构的内部通信,不能和互联网行的主机通信。互联网中的所有路由器对目的地址是专用地址的数据报一律不转发。
IPv4 标准指明了以下地址为专用地址,他们只能作为本地地址用于机构内部的通信:
采用专用地址的网络称为专用互联网或本地互联网。
有时一个机构的分布范围很广,就需要用公共的互联网作为本机构各专用网之间的通信载体,这样的称为虚拟专用网 VPN。
网络地址转换 NAT 用于实现专用网中的主机到互联网上的主机的通信。
它需要在专用网连接到互联网的路由器上安装 NAT 软件,这种路由器称为 NAT 路由器,NAT 路由器至少有一个全球地址。
使用本地地址的主机和外界通信时要在 NAT 路由器上将本地地址转换为全球地址。
NAT 路由器中有一个地址转换表,存储本地地址与转换后的全球地址的对应关系。
通过 NAT 路由器的通信必须由专用网内的主机发起,因此专用网内的主机不能作为服务器。
现在的 NAT 转换表把端口号也利用上了。这样 NAT 路由器只需要有一个全球地址,通过给具有不同本地地址的主机分配不同的端口号就可以实现内部多个主机与外界互联网的通信。