连接到Internet中的每台设备至少都有一个IP地址,IP地址表示了流量的来源(好比别人要找你玩,需要知道你家的地址;网络中别人需要和你通信,也需要知道IP地址),且Internet中的IP地址必须是唯一的。对于全球性的Internet地址,一个分层结构管理实体帮助用户和服务商来提供分配地址;个人用户通常由Internet服务提供商(ISP)分配地址,通过支付费用来获得地址和执行路由。

IP地址表示

IPv4地址长度32位,通常采用点分四组(点分十进制)表示法,如165.195.130.107。点分四组表示法由四个点分隔的十进制数组成,每个数字是一个非负整数,范围是[0~255]。IP地址的点分四组表示只是简单方式,它也支持二进制来表示,对比如下:

0.0.0.0            00000000 00000000 00000000 00000000
165.195.130.107 10100101 11000011 10000010 01101011
255.255.255.255 11111111 11111111 11111111 11111111

IPv6地址长度是128位,采用冒分十六进制表示法来表示,由冒号来分隔十六进制的块或字段,格式X:X:X:X:X:X:X:X,如

5f05:2000:80ad:5800:0058:0800:2023:1d71

IPv6也有一些已经达到共识的简化表示规则,如下:

  · 一个块中前导的零不必书写,如 5f05:2000:80ad:5800:0058:0800:2023:1d71 -> 5f05:2000:80ad:5800:58:800:2023:1d71

  · 全零块可以省略,并用::代替(注意:为避免歧义,::在一个IPv6地址中只能使用一次),如 2001:0db8:0000:0000:0000:0302:0003:2020 -> 2001:db8::302:3:2020

  · IPv6中嵌入IPv4,格式 X:X:X:X:X:X:d.d.d.d,如 ::ffff:130.113.232.83(IPv6) -> 130.113.232.83(IPv4)

  · IPv6的低32位通常采用点分四组表示法,比如::0102:f001相当于::1.2.240.1

在简化过程中需要注意:

  · IPv6中的a~f应该小写表示;

  · :: 只能用于压缩影响最大的地方(最多零的位置);

  · IPv6也可转换为二进制形式,与上述IPv4规则相同(4以点分,6以冒号分)。

IPv6的地址表示在URL中访问应该用 [ ] 符号包围,如: 协议://[X:X:X:X:X:X:X:X]:端口号

IP地址结构

在大量的IP地址情况下,可以方便的将地址空间划分成块,大多数地址块最终又被细分为一个地址,用于识别连接Internet或某些专用的互联网的计算机网络接口,这些地址称为单播地址。除了单播地址以外,还有广播、组播、任播地址以及一些特殊地址。

分类寻址(IPv4)

IPv4地址被分为两个部分:网络部分(网络号),用于识别接口使用的IP地址在哪个网络中可被发现;主机部分(主机号),用于识别由网络部分给出的网络中特定的主机,而通过这种方式的寻址称为分类寻址。

在Internet中,IP地址的划分分为五大类,由地址中的头几位来定义,如下:

类	地址范围	                高序位	   用途	  百分比	  网络数	   主机数
A 0.0.0.0~127.255.255.255 0 单播/特殊 1/2 128 16777216
B 128.0.0.0~191.255.255.255 10 单播/特殊 1/4 16384 65536
C 192.0.0.0~223.255.255.255 110 单播/特殊 1/8 2097152 256
D 224.0.0.0~239.255.255.255 1110 组播 1/16 N/A N/A
E 240.0.0.0~255.255.255.255 1111 保留 1/16 N/A N/A

子网寻址(IPv4)

上述的分类寻址的范围(如A类B类的主机号空间)依然很大,为了进一步的缩小IP地址查找的范围,子网寻址允许将地址分类后的主机号再分为子网(某类地址可分为多个子网)号和主机号(子网中的主机地址)两个部分。

子网寻址提供额外的灵活性的代价是增加成本,子网和主机字段由站点指定,一个站点中所有路由器和主机需要一种方式来确定地址中的子网部分和主机部分。除网络号外,之后的8位作为子网号,提供256个子网和每个子网中254台主机。

格式大致如下(以B类为例):

比如上图中,B类网络的后16位为子网(站点)的管理员按需分配,8位子网号,8位主机号,允许256个子网,每个子网又包含254个主机地址(第一个和最后一个规定使用)。
子网的大致应用如下图:

来自Internet的流量想要与子网内某个主机通信,首先得经过站点边界路由器,因为该站点边界路由器内包含着站点内子网的分配信息,也包含了由Internet集中分配的网络号。

子网掩码、可变长度子网掩码(IPv4)

