cloudsmiles

屠龙勇士终被恶龙吞噬

  • 主页
  • 随笔
所有文章 关于我

cloudsmiles

屠龙勇士终被恶龙吞噬

  • 主页
  • 随笔

IP初全认识

2018-05-04

最近在通读《TCP/IP详解 卷一》,对于计算机网络有了新的认识,而且大学的时候也没好好弄懂个中的原理,趁着这个机会重新整理所学。这本书可以称作教科书之典范,内容从网络的起源到现在广泛使用的技术,从表面的精炼解释到本质的运作,不论从事计算机何个职业,我觉得也应该拜访一下这本书,因为网络是计算机的发展必不可缺的,等同于人类需要交流协作才形成了世界,甚至是更远的未来。



1. IP地址结构

Internet中使用的网络层地址,又称为IP地址。IP地址我们都很熟悉, 它是用于定位整个Internet系统中的设备,所以一台设备连接到全球性的Internet时,为它们分配地址需要协调,这样就不会重复使用网络中的其他地址。而通常个人用户是由 ISP 分配地址,通过支付费用来获取地址。

IP地址分为IPv4和IPv6(本文只针对广泛应用的IPv4作说明,以下IP专有名词也默认指代IPv4)。IP地址由32位二进制数组成,它也可以用点分四组方式,用四个十进制数来表示,如下图所示:

点分四组表示 二进制表示
1.2.3.4 00000001 00000010 00000011 00000100
10.0.0.255 00001010 00000000 00000000 11111111

大部分的IP地址用于识别连接Internet或某些专用内联网的计算机网络接口,这些地址被称为单播地址。除了单播地址之外,其他类型的地址包括广播,组播和任播地址,它们可能涉及到多个接口,代表多个地址。

2. 分类寻址

最初定义Internet地址结构的时,每个单播IP地址都有一个网络部分,用于识别哪个网络,以及一个主机地址,用于识别该网络下的特定主机。

- -
网络位(x) 主机位 (32-x)

由于实际使用中,不同的网络需要不同数量的主机,而每台主机需要唯一的IP地址,所以就根据不同大小的IP地址空间划分成不同的类,以适应不同的网络和站点,如下图所示:

类 高序位 网络号位 主机号位 地址范围 用途
A 0 8 24 0.0.0.0 ~ 127.255.255.255 单播/特殊
B 10 16 16 128.0.0.0 ~ 191.255.255.255 单播/特殊
C 110 24 8 192.0.0.0 ~ 223.255.255.255 单播/特殊
D 1110 0 0 224.0.0.0 ~ 239.255.255.255 组播
E 1111 0 0 240.0.0.0 ~ 255.255.255.255 保留

比如C类的网络,因为主机号位是8,最多只能分配256台主机,但是网络位有24位,有超过200万的C类网络号可以使用。同理一个站点分配了一个A类网络号 18.0.0.0,其中有2^24个地址分配给主机,(范围 18.0.0.0 ~ 18.255.255.255),但整个网络只有127个A类地址,所以A类地址尤为短缺。

3. 子网寻址

Internet发展初期遇到了一个困难,就是很难为接入的新网段分配一个新的网络号,而且随着局域网(LAN)的增加,这个问题更为棘手,所以人们自然而然地想更加好的利用原来分配的网络号的主机地址空间,由站点人员进行进一步划分子网。

- - -
网络位 (x) 子网位 (y) 主机位 (32-x-y)

子网的概念只是相对一个站点自身而言,Internet的其他部分还是只看到网络号,所以本质上来说,子网寻为IP地址结构增加了一个额外部分,但它没有为地址增加长度。

3.1 子网掩码

子网掩码是由一台主机或路由器使用的分配位,如何以确定如何从一台主机对应IP地址中获得网络和子网信息。子网掩码也是以IPv4地址相同的方式(即点分十进制)编写。

名称 二进制 点分四组
地址 10000000 00100000 00000001 00001110 128.32.1.14
掩码 11111111 11111111 11111111 00000000 255.255.255.0(/24)
结果 10000000 00100000 00000001 00000000 128.32.1.0

