1. 主机ID是公共部分吗?网络ID是用于在本地网络中定位计算机的私有部分吗?
2. 如果子网掩码的值小于255,则必须将IP地址中相应的八位字节拆分为二进制,以确定哪一部分是主机ID,哪一部分是网络ID。结果的二进制数字总是被分成两个部分吗?
例如,具有子网掩码为255.255.224.0的IP地址192.168.33.22表示包含33的八位字节如下所示:0010|0001,表示0010是网络ID部分,0001是主机ID部分吗?
感谢您提前的任何帮助。
存储在计算机中:11000000 10101000 00100001 00010110 显示给人看:192. 168. 33. 22掩码中的1表示用于标识网络号的位,因此只需使用按位与操作即可提取“网络号”。
存储在计算机中:11111111 11111111 11100000 00000000 显示给人看:255. 255. 224. 0
主机 ID 是公共部分吗?网络 ID 是用于在本地网络中定位计算机的私有部分吗?
整个地址都是“公共的”;没有“私有”的部分。查找协议(如使用完整地址的 ARP)用于在本地网络中定位计算机。
如果子网掩码的值小于255,则必须将 IP 地址中的相应八位二进制拆分,以确定哪部分是主机 ID,哪部分是网络 ID。结果的二进制数字总是被分成两部分吗?
没有什么是“分成两部分”的。只是因为点十进制表示法旨在使 IPv4 地址更易读(尽管在 CIDR 发明之前就做出了这个决定,在那时,网络号始终对齐到字节边界,因此从未导致十进制数的表面“分裂”)。
- 主机ID是公共部分吗?网络ID是用于在本地网络中定位计算机的私有部分吗?
IP地址的主机部分和网络部分与公共和私有无关。
- 如果子网掩码的值小于255,则必须将IP地址中的相应八位字节拆分为二进制,以确定哪部分是主机ID,哪部分是网络ID。结果的二进制数字总是分成两部分吗?...子网掩码为255.255.224.0表示包含33的八位字节如下:0010|0001...
你的例子是错误的。具体来说,在你将33个八位字节分割为0010 | 0001
(其中|是网络和主机之间的分界线)时,你假设224中有四个连续的二进制位...
子网掩码中包含224的八位字节有三个连续的二进制1:11100000
。因此,整个IP地址的“网络部分”是:192.168.32.0
。“ip地址”的“主机部分”是0.0.1.22
。使用你的符号,IP 192.168.33.22(掩码255.255.224.0)的第三个八位字节是:001|00001
。
要获取IP地址的网络部分,必须执行IP地址和其子网掩码的二进制AND
。主机部分是反转子网掩码的二进制AND
(在0和1之间翻转位)。
让我们举一个例子来回答你的评论:
IP地址192.168.255.22,子网掩码255.255.224.0
该地址的网络部分为192.168.224.0,地址的主机部分为0.0.31.22。我有意选择了示例中的数字,以尽可能明显地进行计算。请将224和31转换为二进制,这应该可以说明问题。如果不能,请参考维基百科上的子网划分文章。
Host address portion and network address portion can be easily identified.
Use this trick.
Class A: N.H.H.H
Class B: N.N.H.H
Class C: N.N.N.H
(N= network H=Host)
Class A network range: 1-127
Class B network range: 128-191
Class C network range: 192-223
抱歉,我无法翻译您提供的参考资料链接中的视频内容。如果您有其他需要翻译的IT技术相关内容,请随时告知我。#!/bin/sh
GetNumericIP()
{
ipbin=0
for part in `echo $1 | awk -F'.' '{print $1 " " $2 " " $3 " " $4}'`
do
ipbin=`expr $ipbin \* 256`
ipbin=`expr $ipbin + $part`
done
echo "$ipbin"
}
GetSrtingIP()
{
ipbin=$1
count=0
while [ $count -le 3 ]
do
rem=`expr $ipbin % 256`
ipbin=`expr $ipbin / 256`
if [ -z "$ipstr" ]
then
ipstr=$rem
else
ipstr=`echo ${rem}.${ipstr}`
fi
count=`expr $count + 1`
done
echo $ipstr
}
mask=$2
maskbin=`GetNumericIP $mask`
ip=$1
ipbin=`GetNumericIP $ip`
networkid=$(( $maskbin & $ipbin ))
networkid=`GetSrtingIP $networkid`
echo "networkid = $networkid"
>>> int('00011111', 2)
结果应该是31,而不是33。 - Mike Pennington