菜鸟笔记
提升您的技术认知

Ip地址 & 子网掩码

谋事在人,成事在天

社会有很多不是自己能把握的东西,不必给自己太多压力,朝着自己小目标尽力而为;结果或许重要,那也是看自己时运如何了。

一、IP4&6

概念:连接到Internet中的每一个节点的唯一标识

组成:网络号+主机号

版本:

1、IPv4 (没有特别指定的版本下,通常所谓的IP地址就是IPv4)

  • 一串32位的2进制数,表示2^32个不同的数。
  • 分4组,每组之间用小数点 “.” 分割,每一组的8位2进制数使用10进制数表示。
  • IPv4的点分十进制记法,每一组的10进制数的范围是:[0,255]。

2、IPv6 (是IPv4 的 2^96 倍)

  • 设计用于代替IPv4的下一代互联网协议
  • 一串128为的2进制数,表示2^128个不同的数 (2^128可以说是一个天文数字,每个数可以分配给地球上的每一粒沙)
  • 分8组每组之间用冒号“:” 分割,每一组16位2进制数,使用16进制数表示。
  • IPv6使用冒分十六进制记法。
    • 每一组的前到0可以顺省略;such as 2001:0000:9d38:0b87:14ea:007d:4b65:b04a —> 2001:0:9d38:b87:14ea:7d:4b65:b04a
    • 若连续的一组或几组全是0,可以压缩为“::”,但是只能出现一次; such as 0:0:0:0:0:0:0:1 —>::1; 0:0:0:0:0:0:0:0 ---->:: ; ff03:0:0:0:2002:0:0:1001 ----> ff03::2002:0:0:1001

IPv6 我们不细讲,现在其实大部分还是使用的IPv4。感兴趣的可以自己下来网上了解。

1.1、IP4分类

根据网络规模的大小,IP地址分为了 A,B,C,D,E 五类,其中的 A,B,C三类为基本地址。

1、A类:

  • 8位网络号+24位主机号。
  • A类地址的第一为2进制数总是为“0”
    • 第一个字节的取值范围 [0,127]
    • 网络数:2^(8-1) = 128
    • 主机数:2^24-2=16777214
    • 特殊用途:
      • 0.0.0.0,服务器监听地址,其实全0表示的含义有很多,不过通常表示整个网络”
      • 127.0.0.1,回环地址,专用于测试,表示本机;实际上只要是127开头,即127.0.0.0~127.255.255.255,都表示本机
  • 保留地址:10.0.0.0~10.255.255.255

2、B类:

  • 16位网络号+16位主机号
  • B类地址的前两位2进制数总是为 ”10“
    • 第一个字节的取值范围:[128,191]
    • 网络数:2^(16-2)=16384
    • 主机数:2^16-2=65534
  • 保留地址:172.16.0.0~172.31.255.255

3、C类:

  • 24位网路号+8位主机号
  • C类地址的前三位2进制数总是为“110”
    • 第一个字节的取值范围:[192,223]
    • 网络数:2^(24-3)=2097152
    • 主机数:2^(8-2)=254
    • 保留地址:192.168.0.0~192.168.255.255

在主机位中:

1、全0表示网络地址;

2、全1表示广播地址;

这两个地址是不能用的,所以计算主机数中都要 “-2”。

5.也有D类和E类,但是我们通常用不动,只重点关注 ABC类即可。

D类:保留用于组播(多播);D类地址前四位2进制数总是“1110”,第一个字节范围[224,239];

E类:用于实验,科研;E类地址前四位2进制数总是“1111”,第一个字节范围[240,255];

先来解释一下为什么会有IP地址,随着时代和科技的发展,网络部分有ICANN负责分配,保障网络地址的全球唯一性,主机地址由各个网络的管理员统一分配,在广域网中我们现在上网都会分配一个唯一IP地址供我们上网.

IP地址的网络号类似于我们的小区,主机号就是类似于小区中具体的人,这个也类似于Http协议里面的URL基本格式中的端口号拉,区分小区中的具体的位置。要想给别人传递消息或者说是寄东西,首先肯定得知道某小区某单元才能把这消息或者快递给到具体的人手中,但在在广域网中我们的IP地址都是唯一的。