子网掩码是主机或路由器使用的分配位,以确定如何从一台主机对应的IP地址中获得网络号和子网信息,子网掩码一旦设置,网络地址和主机地址就固定了。
IP地址的点分四组表示只是简单方式,它也支持二进制来表示。

IP   137.12.2.120
掩码 255.255.255.240 # 转换为二进制计算 10001001 00001100 00000010 01111000 IP
11111111 11111111 11111111 11110000 掩码
10001001 00001100 00000010 01110000 结果

结果转换后得出子网:137.12.2.112(/28),每个网段含1+2+4+8=15台主机。

通过上面的子网掩码将一个分配给站点的网络号进一步细分为多个可分配的大小相同的子网。接下来将通过同一站点的不同部分设置不同长度的子网掩码来提高子网结构的灵活性,同时也增加了管理的复杂性。这便是可变长度子网掩码。

不同的子网掩码被用于站点中的子网128.32.0.0/16: /24、/25、/26。每个子网可提供不同数量的主机: /24前缀的允许有256位;/25前缀的允许有128台;/26前缀的允许有64台。

广播地址(IPv4)

在每个子网中,一个特殊的地址被保留作为子网的广播地址,子网广播地址由子网掩码首先取反,然后与IPv4地址进行`或`运算构建而成,除了子网广播地址,特殊用途地址255.255.255.255被保留为本地网络广播。

如上述的子网137.12.2.112(/28),则广播地址计算为:

10001001 00001100 00000010 01111000  IP
00000000 00000000 00000000 00001111 掩码
10001001 00001100 00000010 01111111 结果

结果转换后得出广播地址:137.12.2.127。

广播用于同时向所在子网中所有主机发生数据报,广播地址可用于IPv4中,IPv6仅使用组播地址。

IPv6地址、接口标识符

IPv6地址使用特殊前缀表示一个地址范围。

一个IPv6地址范围是指它可用的网络规模,有关范围的重要例子包括节点本地(只用于同一计算机中通信)、链路本地(只用于同一网络链路或IPv6前缀中的节点)或全球性(Internet范围)。在IPv6中,无论是单播地址还是组播地址,都需要明确指出地址的有效范围。

链路本地IPv6地址(和一些全球性IPv6地址)使用接口标识符(IID)作为一个单播IPv6地址的分配基础。IID作为IPv6地址的低序位长度为64位,直接由一个网络接日相关的链路层MAC地址形成。

在IEEE标准中, EUI表示扩展唯一标识符。EU1-64标识符开始于一个24位的组织唯一标识符(OUI),接着是一个由组织分配的40位扩展标识符,它由前面24位识别。OUI的长度是24位,并占据EU1-48和EU1-64地址的前3个字节。这些地址的第一个字节的低两位分别是u位和g位。当u位被设置时,表示该地址是本地管理;当g位被设置时,表示该地址是一组或组播类型的地址。

当一个IPv6接口标识符需要一种接口,并且该接口没有由制造商提供EUI-48地址,但是有其他类型的基本地址时(例如AppleTalk),基本地址可用0从左侧填充形成接口标识符。

CIDR

CIDR-无类别域间路由一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法,CIDR是基于前缀的,用于解释IP地址的标准。在IPv4中前缀范围0~32;IPv6中前缀范围0~128,前缀越短就能匹配越多的地址,越长就匹配得越少,前缀带来的好处是可能更细粒度的分配IP地址范围。

使用CIDR,未经过预定义的任何地址范围可作为一个类的一部分,但需要一个类似于子网掩码的掩码(CIDR掩码)。由于CIDR掩码不再局限于一个站点,而是针对全球路由系统,所以核心Internet路由器必须能够解释和处理掩码。

CIDR的另一个好处就是可以进行前缀路由聚合,路由分层的思想便是通过路由聚合的过程来实现,这样能够在达到通信最短路径的同时又有效的控制路由表的条目数。
例如,16个原来的C类(/24)网络现在可以聚合在一起,对外显示了一个/20的网络了(如果这些网络的的地址前20位都相同)。两个对齐的/20网络又可进一步聚合为/19,依此类推。这有效地减少了要对外显示的网络数,防止了`路由表爆炸`。

特殊用途地址 

IPv4特殊地址表

