2012-10-01 回答
一、子网掩码的计算 tcp/ip网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对ip地址模式的威胁并不是它不能保证主机地址的唯一性,而是会带来两方面的负担:第一,巨大的网络地址管理开销;第二,网关寻径急剧膨胀。其中第二点尤为突出,寻径表的膨胀不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更重要的是将增加内外部路径刷新时的开销,从而加重网络负担。 因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。仔细分析发现,网间网规模的增长在内部主要表现为网络地址的增减,因此解决问题的思路集中在:如何减少网络地址。于是ip网络地址的多重复用技术应运而生。通过复用技术,使若干物理网络共享同一ip网络地址,无疑将减少网络地址数。 子网编址(subnet addressing)技术,又叫子网寻径(subnet routing),英文简称subnetting,是最广泛使用的ip网络地址复用方式,目前已经标准化,并成为ip地址模式的一部分。 32位的ip地址分为两部分,即网络号和主机号,分别把他们叫做ip地址的“网间网部分”和“本地部分”。子网编址技术将“本地部分”进一步划分为“物理网络”部分和“主机”两部分,其中“物理网络”部分用于标识同一ip网络地址下的不同物理网络,常称为“掩码位”、“子网掩码号”,或者“子网掩码id”,不同子网就是依据这个掩码id来识别的。 按ip协议的子网标准规定,每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应ip地址中的某位为网络地址(包括网络部分和子网掩码号)中的一位;若位模式中的某位置0,则对应ip地址中的某位为主机地址中的一位。 例如二进制位模式:11111111 11111111 11111111 00000000中,前三个字节全1,代表对应ip地址中最高的三个字节为网络地址;后一个字节全0,代表对应ip地址中最后的一个字节为主机地址。为了使用的方便,常常使用“点分整数表示法”来表示一个ip地址和子网掩码,例如b类地址子网掩码(11111111 11111111 1111111100000000)为:255.255.25.0。 ip协议关于子网掩码的定义提供一定的灵活性,允许子网掩码中的“0”和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难,并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码。像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用 子网掩码与ip地址结合使用,可以区分出一个网络地址的网络号和主机号。例如:有一个c类地址为:192.9.200.13,按其ip地址类型,它的缺省子网掩码为:255.255.255.0,则它的网络号和主机号可按如下方法得到: 第1步,将ip地址192.9.200.13转换为二进制11000000 00001001 11001000 00001101 第2步,将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111 00000000 第3步,将以上两个二进制数逻辑进行与(and)运算,得出的结果即为网络部分。“11000000 00001001 11001000 00001101”与“11111111 11111111 11111111 00000000”进行“与”运算后得到“11000000 00001001 11001000 00000000”,即“192.9.200.0”,这就是这个ip地址的网络号,或者称“网络地址”。 第4步,将子网掩码的二进制值取反后,再与ip地址进行与(and)运算,得到的结果即为主机部分。如将“00000000 00000000 00000000 11111111(子网掩码的取值)反”与“11000000 00001001 11001000 00001101”进行与运算后得到“00000000 00000000 00000000 00001101”,即“0.0.0.13”,这就是这个ip地址主机号(可简化为“13”)。