一、虚拟互联网络

  网际协议IP是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网协议。网际协议IP又称为Kahn-cerf协议,因为该协议由Robert Kahn和Vint Cerf共同开发的。两位学者在2005年获得了图灵奖!严谨的说应该是IPV4,即IP协议的第4版。

与IPV4配套使用的还有三个协议:

  • 地址解析协议ARP(address resolution protocol)
  • 网际报文控制协议ICMP(internet control message protocol)
  • 网际组管理协议IGMP(internet group management protocol)

  其中ICMP和IGMP要使用IP协议,IP协议需要使用ARP协议,所以IP在网络层中间。

  由于IP是用来使互连起来的许多计算机网络能够进行通信,因此TCP/IP体系中的网络层常常被称为网际层IP层

1.为什么需要虚拟互联网络?

  想要将全球范围的网络互联起来,并能够相互通信,会遇到很多问题:不同的寻址方案、最大分组长度、超时控制、差错恢复方法、路由选择技术、服务等,由于我们不能控制全球网络使用同种标准,同时也没有一种类型的网络可以满足所有用户的需求。

2.虚拟互联网络实现了什么?

  很多计算机网络通过一些路由器进行互联。由于参加互联的计算机网络都是用相同的IP,因此可以把互联后的计算机网络称为虚拟互联网络(或者叫逻辑互联网络):将原本用于互联的各种物理网络看作一个整体,不考虑其中的物理构造,使性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP协议的虚拟互联网络可称为IP网

3.虚拟互联网络的优势

  当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互联的各网络的具体异构细节(比如编制方案、路由选择协议),如果在IP网基础上的传输层使用TCP协议,就组成了现在的互联网。

二、IP编址

IP地址:给(即虚拟互联网络)上的每一台主机或路由器的每一个接口分配一个在全球范围内唯一的32位的标识符

  IP地址的结构使我们在互联网上很方便的寻址。IP地址现在由ICANN进行分配。IP编址经历了三个阶段:

  • 分类的IP地址:基本编址方法
  • 子网划分:基本编址方法的改进 [参见RFC950]
  • 构成超网:新型无分类编址方案,目前采用的编址方案

1.分类IP地址

  所谓的分类IP地址,就是将32位的IP地址空间分成不同的种类(A,B,C,D,E),其中A,B,C类的IP地址被作为全球单播地址,D类被作为组播地址,E类一般用于保留或者研究使用.分类IP地址的格式👇👇👇👇👇👇👇👇👇👇👇👇

分类IP地址 = 网络位 + 主机位

tips:在描述中网络位,网络地址,网络号表示同一个意思,都是指网络地址所占的位数

  其中网络位表示互联网中的网络,网络位必须在整个互联网范围内唯一。主机位标识该网络中的主机,主机位在指定的网络内必须是唯一的。所以一个IP地址在整个互联网内是唯一的。

  • 单播地址:用于一对一通信
  • 组播地址:用于一对多通信
  • 广播地址:用于一对全部通信

接下来分析下A~C类单播地址:

20200614175857

(1)为什么考虑分类IP地址?

  各种网络的差异很大,有的网络拥有很多主机,有的网络主机很少,这样分类的IP地址可以更好的满足不同用户的需求。当某个单位申请到一个IP地址时,实际上是获得了具有相同网络号的一块地址。具体的各台主机号由该单位自行分配,只要做到在该单位网络内无重复的主机号即可

(2)点分十进制

  对于主机和路由器来说,IP地址是32位的二进制数,但对于人类来说,这种二进制数可读性不高。采用了点分十进制来提高可读性,点分十进制方法是以8位为一组,分为4组。比如10000000 00001011 00000011 00011111用点分十进制表示成128.11.3.31

(3)单播分类IP地址

