<TCP/IP>Internet地址结构回顾
本章介绍了Internet中使用的网络层地址,又称IP地址。
要想在网上冲浪,一个设备至少要有一个IP地址(PS:我用赛风FQ的时候,居然自动更换了IP地址,顿时感觉很神奇但是不知道为什么)
科学上网成功
我们一般用户要向 Internet 服务提供商(ISP)支付费用,由 ISP 分配地址,用户获得地址以及路由,就像电信,联通这样的提供网络服务的通信公司。
通常来说,我们想进个网站的时候比如百度时,只需要在网址栏输入www.baidu.com即可连上,但是如果输入的是 220.181.57.216这IP地址时也可以连上,而且响应时间会更快
是的,为了让大家更好记住和更方便登入网站,DNS,域名服务器,发挥了自己的作用,将IP地址隐藏在那堆更容易记住的字符串中,但是因为要解析这段字符串就比纯地址慢一点
说的这么多IP地址,这玩意大致分为IPv4地址和IPv6地址
IPv4
IPv4地址用点分四组表示法,如 220.181.57.216 ,并且地址长度就32位
每个组的数字都是范围在 [0, 255] 的整数,代表 8 个 bit。即每个数字是 IP 地址的四分之一,使用简便的十进制表示。
IPv6
IPv6表示方法是采用块或字段的四个十六进制数,用冒号分隔,如 5f05:2000:80ad:5800:0058:0800:2023:1d71 ,并将情况细分
- 一个块的前导零可以不写。 如5f05:2000:80ad:5800:58:800:2023:1d71 (0058->58,0800->800)
- 全零块可以省略,用符号 :: 代替。但为了避免出现歧义,这个符号只能在一个地址中用一次。例如 2001:0db8:0:0:0:0:0:2 可以写成 2001:db8::2
- ::用于压缩最多的零,如果多个连续块包含等长度的零,则顺序靠前的用 ::替换
- 十六进制 a - f 用小写
除此之外,IP地址还有相应的结构,大多数 IPv4 最终被细分到一个地址,用于识别连接 Internet 或某些专用内联网的计算机网络接口。这种地址叫单播地址。其他类型包括广播、组播、任播地址等。。
以下其他知识点大部分来自www.cnblogs.com/ZCplayground/p/7764436.html 那些表格弄起来可是真的麻烦
分类寻址
每个单播 IP 地址分为网络号(Network ID),标识该接口使用的地址在哪个网络中可以被发现,和主机地址(host ID),标识由网络号给出的网络中的特定主机。
最初的地址划分方法有五大类,主要是由地址中的头几位来定义:
类 | 开头 | 网络号 | 主机号 |
---|---|---|---|
A类 | 0 | 8位,除去开头一个1(下同),其余7位自由 | 24位 |
B类 | 10 | 16位,14位自由 | 16位 |
C类 | 110 | 24位,21位自由 | 8位 |
D类 | 1110 | 组播地址 | 32位,28位自由 |
E类 | 1111 | 保留 | 32位,28位自由 |
类 | 地址范围 | 用途 | 网络数 | 主机数 |
---|---|---|---|---|
A | 0.0.0.0 ~ 127.255.255.255 | 单播/特殊 | 128 | 16777216 |
B | 128.0.0.0 ~ 191.255.255.255 | 单播/特殊 | 16384 | 65536 |
C | 192.0.0.0 ~ 223.255.255.255 | 单播/特殊 | 2097152 | 256 |
D | 224.0.0.0 ~ 239.255.255.255 | 组播 | N/A | N/A |
E | 240.0.0.0 ~ 255.255.255.255 | 保留 | N/A | N/A |
可以看出来 A 类的网络数比较少,但主机数非常多。C 类相反。从这里就可以看到,这种固定的网络地址分类,固定的网络数和主机数势必会让分配 IP 地址产生困难,协调很不方便。A 类容易浪费很多主机号,而 C 类不能提供足够的主机号。B 类地址比较折中,但很快就会耗尽,还有要注意的是,上述各类地址中,第一个和最后一个地址都不用来作为单播地址
对于一个子网来说,第一个地址(主机号全为0)一般用来表示这个子网。最后一个地址(主机号全为 1)用来将数据报广播给该子网的所有主机
子网掩码
子网掩码(mask)用于确定一台主机对应的 IP 地址中的网络和子网信息。
子网掩码中,设为 1 的部分,表示 IP 地址中对应的部分表示子网部分。设为 0 的部分,表示对应的是主机部分。
长度与 IP 地址相同。配置方法可以是静态的(路由器中),也可以是动态的(DHCP)。写法可以是点分十进制。也可以用一种容易记忆的前缀长度写法:斜杠带上连续的 1 的个数。
例如 子网掩码: 255.255.255.192 可以写成 /27 ,之后很多IP地址末尾都会跟上/加1的个数
其实子网掩码最重要的作用就是可以用不同长度的子网掩码应用于相同的网络号,这样能缓解了连入 Internet 的设备越来越多的问题,使每个子网支持不同数量的主机 ,也称为可变长度子网掩码
如 255.255.255.192/24 表示此子网有256台主机,而 255.255.255.192/26 表示有64台主机
广播地址
主机部分所有位置设置为 1
例如,对于子网 128.32.1.0/24
,广播地址就是 128.32.1.255
,这种广播作为一个单播包通过路由器到达子网后,再作为广播数据报发送给子网中的所有主机。从安全的角度来说,定向广播至今仍在 Internet 中被禁用。
特殊用途地址 255.255.255.255
称为本地网络广播,将被连接在同一网络中的计算机收到,除非终端主机明确禁用。这种本地广播不会经过路由器。广播地址经常出现在协议中,例如 UDP、ICMP。
IPv6 没有任何广播地址,仅使用组播地址
前缀
分类寻址方案由子网掩码采取了一个类似于可变长度子网掩码的概念(可将不同长度的子网掩码用于相同的网络号),叫做 CIDR(classless interdomain routing,无类别域间路由)
- 提供一种方便的连续分配地址范围的方式。不只是单个 B 类或多个 C 类网络号可以分配给站点,使用 CIDR,任何未经过预定义的地址范围都可以作为一个类的一部分,只需要一个类似于子网掩码的掩码,称为 CIDR 掩码。
- CIDR 掩码不像 subnetting mask 只对一个站点局限,而对全球路由系统都是可见的。
- 网络号和 CIDR 掩码的数字组合称为网络前缀(prefixes)
- 消除 IP 地址中网络和主机号的分隔定义,将更细粒度的 IP 地址分配范围成为可能。
- 前缀 n 的范围是 0~32 (IPv4),追加在 IP 地址后,跟着一个 / 字符。
- 例如 C 类网络号 192.125.3.0 写成前缀形式: 192.125.3.0/24 。A 类和 B 类网络号用前缀 /8 和 /16 表示。
如下例子,CIDR 允许根据对地址空间的不同需求,将不同大小的地址块分配给某个组织,目的也是为了缓解路由表的压力
1 192.32.136.0/21
2
3 min address:11000000 00100000 10001000 00000001
4 mask: 11111111 11111111 11111--- --------
5 IP prefix: 11000000 00100000 10001--- --------
6 max address:11000000 00100000 10001111 11111110
7
8 8 C networks: 192.32.136.0/24 to 192.32.143.0/24
9
10 通过使用前缀,分配 192.32.136.0/21 相当于分配了 8 个 C 类地址
特殊用途地址
不全部列举:
地址 | 用途 |
---|---|
0.0.0.0/8 | 本地网络中的主机 |
10.0.0.0/8 | 专用网络、内联网的地址,不会出现在公共 Internet 中 |
192.168.0.0/16 | 同上 |
224.0.0.0/4 | 组播地址 |
255.255.255.255/32 | 本地网络受限广播地址 |
专用地址空间管理由本地决定,在家庭网络、企业内部网络很常见,与此相关的话题是 NAT(网络地址转换)。
最长前缀匹配 Longest Prefix Match
当路由器的 IP 层需要向下一跳发送数据包时,检查目的 IP 地址,执行 最长前缀匹配 Longest Prefix Match。 IP 协议中的一个重要内容。
- 因为使用了 CIDR ,对于一个给定的 IP 地址,可以有多个条目匹配。
- 匹配是指:目的 IP 地址与掩码按位与之后,和转发条目中的目的地字段值相同。数据包必须使用最具体、最匹配的那条路由。
- 最匹配就是在所有匹配的条目中,掩码中 1 最多的那个条目。
考虑下面这个IPv4的路由表:
192.168.0.0/16
192.168.20.16/28
在要查找地址192.168.20.19的时候,这两个表项都“匹配”。
192.168.20.19 = 11000000 10101000 00010100 00010011
匹配过程1:
dst IP = 11000000 10101000 00010100 00010011
mask 16bit = 11111111 11111111 00000000 00000000
per-bit and = 11000000 10101000 00000000 00000000
192.168.0.0 = 11000000 10101000 00000000 00000000 match
匹配过程2:
dst IP = 11000000 10101000 00010100 00010011
mask 28bit = 11111111 11111111 11111111 11110000
per-bit and = 11000000 10101000 00010100 00010000
192.168.20.16 = 11000000 10101000 00010100 00010000 match
这种情况下,前缀最长的路由就是192.168.20.16/28,因为它的子网掩码(/28)比其他表项的掩码(/16)要长,使得它更加明确。
2018-03-29