如上图所示,如果一个主机IP地址是 128.32.1.14,子网掩码是 255.255.255.0 ,两个地址进行按位与操作,得到 128.32.1.0/24 前缀(网络/子网标识符,后面数字代表前缀长度),也确定了主机所在的子网。所以子网掩码是用来解决一个站点内部的子网识别问题。

3.2 广播地址

在每个IPv4子网中,一个特殊地址被保留作为子网广播地址。子网广播地址通过将IP地址的网络/子网部分设置为适当值,主机部分所有位设置为1而成。

名称 二进制 点分四组
地址 10000000 00100000 00000001 00001110 128.32.1.14
掩码取反 00000000 00000000 00000000 11111111 0.0.0.255
或的结果 10000000 00100000 00000001 11111111 128.32.1.255

如上图所示,子网 128.32.1.0/24 的子网广播地址是 128.32.1.255。从历史上来看,如果使用像 128.32.1.255 这种地址作为目的地址,也被称为定向广播(directed-broadcast)。至少在理论上,外界可以发送以 128.32.1.255 为目的地址的数据报,通过Internet路由直至到达目标子网,再作为一组广播数据报发送给子网中所有的主机。所以定向广播会有安全问题,一般在路由器中默认不进行转发。

除了子网广播地址,还要一个特殊用途地址 255.255.255.255 被保留为本地网络广播,也被称为有限广播(limited-Broadcasting)。这种地址,路由器不会进行转发,虽然不被转发,但是它可以通过链路层的广播,发送同个物理网络的所有主机,所以这种广播不需要路由器。当主机不知道自己所在的网络时,就会采用有限广播方式。

定向广播也有本地和非本地之分,这个回答 如何更好地理解广播路由与链路层的广播之间的区别? 很清晰的区分了网络层上广播的区别,当没有使用上路由进行广播时,就需要链路层的广播。链路层的广播等到以后的篇章再细说。

4. CIDR和聚合

20世纪90年代,采用子网寻址缓解增长带来的痛苦后,Internet又要开始面临更加严重的挑战:

  1. 到1994年,一半以上的B类地址已被分配。B类地址空间预计在1995年被消耗殆尽。
  2. 32位的IPv4地址被认为不足以支撑21世纪的预期规模。
  3. 全球性路由表的条目数(每个网络号对应一条),1995年大约为65000个条目,随着越来越多A类,B类和C类路由条目出现,路由性能将受到影响。

IPv6被设想用来解决问题2,因为IPv6地址为128位,地址空间足以支撑更大的规模,同时 DHCP 的出现也缓解了地址的短缺。

4.1 前缀与CIDR

为了解决问题1,分类寻址方案通过改进,扩展路由Internet路由系统以支持无类别域间路由(Classless Inter-Domain Routing),即 CIDR。这提供了一种方便的分配连续地址范围的方式,包含多于255台但少于65536台主机,也就是说不局限于单个B类或C类网络号可分配给站点。

使用CIDR,需要一个类似于子网掩码的掩码,有时也被称作为CIDR掩码。但CIDR掩码不再局限于一个站点内,而是对于全球性的路由都是可见的。通过CIDR掩码,得到一个数字组合,被称作为网络前缀,用于IPv4和IPv6地址管理。

前缀 前缀(二进制) 地址范围
0.0.0.0/0 00000000 00000000 00000000 00000000 0.0.0.0 ~ 255.255.255.255
128.0.0.0/1 10000000 00000000 00000000 00000000 128.0.0.0 ~ 255.255.255.255
128.0.0.0/24 10000000 00000000 00000000 00000000 128.0.0.0 ~ 128.0.0.255
198.128.128.192/27 11000110 10000000 10000000 11000000 192.128.128.192 ~ 198.128.128.223

前缀可以用来表示一个地址的范围,而早期的分类寻址方案易于被这个方案覆盖。比如分类的A类和B类网络号可分别用前缀长度/8 和 /16 来表示。

4.2 聚合

  • network

扫一扫,分享到微信

微信分享二维码
HTTP安全
更新中...
© 2023 cloudsmiles
Hexo Theme Yilia by Litten