一个比较常见的现象是,我们所在的单位或者组织,普遍会使用诸如 10.0.x.x 或者 192.168.x.x 这样的 IP 地址,你可能会纳闷,这样的 IP 到底代表了什么呢?不同的组织使用同样的 IP 会不会导致冲突呢?
背后的原因是这样的,国际标准组织在 IPv4 地址空间里面,专门划出了一些网段,这些网段不会用做公网上的 IP,而是仅仅保留做内部使用,我们把这些地址称作保留网段。
下表是三个保留网段,其可以容纳的计算机主机个数分别是 16777216 个、1048576 个和 65536 个。
在网络 IP 划分的时候,我们需要区分两个概念。
第一是网络(network)的概念,直观点说,它表示的是这组 IP 共同的部分,比如在 192.168.1.1~192.168.1.255 这个区间里,它们共同的部分是 192.168.1.0。
第二是主机(host)的概念,它表示的是这组 IP 不同的部分,上面的例子中 1~255 就是不同的那些部分,表示有 255 个可用的不同 IP。
例如 IPv4 地址,192.0.2.12,我们可以说前面三个 bytes 是子网,最后一个 byte 是 host,或者换个方式,我们能说 host 为 8 位,子网掩码为 192.0.2.0/24(255.255.255.0)。
这里如何解释呢, 就是当4字节的ip 中, 如果你拥有一个 头字节表网络, 后三个字节是 host 的 地址. 那么说明你最多可以分配出 24个bit 的主机, 也就是 2的24次方个主机, 说明这是一个 Class A (A 类 ) 网络.
同理, 如果有两个网络字节, 即 Class B ( B类) 网络, 最多主机有 65536个; 有三个网络字节, 说明是一个 Class C ( C类) 网络, 最多有 256 个主机.
那么如何区分网络地址位数呢, 就是由 子网掩码 (NetMask) 决定, 你可以将 IP 地址与子网掩码进行 “位与” 操作,就能得到网络的值.
如 255.255.255.0, 说明前三个字节为网络字节. 同样的, 子网掩码能接受任意个位, 所以 255.255.255.252, 这个子网掩码能切出一个 30 个位的网络以及 2 个位的主机,这个网络最多有四台 host。为什么是 4 台 host 呢?因为变化的部分只有最后两位,所有的可能为 2 的 2 次方,即 4 台 host。
最后, 像 255.192.0.0 这样的子网掩码,人们无法直观地知道有多少个 1,多少个 0,后来人们发明了新的办法,你只需要将一个斜线放在 IP 地址后面,接着用一个十进制的数字用以表示网络的位数,类似这样:192.0.2.12/30, 这样就很容易知道有 30 个 1, 2 个 0,所以主机个数为 4。
域名(DNS)也记录了网站和 IP 的对应关系。全球域名按照从大到小的结构,形成了一棵树状结构。实际访问一个域名时,是从最底层开始写起,例如 www.google.com,www.tinghua.edu.cn 等。