一、IP地址分类
IP地址一共32位,由两部分组成,网络号和主机号。网络号标识当前设备处于Internet的哪一个网络,主机号标识当前设备属于该网络中的那一台主机。
IP地址一共分为5类:
地址分类 | 地址范围 | 最大网络数量 | 最大主机数量 |
---|---|---|---|
A类地址 | 0.0.0.0-127.255.255.255 | 2^7=128 | 2^24=16777216 |
B类地址 | 128.0.0.0-191.255.255.255 | 2^14=16384 | 2^16=65536 |
C类地址 | 192.0.0.0-223.255.255.255 | 2^21=2097152 | 2^8 |
D类地址 | 224.0.0.0-239.255.255.255 | 无 | 无 |
E类地址 | 240.0.0.0-255.255.255.255 | 无 | 无 |
我们常用的IP地址是A类、B类、C类地址,如我们的家庭路由器通常是192.168.x.x,公司级别的网络通常是10.x.x.x。D类地址是多播地址,用于多路广播。
二、私有ip地址和公有ip地址
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255
C类地址:192.168.0.0~192.168.255.255
私有地址主要用于在局域网中进行分配,在 Internet上是无效的。这样可以很好地隔离局域网和 Internet。私有地址在公网上是不能被识别的,必须通过NAT将内部IP地址转换成公网上可用的IP地址,从而实现内部IP地址与外部公网的通信。
举个简单的例子,比如我们使用的云服务器,都会有私有ip和公有ip。当我们需要远程访问云服务器时,必须使用公有ip,而不能使用私有ip,就是因为私有ip的数据不会被Internet转发。如果我们希望自己的电脑或者其他存储设备接入互联网,就需要申请公有Ip才可以。
除了私有地址以外的地址都是公有地址,公有地址(Public Address)由Inter NIC(Internet Network Information Center,国际互联网络信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问互联网。
三、广播地址和多播(组播)地址
3.1、多播地址
多播地址,也叫组播地址,组播报文的目的地址使用D类IP地址, D类地址不能出现在IP报文的源IP地址字段。组播地址可以分为四类:
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
3.2、组播mac地址和组播IP地址的对应关系
组播MAC地址的高24bit为0x01005e,第25bit为0,即高25bit为固定值。MAC地址的低23bit为组播IP地址的低23bit。由于组播IP的前四位固定为1110,组播IP的24-28位实际上是没有和组播mac建立对应关系的。
我们在某个局域网的主机下向IP地址为239.168.3.255的组播地址发送任意数据,在本地使用wireshark抓取到的数据报文如图:
将168.3.255转换成二进制为:
10101000.00000011.11111111
取最后23位转换成十六进制得到:
0101000.00000011.11111111
即28.03.255,对应组播mac地址的最后3个byte。
我在做组播测试的时候发现,使用局域网内的某台主机A发送组播数据,局域网内通过网线连接的台式机均可以使用wireshark抓包得到主机A发送的组播数据,而使用笔记本却无法抓到主机A发送的组播数据(主机A可以是电脑和台式机)。不知道为什么,欢迎懂的朋友在评论区留言解答。
3.3、广播地址
在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址。
计算方法(假设ip地址为:172.17.2.118,子网掩码为:255.255.254.0);
-
将IP和子网掩码相与计算出网络号;
10101100 00010001 00000010 01110110 (172.17.2.118)
11111111 11111111 11111110 00000000 (255.255.254.0)
10101100 00010001 00000010 00000000 (172.17.2.0为网络号) -
子网掩码取反后与网络号或运算,即为广播地址
00000000 00000000 00000001 11111111 (子网掩码取反)
10101100 00010001 00000010 00000000 (网络号)
10101100 00010001 00000011 11111111 (172.17.3.255即为广播地址)
广播数据有如下特点:
- TCP/IP协议栈中, 传输层只有UDP可以广播,TCP没有广播的概念.
- udp广播不需要经过路由器转发,因为路由器不会转发广播数据;
四、子网掩码和网关
4.1、子网掩码的作用
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
4.2、根据子网掩码计算主机号和网络号
子网掩码是一个32位地址,其对应位为1的位置表示示网络号,对应位为0的位表示主机号。
我们可以将子网掩码和ip地址都转换成二进制,将两者相与就得到了该ip所在的网络号。如IP地址为192.168.3.122,子网掩码为255.255.255.0。
两者转换成二进制得到:
11000000.10101000.00000011.01111010
11111111.11111111.11111111.00000000
相与之后可以得到该Ip地址的网络号是192.168.3,主机号是122。
4.3、网关和网关地址
网关的作用之一是使不同网络号之间的设备能够互联互通。比如设备A的IP地址是192.168.3.1,子网掩码是255.255.255.0,设备B的IP地址是192.168.4.1,子网掩码是255.255.255.0。通过计算可以知道这两台设备处在不同的两个网络中,因此是不能互相通信的,如果想要能够互相通信,就需要网关来处理。
网关其实也是一个网络设备,也有自己的IP地址,这个就是网关地址。比如我们的路由器就是一个典型的网关,路由器的IP就是网关IP,这个IP和子网掩码相与得到的就是这个路由器所在的网络号。