首页 > 其他分享 >彻底理解 IP 地址,子网掩码,子网划分

彻底理解 IP 地址,子网掩码,子网划分

时间:2024-09-28 20:44:55浏览次数:4  
标签:子网 IP 网络 地址 0.0 子网掩码

彻底理解 IP 地址,子网掩码,子网划分 

彻底理解 IP 地址,子网掩码,子网划分

 

原文地址:彻底理解 IP 地址,子网掩码,子网划分

什么是 IP 协议

在回答什么是 IP 协议前,我们先需要回答另外一个问题:什么是网络?从普通人的角度看,网络无非是手机上的一个 WIFI 标志,是电脑上一根网线而已。但是从学术角度上看,网络是一组硬件软件的集合体,是无数先贤的汗水与智慧的结晶,是横跨四大洋七大洲,连接无数人喜怒哀乐的桥梁。

 

IP 协议是众多网络协议中的一个基础协议,它位于 OSI 模型中的网络层。IP 协议有几个版本,比较重要的是 IPV4 和 IPV6,当前在互联网广泛使用的是 IPV4,未来会被 IPV6 取代,本文着重叙述 IPV4 协议。

 

IP 协议既然是协议,那么它的作用就是就是制定一个标准。那么 IP 协议到底制定了哪些标准,这些标准又带来了什么呢?如果将这个问题展开来说,未免篇幅太长,所以我们将从 IP 地址,子网划分两个大方面来切入 IP 协议。如果你有兴趣查看整个 IPV4 协议的标准,可以查看 IETF 于 1981 年 9 月发布的 RFC 791 

 

IP 协议在设定之初,就假定网络硬件基础设施是不可靠的,比如因天气原因导致的光纤中断或者停电导致的设备断电,并且其使用的是动态连接和节点,也就是说不存在中心监控跟踪和维护网络状态。由于这种设计的结果,IP 协议只能做到尽最大努力的投送报文。这样就会带来几个显而易见的问题:

  1. 数据损坏或者丢失,例如从南京向上海发送十个报文,在苏州可能某条光纤中断,导致最终上海只收到了九个报文;
  2. 数据乱序或者重复,还是上面的例子,上海可能收到超过十个报文,而且收到报文的顺序也极有可能是杂乱无章的。

IP 协议只保证尽最大努力发送报文,至于数据是否准确,则是 OSI 模型更上一层的工作,也就是传输层。例如著名的 TCP 协议就是一种传输控制协议,不过这是后话了。

IP 地址

IP 地址被规定是一个 32 位的二进制数字。例如 11000000 10101000 00000001 00000011 就是一个 IP 地址,为了方便人类认知和记忆,可以用点分十进制来表示它:198.168.1.89。IP 地址一共可以标识 2^32 次方个设备,也就是 4,294,967,296 个。依据 RFC 791 的描述,  IP 地址有两个非常重要的作用:表示设备位置并且找到它,说白话,就是找到一台设备在哪。试想这些地址均匀的分布到地球的每个角落,你该怎么快速找到其中的一个呢?很直觉的,理所应当的想到了分类,所以 IP 地址被分成了 A,B,C,D,E 五类,D 类用作多播地址,E 类保留使用,所以我们这里只讨论 A,B,C 三类 IP 地址。

 

IP 地址该如何合理的分类呢?首先需要将 IP 地址拆成三部分,网络标识位,网络号,主机号,这个概念十分重要,是理解 IP 地址的核心基础,如图所示:

 

首先我们来理解这张图,以 B 类地址举例,依据 IP 协议的规定,B 类地址的高位是 10,也就是网络标识位,紧随其后的的十四位属于网络号,最后的 16 位是主机号。也就是说,凡是一个 IP 地址的高位是 10,那么这个归属于 B 类 IP 地址。假使出现一个这样的 IP 地址,10111101 00001010 01011010 00010100(189.10.90.20),那么其网络号和主机号如下图所示:

 

 

网络号用于标识该网在哪,主机号用于标识该主机在哪,同网络号的主机可以相互通信,不用网络号的主句则必须经过网关(路由器)。IP 地址之所以这么设计,就是为了管理 IP 地址和寻址。根据上文所述,我们可以归纳出详细的 IP 地址的分类表格:

描述 A 类 B类    C 类
网络标识位 0 10 110
IP地址范围 0.0.0.0 - 127.255.255.255 128.0.0.0 - 191.255.255.255 192.0.0.0 - 223.255.255.255
可用IP地址范围 1.0.0.1 - 127.255.255.254 128.0.0.1 - 191.255.255.254 192.0.0.1 - 223.255.255.254
网络数量 126(2^7 - 2) 16384 (2^14) 2097152 (2 ^ 21)
每个网络可用主机 16777214 (2^24 - 2) 65534 (2 ^ 16 - 2) 254 (2^8 - 2)

上述的 IP 地址范围可以通过二进制 IP 地址计算出来,例如 A 类地址,其开头必然是 00000000 00000000 00000000 00000000,结尾必然是 01111111 11111111 11111111 11111111,点分十进制表达就是 0.0.0.0 - 127.255.255.255。因为 A 类地址网络号是 7 位,主机号是 24 位,所以网络数量和主机数量也很容易计算出来。那么为什么每个网络中的主机需要减 2, A 类地址的网络数量也需要减 2 呢?

 

首先回答第一个问题。每个网络的主机号全 0 代表网络其本身,全 1 用作广播地址,所以对于 192.168.1 这个网络号,192.168.1.0 代表本网络,192.168.1.255 用作广播。广播的用作是在本网络中的所有主机之间发送数据包,即一个发送方,多个接收方,接收方自行决定接收到报文后使用还是丢弃。

 

再回答第二个问题。A 类地址的 128 个网络中被保留了两个网络号,分别是 7 位全 0 (0.0.0.0) 和全 1 (127.0.0.0)0.0.0.0 用作广播到本机所有的地址,所以在程序开发中,它可以用作监听本机的所有地址。127.0.0.0 用作环回测试,也就是说除了 127.0.0.1 和 127.0.0.255 这两个特殊主机地址之外,其他的地址都指向自己,我们常用 127.0.0.1 代表自己,其实 127.0.0.1 - 127.0.0.254 都代表自己,都可以 ping 通,不信你可以试试。

子网划分

在一个 B 类网络地址中,仍然可以容纳 65534 台主机。然而在实际的应用中,很少有组织可以使用到这么庞大的网络,另外由于主机数量大,导致同一网络传播路径就会变的更远,从而影响同网传播效率。所以为了更高效的传播信息,我们需要将一个网络拆开成许多个子网,就像现实中一个城市也需要拆分成几个区。经由子网划分后,同一个 B 类网络对内划分出了若干个子网,对外则还是一张网。

 

怎么完成子网划分呢?我们需要引出另外一个新的概念:子网掩码。子网掩码和 IP 地址一样,由一个 32 位的二进制数字组成,一般来说,子网掩码由高位部分连续的 1 和地位部分连续的 0 组成。来看一张图:

 

对于 189.10.90.20 这个 IP 地址来说,原本是由网络标识位+网络号+主机号三部分构成,经由子网划分后,变成了网络标识位+网络号+子网号+主机号四部分构成,表达为 189.10.90.20/20。IP 地址后的 20 即代表子网掩码的高位由 20 个连续的 1 构成,点分十进制表示为 255.255.240.0,因为主机号被子网掩码占用 4 位,所以主机位变成了 12 位,可容纳的主机也变成了 4092(2^12 - 2) 个,这个 IP 地址的子网号为 0101(5)。

同一网段的判断

如果没有子网划分,189.10.90.20 和 189.10.200.20 这两个 IP 是在同一 B 类网络下,可以不经由网关直接通讯,但假使我们使用了 20 这个子网掩码进行子网划分,两者还能直接通讯吗?答案是不能,因为二者不在同一子网下。我们可以使用子网掩码和 IP 地址进行 and 运算,如果结果是相同的,则处于同一网络下,可以直接通讯。还是以 189.10 这个网络号,20 为掩码为例:

IP地址 计算过程 结果
189.10.90.20 189.10.90.20 & 255.255.240.0 10111101000010100101000000000000
189.10.200.20 189.10.200.20 & 255.255.240.0 10111101000010101100000000000000
189.10.202.20 189.10.202.20 & 255.255.240.0 10111101000010101100000000000000

关于位运算,如果你不太清楚,可以点此了解。

可见,90.20 和 200.20,202.20 不在同一网络下,而 200.20,202.20 在同一网络下,可以直接通讯。最后提问一个问题:192.168.1.1/26 和 192.168.1.89/26 是否可以直接通讯?

默认子网掩码

对于 A,B,C 类的地址,它们也有着默认的子网掩码:

类型 子网掩码
A 类地址 255.0.0.0,十进制表示:8
B 类地址 255.255.0.0,十进制表示:16
C 类地址 255.255.255.0,十进制表示:24。我们常在局域网中配的掩码正是来源于此,代表 C 类地址没有划分子网。

