LFCA:在網絡中學習二進制和十進制數字 – 第10部分

第9部分LFCA系列中,我們介紹了IP位址的基礎知識。為了更好地理解IP位址,我們需要更多地關注這兩種IP位址表示方式——二進制十進制點分表示法。如前所述,一個IP位址是一個32位的二進制數字,通常以十進制格式表示,以便於閱讀。

二進制格式僅使用10兩個數字。這是您的電腦理解的格式,也是通過網絡發送數據的格式。

然而,為了使地址便於人類閱讀,它被轉換為點分十進制格式,電腦稍後會將其轉換為二進制格式。正如我們之前所說,一個IP位址由4個八位字節組成。讓我們來解析IP位址192.168.1.5

點分十進制格式中,192是第一個八位字節,168是第二個,1是第三個,最後5是第四個八位字節。

在二進制格式中,IP位址如下所示:

11000000		=>    1st Octet

10101000		=>    2nd Octet

00000001		=>    3rd Octet

00000101		=>    4th Octet

二進制中,一個位元可以是開或關。‘’位元由1表示,而關閉位元由0表示。在十進制格式中,

要得到十進制數字,需要對所有二進制位數進行加總,每個位數都是2的冪。下面的表格給出了一個八位位元組中每個位的位置值。例如,1的十進制值相當於二進制00000001

Decimal Numbers

更好的格式也可以如下所示。

2º	=	1	=	00000001

2¹	=	2	=	00000010

2²	=	4	=	00000100

2³	=	8	=	00001000

2⁴	=	16	=	00010000

2⁵	=	32	=	00100000

2⁶	=	64	=	01000000

2⁷	=	128	=	10000000

讓我們嘗試將點分十進制格式的IP地址轉換為二進制。

將十進制格式轉換為二進制

192.168.1.5為例。要將十進制轉換為二進制,我們將從左到右開始。對於表中的每個值,我們都要問一個問題,您能從IP地址中的十進制值中減去表中的值嗎?如果答案是’可以‘,我們就寫下’1‘。如果答案是’不可以‘,我們就寫一個零。

讓我們從第一個八位位元組192開始。你能從192中減去128嗎?答案是一個很大的’可以‘。因此,我們將寫下1,對應於128

Decimal Numbers
192-128 = 64

你能從64中減去64嗎?答案是’可以‘。再次,我們記下1,對應於64。

Decimal Numbers

64-64 = 0由於我們已經用完了十進制值,我們將剩餘的值賦值為0。

Decimal Numbers

所以,192的十进制值转换为二进制为11000000。如果将底部表格中对应的1的值相加,最终得到192。也就是说,128 + 64 = 192。有道理吧?

我们继续处理第二个八位数-168。我们可以从168中减去128吗?可以

Decimal Numbers
168-128 = 40

接下来,我们可以从40中减去64吗?不行。所以,我们赋值为0。

Decimal Numbers

我们继续下一个值。我们可以从40中减去32吗?可以。我们赋值为1。

Decimal Numbers
40 - 32 = 8

接下来,我们可以从8中减去18吗?不行。我们赋值为0。

Decimal Numbers

接下来,我们可以从8中减去8吗?可以。我们赋值为1。

Decimal Numbers
8-8 = 0

由于我们已经用完了十进制值,我们将余下的值都赋为0,如表所示。

Decimal Numbers

最终,十进制数168转换为二进制格式为10101000。同样,如果将底部行中对应的1的十进制值相加,最终得到168。也就是说,128 + 32 + 8 = 168

对于第三个八位数,我们有1。在我们的表格中,唯一一个我们可以完全从1中减去的数是1。所以,我们将表格中的1赋值为1,并添加前导的0,如图所示。

Decimal Numbers

所以,1的十进制值等于二进制00000001

最后,我们有5。从表格中可以看出,唯一一个我们可以完全从5中减去的数是4。左边的所有值都将被赋值为0。

我们可以从5中减去4吗?可以。我们将4赋值为1。

Decimal Numbers
5-4 = 1

接下来,我们可以从2中减去1吗?不行。我们将值赋为0。

Decimal Numbers

最後,我們能把1從1中減去嗎?可以的。我們將1指定為1.

Decimal Numbers

數字5的十進位對應到二進位的00000101

最後,我們有以下轉換。

192	=>	 11000000

168 	=>	 10101000

1       =>	  00000001

5       =>	  00000101

所以,192.168.1.5在二進位形式下等於11000000.10101000.00000001.00000101

理解子網掩码/網絡掩码

我們之前已經提到,TCP/IP網絡中的每個主机應該有一個唯一的IP地址,在大部分情況下,這是由路由器使用DHCP協議动态分配的。DHCP(動態主機配置協議)是一個服務,用於在IP網絡中為主机動態分配IP地址。

那麼,你如何確定IP地址的哪部分保留給網絡部分,哪部分可供主機系統使用呢?這就是子網掩码(subnet mask)或網絡掩码(network mask)发挥作用的地方。

A subnet is an additional component to an IP address that distinguishes the network & host portion of your network. Just like an IP address, the subnet is a 32-bit address and can be written in either decimal or binary notation.

子網的目的是在IP地址的網絡部分和主機部分之間划分行域。對於IP地址的每個位,子網掩码指定了值。

對於網絡部分,它打開位並指派值1,對於主機部分,它關閉位並指派值0。因此,所有設定為1的位對應於表示網絡部分的IP地址位,所有設定為0的位對應於表示主機地址的IP位。

A commonly used subnet mask is the Class C subnet which is 255.255.255.0.

下面的表格展示了十進位和二進位的網絡掩码。

Network Masks

這結束了我們網絡基礎系列的第二部分。我們已經涵蓋了十進制到二進制IP轉換、子網掩碼,以及每個IP地址類別的默認子網掩碼。

Source:
https://www.tecmint.com/learn-binary-and-decimal-numbers-in-networking/