单播A类IP地址分析

  A类网络位为8位,主机位为24位,第一位默认为0.因为网络位可变的有7位,那么A类的网络数就是128-2,每个A类网络的主机数为2^24-2=16777214.回首掏看看为什么网络数需要减少2个:

  • A类网络位可变的7位不能为0,不然网络位就是全0,网络位全0是保留的!
  • A类网络位可变的7位全是1,那么就是0111 1111,点分十进制就是127,互联网工作组规定127这个网络地址保留作为环回测试地址

tips:保留这个词意思就是不给正常人用的.环回测试地址用于主机检测自己的TCP/IP协议栈是否正常工作,工作流程就是你ping 127这个网络地址的任何一个IP(比如 ping 127.0.0.1),就会发送一个环回测试用的IP数据报,这个数据报不会发送给任何网络,本机的协议软件会处理该数据报中的数据.

  再来看看主机数为什么也需要减少2个(其实不管是A类网络,还是B类C类,主机数都会减少2个):

  • 主机地址全为0的话,网络地址不管是多少,都表示一个网络本身
  • 主机地址全为1的话,网络地址不看,表示这个网络中的所有主机

  所以一般每个网络都是不会用这两个主机地址的,也用不了.所以A类网络拥有的总的主机数量为:A类网络数*主机数=2^31,占总体IP地址空间的50%.

  A类网络范围是从0000 0001 - 0111 1110,点分十进制就是1-126

单播B类IP地址分析

  B类网络位为16位,主机位为16位,第一位和第二位固定为10.因为网络位可变的有16-2,所以B类网络数就是214-1,每个B类网络的主机数为216-2,看看B类网络为什么不是减2,或者为什么减1了:

  • B类网络的128.0.0.0是不指派的
  • B类网络因为10固定了,所以就算可变位全0也不会导致网络地址全0

  A类地址主机位为什么减少2个的原因已经讲过了,这里同理.B类网络范围是从1000 0000 0000 0000 - 1011 1111 1111 1111,点分十进制就是128-191所以整个B类地址为2^30,占IP地址总体的25%

单播C类IP地址分析

  C类网络位为24位,主机位为8位,第一到三位固定为110.因为网络位可变的有24-3,所以C类网络数就是221-1=2097151,每个C类网络的主机数为28-2=254,为什么这里C类网络又减1:

  • C类网络的192.0.0.0网络是不指派的

  A类地址主机位为什么减少2个的原因已经讲过了,这里同理.C类网络范围是从1100 0000 0000 0000 - 1101 1111 1111 1111,点分十进制就是192-223所以整个C类地址为2^29,占IP地址总体的12.5%

2.子网划分

早期的分类IP地址设计不够合理的方面:

  IP地址空间的利用率有时很低,比如有的公司需求的主机数恰好多出C类地址的一两个,这样只能申请一个B类地址,使得IP资源被大量浪费。如果你说申请两个C类地址不就行了,那你可能没有理解分类IP地址,如果申请了两个C类地址,那么这个公司的网络就会被分成两个网络.

  我们想想,A类到C类的网络数,如果每一个物理网络分配一个网络号会使路由表变得太大因而降低网络性能。这不仅增加了路由器的成本,而且使查找路由时耗费更多的时间,路由器的性能下降导致整个网络性能出现下降

  之前的分类IP地址不够灵活。如果一个公司需要在新的省份马上开通一个新的网络,但是在申请到一个新的IP地址之前,新增加的网络是不可能连接到互联网上工作的。所以我们希望有一种方法灵活的增加本单位的网络,不必事先到互联网管理机构去申请新的网络号,原来的两级IP地址无法做到这一点。

  为了解决上述问题,划分子网(也叫子网寻址子网路由选择)[RFC950]在两级IP地址中新增了一个子网号字段,使其升级为三级IP地址,能够较好的解决上述问题,也增加了灵活性。