私有地址

在 RFC 1918 中保留了一些地址做为私有地址,私有地址不能直接接入公网,而公网也不会分配私有地址到公网上。私有地址仅作为家庭或组织内部使用,私有地址如下:

类型 范围 子网掩码 IP 数量
A 类地址 10.0.0.0 - 10.255.255.255 10.0.0.0/8 16,777,216
B 类地址 172.16.0.0 - 172.31.255.255 172.16.0.0/12 1,048,576
C 类地址 192.168.0.0 - 192.168.255.255 192.168.0.0/16 65,536
  分类: 计算机网络      

标签:子网,IP,网络,地址,0.0,子网掩码
From: https://www.cnblogs.com/Leo_wl/p/18438381

相关文章

  • go并发编程 icmp协议探测ip是否在线
    packagePluginsimport("bytes""fmt""github.com/shadow1ng/fscan/common""golang.org/x/net/icmp""net""os/exec""runtime""strings""sync&quo......
  • JavaScript深拷贝与浅拷贝
    由于对象采用的是引用赋值。所以直接用“=”,修改属性的时候也会将原来的变量改变掉。因此,就有了浅拷贝与深拷贝用{...obj}和object.assign表示浅拷贝,其只拷贝外围对象的一层,而不会拷贝多层。 方法二:使用Object.assign  深拷贝的实现其一是通过递归实现拷贝。其二lod......
  • JavaScript 条件循环语句
    ‌条件循环语句‌是编程中的一种控制结构,它允许程序根据特定条件重复执行一段代码,直到满足某个条件为止。这种结构通常包括条件语句和循环语句,它们共同作用,使得程序能够根据预设的条件来决定是否继续执行循环体中的代码。for循环:适用场景:当知道循环次数时(循环次数已知)。特......
  • BUUCTF(PWN)- rip
    BUUCTF(PWN)-rip打开题目得到靶机信息:node5.buuoj.cn:29045和附件pwn1查看文件信息为64-bit,用ida打开附件首先shift+f12查找字符串,能看见system、/bin/sh字样,点击pleaseinput或者ok,bye!!!跳转直接进入main函数查看gets并没有限制输入,gets函数的缓冲......
  • nginx转发请求后得到客户端真实IP地址
    Nginx和应用(springboot程序)部署到了同一个公网服务器。在访问应用时,需要得到客户端真实IP地址,需要配置nginx。server.location下配置:proxy_set_header X-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_heade......
  • NOIP2024集训Day37 DP
    NOIP2024集训Day37DPA.[CQOI2011]放棋子设\(f_{i,j,k}\)表示前\(k\)种棋子放了任意\(i\)行、\(j\)列。决策是:在哪些位置填同种颜色的棋子。于是美剧上一个状态的\(i,j\)(表示为\(l,r\)),上一状态\(k_1=k-1\)。设\(g_{i,j,k}\)表示\(k\)个同种颜色的......
  • redis 管道 批量处理 transmit multiple commands to the Redis server in one tran
    Redispipelining|Docshttps://redis.io/docs/latest/develop/use/pipelining/RedispipeliningHowtooptimizeround-triptimesbybatchingRediscommandsRedispipeliningisatechniqueforimprovingperformancebyissuingmultiplecommandsatoncewithou......
  • javascript 数组对象解构
    传统的写法不好记忆,书写麻烦,此时可以使用结构赋值的方法让代码更加简洁。数组结构是将数组中的单元值快速批量赋值给一系列变量的简介语法。变量的顺序对应数组单元值位置一次进行赋值操作。如下:应用一:交换两个变量Js前面有那种情况需要加分号。(不加分号解析器认为和上......
  • CSP & NOIP 模拟赛记录
    9.18(lanos212)T1签到,10mins内过了。T2乍一看有点困难,题目太形式化,不太直观,先跳过去思考T3了,T3没有什么DP的思路,但是这种题显然需要DP。看了一眼T4,被一堆式子糊脸恶心了,没有怎么思考。接下来一个小时在思考T2和T3,突然发现T2只需要每次求最短路就可以了,那么就是......
  • IP地址数据信息获取方式
    一、IP地址分配机构数据全球范围内的IP地址分配由特定的机构负责,如互联网数字分配机构(IANA)以及各个地区的互联网注册机构(RIR)。IP地址查询商可以通过与这些机构建立合作关系,获取IP地址分配的原始数据。这些数据包括IP地址的范围、分配对象、所属地区等基本信息。通过对这些官......