IPv4

如 10.100.122.2 就是一个 IPv4 地址。这个地址被点分隔为四个部分,每个部分 8 个 bit 总共是 32 位

分类

类别 组成 ip地址范围 最大主机数 私有ip地址范围
A 0 网络号(7位) 主机号(24位) 0.0.0.0-127.255.255.255 166777214 10.0.0.0-10.255.255.255
B 10 网络号(14位) 主机号(16位) 128.0.0.0-191.255.255.255 65534 172.16.0.0-172.31.255.255
C 110 网络号(21位) 主机号(8位) 192.0.0.0-223.255.255.255 254 192.168.0.0-192.168.255.255
D 1110 多播组号(28位)
E 11110 留待后用(27位)

D 类是组播地址。使用这一类地址,属于某个组的机器都能收到。这有点类似在公司里面大家都加入了一个邮件组。发送邮件,加入这个组的都能收到。

无类型域间选路(CIDR)

  • What

这种方式打破了原来设计的几类地址的做法,解决了ip浪费问题。将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号。从哪里分呢?你如果注意观察的话可以看到,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。后面 24 的意思是,32 位中,前 24 位是网络号,后 8 位是主机号。

  • 计算网络号

将子网掩码和 IP 地址进行 AND 计算,就可得到网络号。网络号相等,则说明是局域网地址。

  • 广播地址:二进制形式,原网络号 + 主机号全为1 。如果发送这个地址,所有该网段里面的机器都可以收到
  • 子网掩码:二进制形式,网络号全为1 + 主机号全为0
  • 出口地址:二进制形式,原网络号 + 主机号00000001

例子一:
前面三个 255,转成二进制都是 1。1 和任何数值取 AND,都是原来数值,因而前三个数不变,为 10.100.122。后面一个 0,转换成二进制是 0,0 和任何数值取 AND,都是 0,因而最后一个数变为 0,合起来就是 10.100.122.0。这就是网络号。
例子二:
我们来看 16.158.165.91/22 这个 CIDR。求一下这个网络的第一个地址、子网掩码和广播地址。
你要是上来就写 16.158.165.1,那就大错特错了。/22 不是 8 的整数倍,不好办,只能先变成二进制来看。16.158 的部分不会动,它占了前 16 位。中间的 165,变为二进制为‭10100101‬。除了前面的 16 位,还剩 6 位。所以,这 8 位中前 6 位是网络号,16.158.<101001>,而 <01>.91 是机器号。
第一个地址是 16.158.<101001><00>.1,即 16.158.164.1。子网掩码是 255.255.<111111><00>.0,即 255.255.252.0。广播地址为 16.158.<101001><11>.255,即 16.158.167.255。

动态主机配置协议(DHCP)

动态主机配置协议(Dynamic Host Configuration Protocol),简称 DHCP。

  • DHCP Discover
  • DHCP Offer

IPv6

fe80::f816:3eff:fec7:7975/64。这个有 128 位

MAC

MAC 地址全局唯一,是一个网卡的物理地址,用十六进制,6 个 byte 表示。
MAC 地址的通信范围比较小,局限在一个子网里面。