前缀	                特殊用途、参考文献
0.0.0.0/8 本地网络中的主机,仅作为源IP地址使用[RFC1122]
10.0.0.0/8 专用网络(内联网)的地址。这种地址不会出现在公共Internet中[RFC1918]
127.0.0.0/8 Internet主机回送地址(同一计算机),通常只用127.0.0.1[RFC1122]
169.254.0.0/16 “链路本地”地址,只用于一条链路,通常自动分配[RFC3927]
172.16.0.0/12 专用网络(内联网)的地址[RFC1918]
192.0.0.0/24 IETF协议分配(IANA保留)[RFC5736]
192.0.2.0/24 批准用于文档中的TEST-NET-1地址[RFC5737]
192.88.99.0/24 用于6to4中继(任播地址)[RFC3068]
192.168.0.0/16 专用网络(内联网)的地址[RFC1918]
198.18.0.0/15 用于基准和性能测试[RFC2544]
198.51.100.0/24 TEST-NET-2地址[RFC5737]
203.0.113.0/24 TEST-NET-3地址[RFC5737]
224.0.0.0/4 IPv4组播地址(D类),仅作为目的IP地址使用[RFC5771]
240.0.0.0/4 保留空间(E类),除255.255.255.255[RFC1122]
255.255.255.255/32 本地网络(受限的)广播地址[RFC0919][RFC0922]

IPv6特殊地址表  

前缀	                   特殊用途、参考文献
::/0 默认路由条目,不用于寻址[RFC5156]
::/128 未指定地址,可作为源IP地址使用[RFC4291]
::1/128 IPv6主机回送地址,不用于发送出本地主机的数据报中[RFC4291]
::ffff:0:0/96 IPv4映射地址,不出现在分组头部,只用于内部主机[RFC4291]
::{ipv4-address}/96 IPv4兼容地址,已过时,未使用[RFC4291]
2001::/32 Teredo地址[RFC4380]
2001:10::/28 ORCHI 覆盖可路由加密散列标识符[RFC4843]
2001:db8::/32 用于文档和实例的地址范围[RFC3849]
2002::/16 6to4隧道中继的6to4地址[RFC3056]
3ffe::/16 用于6bone实验,已过时,未使用[RFC3701]
5f00::/16 用于6bone实验,已过时,未使用[RFC3701]
fc00::/7 唯一的本地单播地址,不用于全球性的Internet[RFC4193]
fe80::/10 链路本地单播地址[RFC4291]
Ff00::/8 IPv6组播地址,仅作为目的IP地址使用[RFC4291]

IPv4和IPv6之间的转换使用一种被称为"嵌入IPv4的IPv6地址"方法。该方法规则如下图:

IP地址分配

IP地址空间通常被分配为大的块,这由一些分层次组织的权威机构完成。对于单播IPv4和IPv6的地址空间,IANA将分配权限主要委托给几个地区性Internet注册机构(RIR)。RIR之间通过一个组织互相协作,即2003年创建的号码资源组织(NRO)[NRO]。

