一、IP地址分类

IP地址一共32位,由两部分组成,网络号主机号。网络号标识当前设备处于Internet的哪一个网络,主机号标识当前设备属于该网络中的那一台主机。

IP地址一共分为5类:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vR7UHfed-1605236465286)(CAE04C995D264910B730BE7300B29319)]

地址分类地址范围最大网络数量最大主机数量
A类地址0.0.0.0-127.255.255.2552^7=1282^24=16777216
B类地址128.0.0.0-191.255.255.2552^14=163842^16=65536
C类地址192.0.0.0-223.255.255.2552^21=20971522^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抓取到的数据报文如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0s6hU56-1605236465288)(3C133B703F5F4B76B976E2BFE34F7615)]

将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);

  1. 将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为网络号)

  2. 子网掩码取反后与网络号或运算,即为广播地址

    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和子网掩码相与得到的就是这个路由器所在的网络号。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