计算机网络基础知识笔记(三)

无分类编址CIDR(Classless Inter-Domain Routing,构造超网)

背景:在1992年因特网仍然面临三个必须尽早解决的问题,这就是:B类地址在1992年已分配了近一半,眼看就要在1994年3月全部分配完毕!因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。 整个 IPv4 的地址空间最终将全部耗尽。

1987年,RFC1009就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码VLSM(Variable Length Subnet Mask)可进一步提高IP地址资源的利用率。在VLSM的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。

特点:CIDR消除了传统的A,B,C类地址以及划分子网的概念。CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。IP 地址从三级编址(使用子网掩码)又回到了两级编址。

  无分类的两级编址/  IP地址 ::= {<网络前缀>, <主机号>}

1)CIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即在 IP 地址后面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。

2)CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。

路由聚合(route aggregation) 

一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。

路由聚合也称为构成超网(supernetting)。 CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。 对于 /20 地址块,它的掩码是 20 个连续的 1。

斜线记法中的数字就是掩码中1的个数。

  CIDR 记法的其他形式

10.0.0.0/10 可简写为 10/10,也就是将点分十进制中低位连续的 0 省略。

10.0.0.0/10 相当于指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0,即 11111111 11000000 00000000 00000000

网络前缀的后面加一个星号 * 的表示方法 如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。

  构成超网

前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。

这些 C 类地址合起来就构成了超网。 CIDR 地址块中的地址数一定是 2 的整数次幂。

网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。

  CIDR地址划分举例

这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。

  最长前缀匹配

使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。

应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。最长前缀匹配又称为最长匹配或最佳匹配。

   最长前缀匹配举例

后记:CIDR的使用已经推迟了IP地址将要耗尽的日期。

  使用二叉线索查找路由表(用5个前缀构成的二叉线索)

  网际控制报文协议(Internet Control Message Protocol,ICMP)

为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。

ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP不是高层协议,而是 IP 层的协议。ICMP 报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

  ICMP报文格式:

ICMP 报文的种类有两种,即 ICMP 差错报告报文 ICMP 询问报文。 ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。

   ICMP 差错报告报文共有 5 种

终点不可达

源点抑制(Source quench)

时间超过

参数问题

改变路由(重定向)(Redirect)

   ICMP 差错报告报文的数据字段的内容

  不应发送 ICMP 差错报告报文 的几种情况

对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。

对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。

对具有多播地址的数据报都不发送 ICMP 差错报告报文。

对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

 ICMP的应用举例 PING (Packet InterNet Groper)

PING 用来测试两个主机之间的连通性。

PING 使用了 ICMP 回送请求与回送回答报文。

PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

 因特网的路由选择协议(路由表中的路由是怎样得出的)

有关路由选择协议的几个基本概念:

1. 理想的路由算法

算法必须是正确的和完整的。

算法在计算上应简单。

算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。

算法应具有稳定性。

算法应是公平的。

算法应是最佳的。

2.  分层次的路由选择协议

因特网采用分层次的路由选择协议。 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。

  因特网有两大类路由选择协议

内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。

外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是BGP-4。

 自治系统和 内部网关协议、外部网关协议

  内部网关协议 RIP (Routing Information Protocol)

从一路由器到直接连接的网络的距离定义为 1。

从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。

RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。

这里的“距离”实际上指的是“最短距离”。

RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。

RIP 允许一条路径最多只能包含 15 个路由器。 “距离”的最大值为16 时即相当于不可达。

可见 RIP 只适用于小型互联网。 RIP 不能在两个网络之间同时使用多条路由。

RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

  RIP 协议的三个要点

仅和相邻路由器交换信息。

交换的信息是当前本路由器所知道的全部信息,即自己的路由表。

按固定的时间间隔交换路由信息,例如,每隔30秒。

  路由表的建立

路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。 RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。

  距离向量算法

收到相邻路由器(其地址为 X)的一个 RIP 报文:

(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。

(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤: 若项目中的目的网络不在路由表中,则把该项目加到路由表中。 否则 若下一跳字段给出的路由器地址是同样的,则把收到的项 目 替换原路由表中的项目。 否则 若收到项目中的距离小于路由表中的距离,则进行更新, 否则,什么也不做。

(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。

(4) 返回。

  RIP 协议的优缺点

RIP存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。

RIP 协议最大的优点就是实现简单,开销较小

RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。

路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

  内部网关协议 OSPF (Open Shortest Path First)

1. OSPF 协议的基本特点

“开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。

“最短路径优先”是因为使用了Dijkstra 提出的最短路径算法SPF OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。 是分布式的链路状态协议。

  路由器在网际互连中的作用

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。

“转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。

“路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。 路由表是根据路由选择算法得出的。

而转发表是从路由表得出的。 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。

   IP 多播

参考:IP多播技术及其应用

  网际组管理协议 IGMP

第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器。

第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。

IGMP 采用的一些具体措施 

在主机和多播路由器之间的所有通信都是使用 IP 多播。 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次。 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。

在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送。 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。

  虚拟专用网 VPN 和网络地址转换 NAT

本地地址—仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。

全球地址—全球唯一的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

这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。

专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。

由部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网(intranet),表示部门 A 和 B 都是在同一个机构的内部。

一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网(extranet)。

网络地址转换 NAT(Network Address Translation)

需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球地址 IPG。

所有使用本地地址的主机在和外界通信时都要在 NAT 路由器上将其本地地址转换成 IPG 才能和因特网连接。

  网络地址转换的过程

内部主机 X 用本地地址 IPX 和因特网上主机 Y 通信所发送的数据报必须经过 NAT 路由器。 NAT 路由器将数据报的源地址 IPX 转换成全球地址 IPG,但目的地址 IPY 保持不变,然后发送到因特网。

NAT 路由器收到主机 Y 发回的数据报时,知道数据报中的源地址是 IPY 而目的地址是 IPG。

根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPX,转发给最终的内部主机 X。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JavaEdge

计算机网络之数据链路层1 链路层概述4 交换局域网5 交换机(switch)

63870
来自专栏用户画像

路由协议

OSPF是基于链路状态的自治系统内部路由协议,链路状态路由协议使用dijkstra的最短路径优先算法计算和选择路由。这类路由协议关心网络中链路和接口的状态(UP...

8420
来自专栏土豆的专栏

计算机网络概述

ps: internet(互联网或者互连网)是一个通用名词,泛指多个计算机网络互连而成的网络,在这些网络之间的通信协议可以是任意的;Internet(因特网)则...

671130
来自专栏Vamei实验室

协议森林07 傀儡 (UDP协议)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 我们已经讲解了物理层、连接层和网络层。最开始的连接层协议种...

23860
来自专栏Java进阶架构师

【网络协议】专题总结以及网络协议高频面试题汇总(8篇)

初次接触,可能对所谓三次握手四次挥手理解过于抽象?没关系,来看动态图版本的文章,让你从抽象到具象:

36720
来自专栏程序猿

OSI与TCP/IP各层的结构与功能,都有哪些协议

在实际的开发中,网络编程占据很大一部分。从基本的应用与服务之间的数据传输,到性能优化;在从那些代理应用,路由跟踪,到匿名网络。无不应用到网络中的...

42550
来自专栏大内老A

WCF中的Binding模型之一: Binding模型简介

一、 信道层与服务模型层(Channel Layer and Service Mode Layer) 对于一个分布式应用的开发与设计来说,通信问题是不得不考虑,...

18250
来自专栏网络

TCP/IP四层模型讲解笔记整理通俗易懂版

OSI七层模型和TCP/IP四层模型,以前总觉得这些纯理论层面的东西对实战没有什么意义,现在回头看看还是非常有意义的,不过放在当时我也懒得学这么枯燥的东西。 接...

286100
来自专栏大内老A

WCF中的Binding模型之一: Binding模型简介

一、 信道层与服务模型层(Channel Layer and Service Mode Layer) 对于一个分布式应用的开发与设计来说,通信问题是不得不考虑,...

19370
来自专栏Golang语言社区

TCP/IP通信架构

1 .计算机网络的体系结构 计算机网络是一个非常复杂的系统,将整个网络的传输功能进行分层设计的网络结构层次模型及各层协议的集合称为计算机网络的体系结构。为了解决...

34450

扫码关注云+社区

领取腾讯云代金券