IP地址和子网掩码的关系怎么计算?

 我来答
求真实验室
2022-11-18 · 探索生活中的科学奥秘
求真实验室
太平洋电脑网是专业IT门户网站,为用户和经销商提供IT资讯和行情报价,涉及电脑,手机,数码产品,软件等。
向TA提问
展开全部
二进位和逻辑运算 \x0d\x0a 在我们认识IP地址之前我想我们很有必要认识两个概念二进位和逻辑运算。虽然我也知道这两个东东都不好理解但如果不知道它们的工作原理那麽以後我们在讨论IP地址和子网的时候您就要靠死记了。不过一旦你知道了其原理那麽您在任何的IP网路中都不至於迷失所谓“万变不离其宗”是也。 \x0d\x0a\x0d\x0a二进位 (Binary) \x0d\x0a 为什麽我们要学二进位哎呀还不是该死的蠢电脑嘛它只懂得0和1那麽我们要和电脑沟通的时候也只好装蠢一些才行。当电脑要处理IP运算的时候最终是以二进位的形式进行的。 \x0d\x0a 我们人类最习惯的运算规则是十进位也就是从0到9为一圈回到零的时候就进一位数而我们前面讨论的bit和byte则是八进位即0到7为一圈回到零就进一位数另外还有十六进位由0到15为一圈回到零进一位但使用数字15很容易和十进位混乱所以在十六进位里面从10到15之间分别用英文字母A到F代替了所以我们通常看到的十六进位是从0到F的排列。 \x0d\x0a 好了认识了上面这几种运算规则相信理解二进位也不难道理是一样的从0到1为一圈回到0进一。那麽我们看看十七个连续递增的十进位二进位和十六进位数字之间的比较将会是这样的 \x0d\x0a 十进位 二进位 十六进位 \x0d\x0a 0 0 0 \x0d\x0a 1 1 1 \x0d\x0a 2 10 2 \x0d\x0a 3 11 3 \x0d\x0a 4 100 4 \x0d\x0a 5 101 5 \x0d\x0a 6 110 6 \x0d\x0a 7 111 7 \x0d\x0a 8 1000 8 \x0d\x0a 9 1001 9 \x0d\x0a 10 1010 A \x0d\x0a 11 1011 B \x0d\x0a 12 1100 C \x0d\x0a 13 1101 D \x0d\x0a 14 1110 E \x0d\x0a 15 1111 F \x0d\x0a 16 10000 10 \x0d\x0a\x0d\x0a 如果您想进行二进位和十进位的换算在列表中找到相应的数字是最简单的方法但正如您刚才所见光十六个数字已经有这麽长的列表了如果要找成千上百个数字可不是件容易的事情。不过我们在IP地址上面看到的十进位数字最大不会超过255这个数值。我们可以先将2的0到7次方列出来 \x0d\x0a 27 26 25 24 23 22 21 20 \x0d\x0a 128 64 32 16 8 4 2 1 \x0d\x0a\x0d\x0a 当我们要将十进位换成二进位的时候我们只要找到找到该数字对应的栏位(方法是找到两个数值相若的栏位而取其右)在相对的栏位填上1然後用余数继续寻找下一栏位再填1直到再没余数为止最後把其它栏位都填上0就可以了。 \x0d\x0a\x0d\x0a 例如我们要换算220这个十进位数字到二进位 \x0d\x0a\x0d\x0a 我们找到128这栏位是最合适的(因为128的左边是256而220 界乎它们之间取其右则为 128 )。那麽我们在128这栏位上面填上1 \x0d\x0a 继续余数92我们找到64这栏位是最合适的那麽在64这个栏位也填上1 \x0d\x0a 继续余数28我们找到16这栏位是最合适的那麽在16这个栏位也填上1 \x0d\x0a 继续余数12我们找到8这栏位是最合适的那麽在8这个栏位也填上1 \x0d\x0a 继续余数4我们找到4这栏位刚好对应这是最好找到情形了。那麽在4这个栏位也填上1 \x0d\x0a 因为再没有余数了其它都填上0就对了。 \x0d\x0a\x0d\x0a 其结果如下 128 64 32 16 8 4 2 1 \x0d\x0a 1 1 0 1 1 1 0 0 \x0d\x0a\x0d\x0a 如果我们要将二进位换算成十进位利用上面的栏目来做就更加简单了只要将二进位数字从右往左的顺序依次填入栏位那麽将凡是被1所对应的数字相加得出来的和就是十进位数字了。 \x0d\x0a\x0d\x0a 当然啦这是手工的方法啦如果您有二进位的计数器或是使用Windows的小算盘来进行换算更是易如反掌啦。如果您还不知道怎麽用Windows的小算盘点话可以依以下步骤进行 \x0d\x0a\x0d\x0a “开始/程式集/附属应用程式/小算盘” \x0d\x0a 然後拉下“检视”选单确定“工程型”已被选择 \x0d\x0a 然後点选“十进位”输入数值 \x0d\x0a 再点选“二进位”就可以获得换算数值了 \x0d\x0a\x0d\x0a逻辑运算 \x0d\x0a 逻辑运算是Microcomputer \x0d\x0a Architature的必修单元这里我们只需了解几个最基本的运算就可以了一个是AND一个是OR还有一个是NOT。 \x0d\x0a\x0d\x0a 在二进位的AND的运算中只有参与运算的双方都相同才会得出相同的结果(为0或1)否则为0也就是只有双为1的时候其结果才会是1否则为0。其情形是 \x0d\x0a\x0d\x0a 0 AND 0 = 0 \x0d\x0a 1 AND 1 = 1 \x0d\x0a 0 AND 1 = 0 \x0d\x0a 这里您不难看出凡是有1参与的AND运算其结果都会是对方(不管是0或1)而凡是有0参与的AND运算其结果都会是0。 \x0d\x0a\x0d\x0a 在二进位的OR运算中只有双方为0的时候才为0否则都会是1。其情形是 \x0d\x0a 0 OR 0 = 0 \x0d\x0a 1 OR 1 = 1 \x0d\x0a 0 OR 1 = 1 \x0d\x0a 记忆方法凡是有0参与的OR运算其结果都是对方而只要有1参与的OR运算其结果都会是1。 \x0d\x0a\x0d\x0a NOT的运算最简单只有一方参与凡是经过NOT运算其结果都会相反 \x0d\x0a NOT 0 = 1 \x0d\x0a NOT 1 = 0 \x0d\x0a\x0d\x0a 至於其它一些NAND或NOR的运算只不过将NOT和AND及NOT和OR合在一起运算而已。 \x0d\x0a\x0d\x0a 认识IP地址 \x0d\x0a 好了经过刚才一轮“洗脑”之後我们终於要谈到IP地址了。如果您的机器现在是连上网路的且使用的是IP协定(我想您应该这样吧否则怎麽看我的文章呢)。 \x0d\x0a\x0d\x0a 我假设您使用的是Windows系统那麽现在就请您按“开始”然後“执行”再请您用键盘输入“winipcfg”然後“确定”。这时候您应该看到一个视窗跑出来并在“IP位址”栏目上面显示着您机器当前使用的IP号码。或许会是139.175.152.254这样的一组号码不过您知道这组号码的代表着什麽意思吗如果按正常设定来说我可以说这是B \x0d\x0a class的IP号码而且是属於seed.net的拨接网路的。 \x0d\x0a\x0d\x0a 我怎麽会知道哈哈等您看完了後面的文章您还可以告诉我更多呢 \x0d\x0a\x0d\x0a IP Class和识别码 \x0d\x0a\x0d\x0a 正如您所见到的IP地址是四组用“.”分开的十进位数字我们称每组数字为一个“octet”这样的格式被称作“Dotted \x0d\x0a quad”。其实每一组都是一个8-bit的二进位数字(使用十进完全是为了迁就人类的习惯)合共起来就是一个32-bit的IP地址了亦即是IP \x0d\x0a v4 (Version 4) 版本的地址现在IP v6 (使用128-bit的IP地址)也正如火如的开发中。 \x0d\x0a\x0d\x0a 如果您记得我们前面在“网路概论”里面讨论IPX地址的时候所提到的Internal和External地址的话您应该知道Internal地址是用来识别主机的而External地址则是用来识别网路的。IP地址其实也有这样的功能只不过将网路的识别码和主机的识别码放在单一的IP地址上面了。 \x0d\x0a 不过在区分Net ID和Host ID之前先让我们认识一下IP地址的分类(Class): \x0d\x0a\x0d\x0a 如果我们将IP地址全部用二进位来表示的话每个octet都是8-bit如果不够8-bit的话则往左边填上0直到补满为止。这时候你再看看最左边的数字是以什麽为开头的 \x0d\x0a\x0d\x0a 如果是以“0”开头的这IP是一个A Class的IP \x0d\x0a 如果是以“10”开头的这是一个B Class的IP \x0d\x0a 如果是以“110”为开头的则属於C Class的IP \x0d\x0a\x0d\x0a 相信您知道为什麽我们在一开头就学二进位换算了吧如果您不懂得如何换算您也可以死记由1到126开头的IP是A \x0d\x0a Class由128到191开头的IP是B Class 然後由192到223开头的则为C Class。显然易见用二进位来识别IP \x0d\x0a Class比较容易您不觉得吗 \x0d\x0a 好了当我们识得区别IP的Class之後我们就可以知道IP的Net ID 和 Host ID了 \x0d\x0a\x0d\x0a A Class的IP使用最前面一组数字来做Net ID其余三组做Host ID \x0d\x0a B Class的IP使用前面两组数字来做Net ID另两组做Host ID \x0d\x0a C Class的IP使用前面三组数字来做Net ID剩下的一组做Host ID \x0d\x0a\x0d\x0a 从下图中您可以轻易的区分上面三个不同的 IP Class \x0d\x0a\x0d\x0a 为什麽我们需要为IP划分等级呢这是为了当初的 IP 管理需要。 \x0d\x0a\x0d\x0a 如果您要组建一个单一的IP网路那麽您得分配相同的Net ID给所有主机而各主机的Host ID却必须是唯一的也就是说没有任何两个Host \x0d\x0a ID会是一样的。您的网路还要连上internet或其它网路的话那麽您使用的Net \x0d\x0a ID也必须是唯一的否则就会造成突了。好比您家的电话号码如果是1234567(Host ID)的话那麽在相同区号(Net ID)里其他人将不会再使用这个号码然而你不保在其它区号里面也有1234567这个号码哦但如果台北使用了区号02的话台南就不能使用02了。无论如何整个区号加电话号码必须是唯一的。同样的道理整个IP地址(Net \x0d\x0a ID + Host ID)在internet上也必须是唯一的。有一个很特别的Net ID 127 \x0d\x0a (即二进位的01111111)是保留给本机回路测试使用的它不可以被运用於实际的网路中去。 \x0d\x0a 另外有一个规则我们还必须遵守的在指定Host ID的时候换成二进位的话不可以是全部为0也不可以是全部为1。当Host \x0d\x0a ID全部为0的时候指的是网路本身识别码而全部为1的时候则为全域广播地址即发送广播封包使用的地址。 \x0d\x0a\x0d\x0a 很明显A Class网路可分配的Host ID 要比C Class的要多好多倍。让我们算算可以划分的Net \x0d\x0a ID数目和各等级里面的Host ID数目就知道了 \x0d\x0a\x0d\x0a 因为A Class第一个bit必须为0所以我们在头一个otect的8个bit就只有7个bit是可变化的。那麽27 = \x0d\x0a 128再减去0和127这个Net ID不能使用那麽我们实际上最多只能划分126个A Class的网路。而每个A \x0d\x0a Class的网路之下可以分配2的24(能够使用的 Host ID之bit 数目)次方亦即16,777,216个Host \x0d\x0a ID再因为二进位数字不可以全部为0或1所以实际能用的主机位址只有16,777,214个。 \x0d\x0a\x0d\x0a 因为C Class以110开头减去 3 个 bit 所以可划分的C \x0d\x0a Class网路则为2的21(24-3)次方也就是2,097,152个Net ID然後每个Class C之下则可以划分28 = 256 - \x0d\x0a 2 = 254个Host ID。 \x0d\x0a\x0d\x0a 好了这下您自己试试看计算出B Class可以划分多少个Net ID和每个Net ID之下的可用Host \x0d\x0a ID数目。(Tips别忘了ID不能全部为0或1)。然後再来对照下面的 .\x0d\x0a\x0d\x0a二、 子网掩码 \x0d\x0a (1) 子网 \x0d\x0a TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的 \x0d\x0a 设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它 \x0d\x0a\x0d\x0a 不能保证主机地址的唯一性,而是会带来两方面的负担:第一,巨大的网络地 \x0d\x0a 址管理开销;第二,网关寻径急剧膨胀。其中第二点尤为突出,寻径表的膨胀 \x0d\x0a 不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更 \x0d\x0a 重要的是将增加内外部路径刷新时的开销,从而加重网络负担。 \x0d\x0a 因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。仔细分析 \x0d\x0a 发现,网间网规模的增长在内部主要表现为网络地址的增减,因此解决问题的 \x0d\x0a 思路集中在:如何减少网络地址。于是IP网络地址的多重复用技术应运而生。 \x0d\x0a 通过复用技术,使若干物理网络共享同一IP网络地址,无疑将减少网络地址 \x0d\x0a 数。 \x0d\x0a 子网编址(subnet addressing)技术,又叫子网寻径(subnet routing),英 \x0d\x0a 文简称subnetting,是最广泛使用的IP网络地址复用方式,目前已经标准化, \x0d\x0a 并成为IP地址模式的一部分。 \x0d\x0a 一般的,32位的IP地址分为两部分,即网络号和主机号,我们分别把他们叫 \x0d\x0a 做IP地址的“网间网部分”和“本地部分”。子网编址技术将本地部分进一步 \x0d\x0a 划分为“物理网络”部分和“主机”部分,如图: \x0d\x0a 网间网部分 \x0d\x0a 物理网络 \x0d\x0a 主机 \x0d\x0a |←网间网部分→|←────本地部分─────→| \x0d\x0a   其中“物理网络”用于标识同一IP网络地址下的不同物理网络,既是“子 \x0d\x0a 网”。 \x0d\x0a (2) 子网掩码 \x0d\x0a IP协议标准规定:每一个使用子网的网点都选择一个32位的位模式,若位模 \x0d\x0a 式中的某位置1,则对应IP地址中的某位为网络地址(包括网间网部分和物理 \x0d\x0a 网络号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地 \x0d\x0a 址中的一位。例如位模式: \x0d\x0a 11111111 11111111 11111111 00000000 \x0d\x0a 中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个 \x0d\x0a 字节全0,代表对应IP地址中最后的一个字节为主机地址。这种位模式叫做子 \x0d\x0a 网模(subnet mask)或“子网掩码”。 \x0d\x0a 为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩 \x0d\x0a 码,例如B类地址子网掩码(11111111 11111111 11111111 00000000)为: \x0d\x0a 255.255.255.0 \x0d\x0a IP协议关于子网掩码的定义提供一种有趣的灵活性,允许子网掩码中的“0” \x0d\x0a 和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带 \x0d\x0a 来一定困难,并且,极少的路由器支持在子网中使用低序或无序的位,因此在 \x0d\x0a 实际应用中通常各网点采用连续方式的子网掩码。像255.255.255.64和 \x0d\x0a 255.255.255.160等一类的子网掩码不推荐使用。 \x0d\x0a (3) 子网掩码与IP地址 \x0d\x0a 子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。 \x0d\x0a 例如:有一个C类地址为: \x0d\x0a 192.9.200.13 \x0d\x0a 其缺省的子网掩码为: \x0d\x0a 255.255.255.0 \x0d\x0a 则它的网络号和主机号可按如下方法得到: \x0d\x0a ① 将IP地址192.9.200.13转换为二进制 \x0d\x0a 11000000 00001001 11001000 00001101 \x0d\x0a ② 将子网掩码255.255.255.0转换为二进制 \x0d\x0a 11111111 11111111 11111111 00000000 \x0d\x0a ③ 将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分 \x0d\x0a\x0d\x0a 11000000 00001001 11001000 00001101 \x0d\x0a AND \x0d\x0a 11111111 11111111 11111111 00000000 \x0d\x0a 11000000 00001001 11001000 00000000 \x0d\x0a   结果为192.9.200.0,即网络号为192.9.200.0。 \x0d\x0a ④ 将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分 \x0d\x0a\x0d\x0a 11000000 00001001 11001000 00001101 \x0d\x0a AND \x0d\x0a 00000000 00000000 00000000 11111111 \x0d\x0a 00000000 00000000 00000000 00001101 \x0d\x0a 结果为0.0.0.13,即主机号为13。\x0d\x0a\x0d\x0a子网掩码 \x0d\x0a\x0d\x0a   三、 子网划分与实例 \x0d\x0a 根据以上分析,建议按以下步骤和实例定义子网掩码。 \x0d\x0a 1、 将要划分的子网数目转换为2的m次方。如要分8个子网,8=23。 \x0d\x0a 2、 取上述要划分子网数的2的m次方的幂。如23,即m=3。 \x0d\x0a\x0d\x0a 3、 将上一步确定的幂m按高序占用主机地址m位后转换为十进制。如m为3 \x0d\x0a 则是11100000,转换为十进制为224,即为最终确定的子网掩码。如果是C类 \x0d\x0a 网,则子网掩码为255.255.255.224;如果是B类网,则子网掩码为 \x0d\x0a 255.255.224.0;如果是C类网,则子网掩码为255.224.0.0。 \x0d\x0a   在这里,子网个数与占用主机地址位数有如下等式成立:2m=n。其中,m \x0d\x0a 表示占用主机地址的位数;n表示划分的子网个数。 \x0d\x0a 根据这些原则,将一个C类网络分成4个子网。 \x0d\x0a 若我们用的网络号为192.9.200,则该C类网内的主机IP地址就是 \x0d\x0a 192.9.200.1~192.9.200.254(因为全“0”和全“1”的主机地址有特 \x0d\x0a
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式