划分子网基本思路:

  • 一个拥有许多物理网络的公司,可将所属的物理网络划分成若干个子网(subnet)。划分子网属于一个公司内部的事情。公司以外的网络看不见这个网络是由多少个子网组成,因为这个公司对外仍表现为一个网络。
  • 划分子网的方法就是从网络的主机号借用若干位作为子网号,于是两级IP地址升级成了三级IP地址。
  • 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,在按目的网络号和子网号找到目的子网,把IP数据包交付目的主机。

三级IP地址结构:👇👇

IP地址 = 网络号 + 子网号 + 主机号

20200614191632

  现在,内部将其划分为3个子网,分别是145.13.3.0、145.13.7.0、145.13.21.0。但是对外仍表现为一个B类网络145.13.0.0,R1收到外部发来的数据报后,再根据数据报的目的地址把它转发到相应的子网上。那么R1是怎样区分子网的呢?

  从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网划分。这是因为32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息。所以我们增加了一个子网掩码来让R1识别子网。

20200614192136

  由上图得,两级IP地址的主机位,贡献了一部分位给子网位,这样两级IP地址就会成为三级IP地址.一个公司在给新的省份开设网络时,只需要在自己原有的两级IP地址所划分的网络上继续划分更小的子网给该省份即可,不需要再向互联网管理机构去申请.同时需要注意的是,子网只是该公司自己内部可以识别的,如何识别就需要用到子网掩码,子网掩码来将子网位和主类网络进行区分(准确的说是公司的路由器将收到的IP数据报中的目的IP地址与子网掩码相与得到子网地址).现如今就算不划分子网,也会使用子网掩码,因为子网掩码已经成为网络的标准.如果不划分子网则使用默认的子网掩码,比如:

  • A类默认子网掩码为255.0.0.0
  • B类默认子网掩码为255.255.0.0
  • C类默认子网掩码为255.255.255.0

  子网掩码是由连续的1组成,中间不能出现0,比如1111 1111 1111 1111 1111 1111 1111 1111,点分十进制就是255.255.255.255.比如错误子网掩码1111 1111 1111 1111 1111 1111 1011 1111,记住连续的1,可以是这样1111 1111 1111 1111 1111 1111 0000 0000,点分十进制就是255.255.255.0

  看个示例:如果你的网络是172.16.10.0,使用默认子网掩码255.255.0.0,但是现在需要划分子网,你需要一个子网内主机数在800台,那么可以这样划分子网.也就是主机数2x ≥ 800,所以最合适的是10,也就是主机位为10位,那么按IP地址32位来推,网络位就是22位,但是原本使用的默认子网掩码为16位,所以有6位是子网位,也就是子网掩码从255.255.0.0通过划分子网增长子网掩码到22位,255.255.252.0.因为6位是子网位,所以172.16.10.0/16可以划分为26个子网,并且每个子网的主机数为1024个.

3.构成超网

  我们知道,尽管划分子网在一定程度上缓解了IP地址耗尽的问题,但是并不是最终的解决方案,到上世纪90年代,需要面临三个问题:

  • B类地址将要分配完
  • 路由器中的路由表项激增
  • IPV4地址空间加速被耗尽

  当然第三个问题是需要研发IPV6来解决的,所以CIDR解决了前面两个问题.CIDR(读作sider)是无分类编址方案,其实在[RFC 1009]就指明了一个划分子网的网络中可以同时使用几个不同的子网掩码。使用变长子网掩码VLSM可以进一步提高IP地址的利用率。在VLSM的基础上又进一步研究出了CIDR技术

CIDR主要特点:

  • CIDR消除了传统的A类、B类、C类地址以及划分子网的概念,因此提高了分配IPV4的地址空间,并且在新的IPV6使用前允许互联网的规模继续增长,CIDR把32bit的IP地址划分为前后两个部分:网络前缀(network-prefix)和主机位,网络前缀用来指明网络,主机位用来指明主机。因此CIDR使用IP地址从三级编址回到了两级编址,但这是无分类的两级编址。
  • CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块“,我们只要知道CIDR地址块中的任何一个地址,就能知道这个地址块的最小地址和最大地址,以及地址块中的地址数。