加入NRO的地区性Internet注册机构:

  · AfriNIC - 非洲网络信息中心 (http://www.afrinic.net)

  · APNIC - 亚洲太平洋地区网络信息中心 (http://www.apnic.net)

  · ARIN - 美洲Internet号码注册机构 (http://www.arin.net)

  · LACNIC - 拉丁美洲和加勒比地区的IP地址注册 (http://lacnic.net/en/index.html)

  · RIPE NCC - 欧洲网络协调中心 (http://www.ripe.net)

以上机构为对于地区的国家运营的小型注册机构和大型ISP分配地址空间,然后ISP又向客户提供地址空间。

PA - 供应商聚合地址空间,用户登记Internet服务时,他们通常以地址前缀形式使用ISP地址空间的一部分(通常很小),它们包含一个或多个前缀,并可与ISP的其他前缀实现聚合。

PI - 应商独立地址空间,从PI空间分配的地址可以直接分配给用户,并且可以由任何ISP来使用。它们不能聚合。

小结

IP地址用于识别和定位整个Internet系统(单播地址)中设备的网络接口,也用于识别多个接口(组播、广播或任播地址)。

IPv4和IPv6都支持同时指向多个网络接口的地址格式。IPv4支持广播地址和组播地址;IPv6只支持组播地址。

IDR的开发和部署是Internet核心路由系统的一个根本性变化。CIDR成功地为分配地址空间提供更多灵活性,并通过聚合提升路由的可扩展性。

参考:

《TCP IP 详解卷1:协议》

RFC官方文档

TCP/IP 笔记 - Internet地址结构的更多相关文章

  1. TCP/IP 笔记 - Internet协议

    IP是TCP/IP协议族中的核心协议,TCP.UDP.ICMP.IGMP数据都通过IP数据报传输.IP提供了一种"尽力而为.无连接"的数据交付服务:尽力而为表示不保证IP数据报能成 ...

  2. TCP/IP笔记(1)

    TCP/IP 背景和介绍 上世纪 70 年代,随着计算机技术的发展,计算机使用者意识到:要想发挥计算机更大的作用,就要将世界各地的计算机连接起来.但是简单的连接是远远不够的,因为计算机之间无法沟通.因 ...

  3. 第二章 Internet 地址结构

    注意: 这个系列的博客只是为了巩固我学习的知识,参考的价值不是很大,如果需要,请转到http://www.cnblogs.com/ZCplayground/p/7764436.html Interne ...

  4. Internet地址结构

    IP地址结构及分类寻址 IP地址 = <网络号> + <主机号>            ------------IPv4(32bit)点分四组表示法: 192.168.31.1 ...

  5. 第二章:Internet地址结构

    引言 本章主要介绍了: 如何为Internet中的设备分配IP地址. 有助于理由可扩展性的地址结构分配方式. 特殊用途的地址. 表示IP地址 IPv4地址 长32位,采用点分四组或点分十进制来表示. ...

  6. 《TCP/IP 详解 卷1:协议》第 2 章:Internet 地址结构

    第二章介绍 Internet 使用的网络层地址,即熟知的 IP 地址.连接到 Internet 的设备,基于 TCP/IP 的专用网络中使用的设备都需要一个 IP 地址. 路由器(见 IP 协议 一章 ...

  7. TCP/IP 笔记 - ICMPv4和ICMPv6 : Internet控制报文协议

    ICMP是一种面向无连接的协议,负责传递可能需要注意的差错和控制报文,差错指示通信网络是否存在错误(如目的主机无法到达.IP路由器无法正常传输数据包等.注意,路由器缓冲区溢出导致的丢包不包括在ICMP ...

  8. TCP/IP笔记(四)IP协议

    前言 IP相当于OSI参考模型的第3层--网络层:主要作用是"实现终端节点之间的通信"又称"点对点通信". IP作为整个TCP/IP中至关重要的协议,主要负责将 ...

  9. TCP/IP 笔记 - 安全

    安全:可扩展身份认证协议.IP安全协议.传输层安全.DNS安全.域名密钥识别邮件 任何由用户或以用户账号执行却违背了用户本身意愿的软件被称为恶意软件 网络安全是一门十分广泛及有深度的学识,而本书旨在了 ...

随机推荐

  1. IMU

    (1)用IMU来进行预测 读入一个10/20帧的数据集,通过IMU来初步预测出位姿以及显示其路径. Christian Forster, Luca Carlone, Frank Dellaert, D ...

  2. VMWare 14.1 15 Pro 安装 macOS Mojave 10.14.1系统 遇到的问题解决方案

    安装环境 WIN10VMware Workstation Pro 15.0.0 Build 10134415工具准备1.VMware Workstation Pro 15.0.0 Build 1013 ...

  3. 定义java中的变量

    四种类型 1.整数 2.小数 3.字符 4.布尔值 八种 整数(byte   字节1   范围-128~127 )    (short   字节 2)    (int    字节4)     (lon ...

  4. [翻译]高并发框架 LMAX Disruptor 介绍

    原文地址:Concurrency with LMAX Disruptor – An Introduction 译者序 前些天在并发编程网,看到了关于 Disruptor 的介绍.感觉此框架惊为天人,值 ...

  5. 《C#从现象到本质》读书笔记(八)第10章反射

    <C#从现象到本质>读书笔记(八)第10章反射 个人感觉,反射其实就是为了能够在程序运行期间动态的加载一个外部的DLL集合,然后通过某种办法找到这个DLL集合中的某个空间下的某个类的某个成 ...

  6. 51nod1305

    可以暴力,但这里学习了一个新思路,就是把原式进行分解会得到[1/a[i]+1/a[j]],因为向下取整,我们可以发现,1作用于1结果为2,1作用于除了1之外的数结果为1,2作用于2结果为1,所以我们只 ...

  7. maven解决omitted for duplicate(依赖冲突)

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  8. The current state of generics in Delphi( 转载)

    The current state of generics in Delphi   To avoid duplication of generated code, the compiler build ...

  9. 06-jQuery的文档操作

    之前js中咱们学习了js的DOM操作,也就是所谓的增删改查DOM操作.通过js的DOM的操作,大家也能发现,大量的繁琐代码实现我们想要的效果.那么jQuery的文档操作的API提供了便利的方法供我们操 ...

  10. 谈谈最近的想法和 Thoughtworks 的 Offer

    最近笔者一直没有记录博客,原因是因为卷入了面试,离职,谈判,思考等一系列事件中.不过可以先说明一下的是, 笔者最后还是拒绝了 Thoughtworks 的 Offer,继续留在目前的公司. 去年毕业后 ...