大二修企业资料通讯(BDC)时,对於IP位址的计算一窍不通,上网看教学影片、文章仍然无法学会,後来到图书馆借书时,偶然翻到网路概论的书,才让我学会如何计算XD。
在网路上的所有装置都要有一个独一无二的IP位址,作为传送和接收资料的地址。在现实生活中,IP位址的功用就像是邮件上都会有的收件人地址和寄件人地址,收件人地址让信件可以被正确送达,寄件人地址则让收到信的人可以回信。
(图片来源: https://www.homenethowto.com/basics/ip-addresses/)
IP 位址是由 32 bits的二进位数字表示,也就是由32个0或1组成 :
01111111000000000000000000000001
上面那一串数字真的让人雾煞煞,所以我们可以透过下列方式做转换 :
01111111 00000000 00000000 00000001
.
隔开每一段 :127.0.0.1
这样就能比较容易看懂。
IP 位址可以划分为两个部分 : 网路位址、主机位址
举例来说,某天拿到192.168.117.x的网段,前面的192.168.117就是用来辨别所属网路的网路位址(24 bits),後面的x则对应到可以分配的主机位址,x的长度总共有8 bits,所以可能的排列组合有256种(2的8次方),换句话说总共有256个主机位址可以分配给256个装置使用。
将这个概念做延伸,不难发现前面的网路位址越短,可以分配的主机位址就会越多,为了满足不同规模的网路需求,又依据网路位址的长度区分出不同的 IP 位址等级。
(实际上的长度划分不一定是这样,这边仅是举例)
当初设计 IP 时,将 IP 位址分成五个等级(Class A、B、C、D、E)
一般常用的是 Class A、B、C 这三种等级的 IP 位址,分别适用在大、中、小型网路,负责管理IP位址的机构,可以依照申请者所需要的网路规模,赋予不同等级的IP位址。
从 IP 位址的第一段我们就能看出它所属的 IP 位址等级。例如: 168.0.0.1可以从 168 判断它是一个 Class B 的 IP 位址,IP 位址的前 16 bits 为网路位址,後 16 bits 为主机位址。
IP 位址等级的切割固然方便,但弹性却略显不足。假设有人拿到 Class B 的 IP 位址,实际上只连接数十台电脑,那这样不是会有很多位址被浪费掉吗?
要解决这个问题可以透过将网路切割成更小的子网路来避免 IP 位址浪费的同时,增加原本3种 IP 位址等级的弹性。而在切割子网路前,务必要先思考需要多少个子网路,以及每个子网路需要连结多少台主机。
简单来说切割子网路就是向 IP位址 中的主机位址借前几个位元作为子网路位址。
假设拿到的 Class B IP 位址是这样 :
借主机位址的前 3 bits 作为子网路位址:
子网路位址与原有的网路位址合计共占 19 bits,可以被视为是一个新的网路位址,用来识别该子网路。原先 16 bits 的网路位址是不可更动的,但子网路位址是可以自由分配的,在范例中从主机位址借用 3 bits,产生了8(2的3次方)个子网路。
范例中,原先 Class B 总共有 65536(2的16次方) 个可分配的主机位址,经过切割後每个子网路(共8个)则有 8192(2的13次方) 个可分配的主机位址,理论上从主机位址借到 15 bits 可以形成 32768 (2的15次方) 个子网路,而每个子网路有2个可分配的主机位址,但不幸的是主机位址不能全为0或1,所以上述的主机位址通通都要扣2,也就是说最多只能从主机位址身上借到前 14 bits。
在切割完子网路後,可以发现不论原先是哪一等级的 IP 位址,网路位址都不会再是原来的长度(8、16、24 bits),那要怎麽确认切割後,现在网路位址的长度呢? 答案是我们可以用子网路遮罩来确认借用几 bit 的主机位址。
转成十进位表示 :
11111111 11111111 11111111 00000000 => 255.255.255.0
子网路遮罩一定要与 IP 位址搭配使用,单独存在没有意义。把 IP 位址和子网路遮罩摆在一起看时,子网路遮罩 1 的长度范围对应到的是这组 IP 位址的网路位址,0 的长度范围则对应到这组 IP 位址的主机位址。
以下用图来说明会比较清楚 :
子网路遮罩由21个连续的1和11个连续的0组成,对应到 IP 位址(Class B)代表最前面的 21 bits 是网路位址,剩下的 11 bits 则是主机位址。
另外,也可以将范例的168.95.192.1
套用子网路遮罩後简写成168.95.192.1/21
,/21
代表网路位址有 21 bits,同时也是子网路遮罩有21个连续的1的意思。
以上就大致交代完 IP 位址的基础了,当然还有蛮多东西没有讲,不过就让我用一些应用题目结束这回合吧!
以下都是蒐集来的题目 :
某主机的 IP 位址为 192.168.1.134,子网路遮罩为 255.255.255.248,则该主机的"网路位址"为何?
从第一段的数字192可以看出是 Class C 的 IP 位址,然後将 IP 位址中的最後一个数字134转成二进制并和子网路遮罩比对 :
可以发现这组 IP 位址落在 10000 这个子网路里面,转成十进位後,此子网路的网路位址为 192.168.1.128。
在 Class C 等级网路中若要分出至少13个子网路,则子网路遮罩为何?
向主机位址借 4 bits 就可以切出 16(2的四次方) 个子网路,故子网路遮罩为 11111111 11111111 11111111 11110000 (255.255.255.240)。
255.255.252.0 这个子网路遮罩最多可以将 132.114.0.0 这个网路分成几个有效的子网路? 每个子网路最多可以有几台主机?
由 IP 位址第一个数字132,可以确认它是 Class B 的 IP 位址,经比对之後发现向主机位址借用 6 bits 作为子网路位址,所以最多可分出 64 (2的6次方) 个子网路,每个子网路可以容纳 1024-2 = 1022 (2的10次方减去主机位址全为0或1) 台主机。
之後有空应该会再写其他填坑的文章~~~
>>: Golang - html template + wkhtmltopdf生成PDF
React Navigation 在这边使用 Wix/React Native Navigation...
大家好~ 我是五岁~ 今天来继续把昨天未上色的时钟怪完成吧~!! 首先把昨天的成品做些微调 接下来就...
很多 web 框架的范例都是 127.0.0.1,今天我们换个哈罗方式。 sail test 两个绿...
使用 fd-find 代替 find,效率更好 下载方式 : sudo apt-get instal...
GitHub Repo https://github.com/b2etw/Spring-Kotlin...