CIDR记法:192.168.1.0/24

  例如128.14.35.7/20某CIDR地址块中的一个地址,二进制就是10000000 00001110 00100011 00000111/20,最小地址为128.14.32.0,最大地址为128.14.47.255

  主机号全0和全1的地址,一般不使用。通常只用在两者之间的地址。该地址块拥有2^12个地址。我们可以用地址块中最小的地址和网络前缀的位数来指明该地址块,比如128.14.32.0/20。

  为了更方便的进行路由选择,CIDR使用32位的地址掩码,地址掩码由一连串1和一连串0组成,而1的个数就是网络前缀的长度。虽然CIDR不使用子网,但由于目前仍有一些网络使用子网划分和子网掩码,因此CIDR使用的地址掩码也可以成为子网掩码。值得注意的是“CIDR不使用子网”是指CIDR并没有在32位地址中指明若干位作为子网字段。但分配到一个CIDR地址块的单位,仍然可以在本单位根据需要划分出子网。这些子网也都只有一个网络前缀和一台主机号字段,但子网的网络前缀比整个单位的网络前缀要长。例如某单位分配到了地址块/20,就可以继续划分为8个子网,这时子网的网络前缀就是23位,比该单位的网络前缀多了3位。

(1)CIDR和VLSM区别

  CIDR和VLSM的小区别就是CIDR将几个主类网络合成一个大的网络,而VLSM将一个主类网络划分成几个子网,CIDR将子网掩码左移,VLSM将子网掩码右移

(2)CIDR汇总与路由汇总的区别

路由汇总有类的概念,汇总后的掩码长度必须大于主类网络的掩码长度,而CIDR是无类域间路由,只要网络地址一致就可以进行CIDR汇总

举例:192.168.0.0/24 - 192.168.3.0/24

  • CIDR汇总:192.168.0.0/22
  • 路由汇总:因为22<24,所以不能进行路由汇总

(3)最长掩码匹配

  在使用CIDR时,由于采用了网络前缀的这种记法,IP地址由网络前缀和主机位构成。因此在路由表中的项目也要有相应的改变。这时,每个项目由“网络前缀”和“下一跳地址”组成。但是在查找路由表时可能得到不止一个匹配结果。路由器会从匹配结果中选择具有最长网络前缀的路由。这叫做最长前缀匹配,这是因为网络前缀越长,其地址块就越小,因而路由就越具体。

三、IP地址与MAC地址

tips:以下主机,路由器是同义词

  从OSI七层模型上看,MAC地址是数据链路层使用的地址,IP地址是网络层和网络层以上使用的地址,是一种逻辑地址.两者貌似不存在联系.

  从数据报来看,数据从应用层到网络层,到数据链路层,再到通信链路上传输。使用IP地址的IP数据报从网络层交给数据链路层就会被封装成MAC帧,MAC帧在传送时使用的源地址和目的地址都是MAC地址,MAC地址写在帧的头部中.连接在通信链路上的设备收到帧时,根据帧头部的MAC地址,决定收下还是丢弃.收下剥离数据链路层头部给网络层后,在头部中找到源IP地址和目的IP地址.总结就是IP地址放在IP数据报的头部,MAC地址放在帧的头部.

20200614195448
上面这样图能很好的描述IP地址和MAC地址的关系:

  1. 在IP层抽象的互联网只能看到IP数据报,虽然IP数据报要经过路由器R1和R2的两次转发,但在它的首部中的源地址和目的地址始终分别是IP1和IP2。
  2. 虽然在IP数据报首部有源IP地址,但路由器只根据目的IP地址的网络进行路由选择
  3. 在局域网的链路层,只能看见MAC帧
  4. 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一、抽象的IP地址研究主机和主机或路由器之间的通信

《网际协议IP 下,当前占位》


保持一个积极向上的良好心态,分享网络技术!