在Internet中IPv4是一个32位的二进制数,那么会分2^32 约等于43亿不同的IP地址,但是我们全球现在有80多亿人口,在Internet中每个人都是不同的IP地址,故iP地址肯定是不够的,所以又想到可以用局域网和私有地址来解决问题。我们的局域网就是以路由器中的Lan口区分,路由器的Wan口就是连接Internet的。我们把唯一的IPv4地址分配给Wan口,也就说的是外网。

外网是唯一的Ip地址。

局域网就是小区,小区里面的某栋某号可能会跟别人的小区是重号的,所以我们的IP地址就可以重复使用,只是他们不在同一个局域网中。要想在不同局域网中发出数据,就得经过路由器,路由器类似于小区里面的保安,快递小哥把东西给保安,保安再把快递给具体的人,而我们在局域网中使用协议规定的保留网址(私有网址)根据自己设备的多少可手动设置ip地址。

保留地址(私有地址)的作用就是能在某个局域网中使用ip地址也可以在另一个局域网中也有重复的ip地址,这样确保每个人都可以分配到IP地址上网。

注意如果主机号的全 1,也就是255,”192.168.0.255“那么这个路由器会把接收到的信息全部打包(数据包)发给局域网中的每一个设备。所以俗称”广播地址“。

1.2、子网掩码

1、一组32位的2进制数,与IPv4搭配使用

2、一般而言,总是从1开始,并且有连续的1和连续的0组成

  • 掩码中为1的部分,表示对应Ip地址的网络位子网类
  • 掩码中为0的部分,表示对应Ip地址的主机位。

标准的掩码:

3、引入子网掩码后,一个IP地址就有3部分组成:

  • 网络号+子网号+主机号

A类的主机号多,网络较少;B类比较平均;C类就是网络号多,主机号少。

这里就有个问题了这样一次划分网络都是8位划分,能不能灵活点可以借1位或者借5位这么划分的吗?在这里就需要用的子网掩码的概念了。

划分子网的功能:借主机位表示子网,可将一个大的局域网划分成n个小局域网。

划分子网过后,后面的0都是主机位,主机 2^7-2=126台。

  • 主机的IP地址与子网掩码进行“按位与”运算 = 主机的子网地址,通过主机的子网地址可以判断主机所属的子网

4、子网地址相同的主机处于一个“网段”,子网的地址不同的主机处于不同的“网段2”,同一网段的主机可直接通信,不同网段的主机需要使用路由器才能通信

例题:

Ip1:192.168.1.123

Ip2: 192.168.1.131

Mask:255.255.255.128

判断Ip1和Ip2是不是同一个子网地址的网段?

直接带公式:

if(IP1 & Mask == IP2 & Mask){
  
    System.out.println("相同");
} else {
  
    System.out.println("相同");
}

这是伪代码。

二、练习

192.168.16.0    分三个子网
1、他的掩码??
2、每个子网的地址范围
3、每个子网的广播地址
4、每个子网的主机地址范围

① 192.168.16.0 属于c类

三个子网至少要分两个bit位(00,01,10,11)。

​ 255.255.255.1100 0000

​ 192.168.16.192 ---- 掩码


192.1.6.16.00 000000 ~ 00 111111 ---------> 0~63

​ 192.168.16.01 000000 ~ 01 111111 ---------> 64~127

​ 192.168.16.10 000000 ~ 10 111111 ---------> 128~191

​ 192.168.16.11 000000 ~ 11 111111 ---------> 192~255


00 ---------> 192.168.16.64

​ 01 ---------> 192.168.16.127

​ 10 ---------> 192.168.16.191

​ 11 ---------> 192.168.16.255


00 ---------> 192.168.16.1~1921.68.16.62

​ 01 ---------> 192.168.16.65~192.168.16.126

​ 10 ---------> 192.168.16.129~192.168.16.190

​ 11 ---------> 192.168.16.193~192.168.16.254

切记:全1表示的是广播地址

​ 全0是有很多种含义的,其中一个是服务器监听地址,就是说,按照socket协议,我们的服务器在提供服务的时候 需要设定“响应哪一个或哪一些IP地址”。如果我们设定任何地址都是可以连接的,我们在服务器端就是监听0.0.0.0 这个地址,监听这个地址就意味着我们这个服务器可以接受任何一个IP地址的客户端的连接。

后面会详细讲socket协议,也会有代码

所以配置ip地址的时候全1的和全0的都要去掉,不能用,最终计算主机数中都要 “-2”。