社区
CGI
帖子详情
如何让两个IP地址相与?
bronco
2000-08-01 10:05:00
让一个IP地址和子网掩码(另一个IP地址)相与,得到一个网段。如何进行?望提供源码。
如IP地址为:10.25.44.5,子网掩码为255.255.22.10,相与后其结果为:
10.25.4.0
...全文
346
2
打赏
收藏
如何让两个IP地址相与?
让一个IP地址和子网掩码(另一个IP地址)相与,得到一个网段。如何进行?望提供源码。 如IP地址为:10.25.44.5,子网掩码为255.255.22.10,相与后其结果为: 10.25.4.0
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
duhorse
2000-09-27
打赏
举报
回复
取得IP地址,然后用&两个数值相与,OK。
flyby
2000-09-26
打赏
举报
回复
ip地址是一个32位的二进制数
相与有什么困难?
C语言中判断
两个
IPv4地址是否属于同一个子网的代码
问题描述: 现给定
两个
IPv4地址,和一个子网掩码,判断是否属于同一个子网,若属于,输出1,否则输出0。 例如输入: 172.16.1.3 172.16.1.35 255.255.255.224 输出: 0 解决方案: 首先将字符串格式的
IP地址
转化为4字节的
IP地址
,然后使用与(&)运算,分别将
两个
IP地址
与掩码
相与
,若最后的值相同,则为同一个子网,否则不是。 以下函数的作用是将字符串格式的IP转化为4字节的IP(因为是4字节,所以使用int,但不同平台的int所占的字节好像不同哈~不太确定) int _to_int(char * str, int start_idx, int end_i
c#路由选择程序
路由选择算法可以说是在路由器这个网络层就解决的问题了,最近学习了路由选择算法,所以把它实现为程序,方便以后的计算。
下面是思路,一个数据包被发送到路由端,它包含了目的
ip地址
(130.50.15.9),它要选择一个路由器来继续发送,路由器有r1。真实事件中有很多个路由可以选择,这里只简单的判断,能否透过此路由来发送这个数据包。
判断方法:把目的
ip地址
转换为2进制,把路由子网掩码也换成2进制,
两个
值逐位
相与
,最后的结果又换回十进制点分后的
ip地址
,如果网络号和路由器网络地址相同,则可以通过它转发,否则不行
第08章-
IP地址
--分类编址和无分类编址
课程内容如下:
IP地址
的用途、种类和表示方法
IP地址
的分类方法及怎样判别IP属于哪一类
IP地址
的地址块概念理解及地址块范围划分方法
IP地址
中的特殊地址详解
IP地址
中的单播、组播、广播简析分类编址:通过
IP地址
和掩码计算网络地址详解分类编址:基于IP划分子网-子网掩码分类编址:构建超网无分类IP编址:划分子网实战无分类IP编址:可变长子网掩码(VLSM)实战
c#路由选择程序For PPC
路由选择算法可以说是在路由器这个网络层就解决的问题了,最近学习了路由选择算法,所以把它实现为程序,方便以后的计算。
下面是思路,一个数据包被发送到路由端,它包含了目的
ip地址
(130.50.15.9),它要选择一个路由器来继续发送,路由器有r1。真实事件中有很多个路由可以选择,这里只简单的判断,能否透过此路由来发送这个数据包。
判断方法:把目的
ip地址
转换为2进制,把路由子网掩码也换成2进制,
两个
值逐位
相与
,最后的结果又换回十进制点分后的
ip地址
,如果网络号和路由器网络地址相同,则可以通过它转发,否则不行
计算机网络子网划分经典计算
网划分 Internet组织机构定义了五种
IP地址
,用于主机的有A、B、C三类地址。其中A类网络有126个,每个A类网络可能有16,777,214台主机,它们处于同一广播域。而在同一广播域中有这么多结点是不可能的,网络会因为广播通信而饱和,结果造成16,777,214个地址大部分没有分配出去,形成了浪费。而另一方面,随着互连网应用的不断扩大,
IP地址
资源越来越少。为了实现更小的广播域并更好地利用主机地址中的每一位,可以把基于类的IP网络进一步分成更小的网络,每个子网由路由器界定并分配一个新的子网网络地址,子网地址是借用基于类的网络地址的主机部分创建的。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。 1. 子网掩码 RFC 950定义了子网掩码的使用,子网掩码是一个32位的2进制数,其对应网络地址的所有位都置为1,对应于主机地址的所有位都置为0。由此可知,A类网络的缺省的子网掩码是255.0.0.0,B类网络的缺省的子网掩码是255.255.0.0,C类网络的缺省的子网掩码是255.255.255.0。将子网掩码和
IP地址
按位进行逻辑“与”运算,得到
IP地址
的网络地址,剩下的部分就是主机地址,从而区分出任意
IP地址
中的网络地址和主机地址。子网掩码常用点分十进制表示,我们还可以用网络前缀法表示子网掩码,即“/”。如138.96.0.0/16表示B类网络138.96.0.0的子网掩码为255.255.0.0。 子网掩码告知路由器,地址的哪一部分是网络地址,哪一部分是主机地址,使路由器正确判断任意
IP地址
是否是本网段的,从而正确地进行路由。例如,有两台主机,主机一的
IP地址
为222.21.160.6,子网掩码为255.255.255.192,主机二的
IP地址
为222.21.160.73,子网掩码为255.255.255.192。现在主机一要给主机二发送数据,先要判断
两个
主机是否在同一网段。 主机一 222.21.160.6即:11011110.00010101.10100000.00000110 255.255.255.192即:11111111.11111111.11111111.11000000 按位逻辑与运算结果为: 11011110.00010101.10100000.00000000 主机二 222.21.160.73 即:11011110.00010101.10100000.01001001 255.255.255.192即:11111111.11111111.11111111.11000000 按位逻辑与运算结果为:11011110.00010101.10100000.01000000
两个
结果不同,也就是说,两台主机不在同一网络,数据需先发送给默认网关,然后再发送给主机二所在网络。那么,假如主机二的子网掩码误设为255.255.255.128,会发生什么情况呢? 让我们将主机二的
IP地址
与错误的子网掩码相“与”: 222.21.160.73 即:11011110.00010101.10100000.01001001 255.255.255.128即:11111111.11111111.11111111.10000000 结果为 11011110.00010101.10100000.00000000 这个结果与主机的网络地址相同,主机与主机二将被认为处于同一网络中,数据不再发送给默认网关,而是直接在本网内传送。由于两台主机实际并不在同一网络中,数据包将在本子网内循环,直到超时并抛弃。数据不能正确到达目的机,导致网络传输错误。 反过来,如果两台主机的子网掩码原来都是255.255.255.128,误将主机二的设为255.255.255.192,主机一向主机二发送数据时,由于
IP地址
与错误的子网掩码
相与
,误认两台主机处于不同网络,则会将本来属于同一子网内的机器之间的通信当作是跨网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。所以,子网掩码不能任意设置,子网掩码的设置关系到子网的划分。 2. 子网划分与掩码的设置 子网划分是通过借用
IP地址
的若干位主机位来充当子网地址从而将原网络划分为若干子网而实现的。划分子网时,随着子网地址借用主机位数的增多,子网的数目随之增加,而每个子网中的可用主机数逐渐减少。以C类网络为例,原有8位主机位,2的8次方即256个主机地址,默认子网掩码255.255.255.0。借用1位主机位,产生2个子网,每个子网有126个主机地址;借用2位主机位,产生4个子网,每个子网有62个主机地址……每个网中,第一个
IP地址
(即主机部分全部为0的IP)和最后一个IP(即主机部分全部为1的IP)不能分配给主机使用,所以每个子网的可用
IP地址
数为总
IP地址
数量减2;根据子网ID借用的主机位数,我们可以计算出划分的子网数、掩码、每个子网主机数,列表如下: ① 划分子网数 ② 子网位数 ③ 子网掩码(二进制) ④ 子网掩码(十进制) ⑤ 每个子网主机数 ① 1~2 ② 1 ③ 11111111.11111111.11111111.10000000 ④ 255.255.255.128 ⑤ 126 ① 3~4 ② 2 ③ 11111111.11111111.11111111.11000000 ④ 255.255.255.192 ⑤ 62 ① 5~8 ② 3 ③ 11111111.11111111.11111111.11100000 ④ 255.255.255.224 ⑤ 30 ① 9~16 ② 4 ③ 11111111.11111111.11111111.11110000 ④ 255.255.255.240 ⑤ 14 ① 17~32 ② 5 ③ 11111111.11111111.11111111.11111000 ④ 255.255.255.248 ⑤ 6 ① 33~64 ② 6 ③ 11111111.11111111.11111111.11111100 ④ 255.255.255.252 ⑤ 2 如上表所示的C类网络中,若子网占用7位主机位时,主机位只剩一位,无论设为0还是1,都意味着主机位是全0或全1。由于主机位全0表示本网络,全1留作广播地址,这时子网实际没有可用主机地址,所以主机位至少应保留2位。 从上表可总结出子网划分的步骤或者说子网掩码的计算步骤: 2.1 确定要划分的子网数目以及每个子网的主机数目。 2.2 求出子网数目对应二进制数的位数N及主机数目对应二进制数的位数M。 2.3 对该
IP地址
的原子网掩码,将其主机地址部分的前N位置 1或后M位置0 即得出该
IP地址
划分子网后的子网掩码。 例如,对B类网络135.41.0.0/16需要划分为20个能容纳200台主机的网络。因为16<20<32,即:2的4次方<20<2的5次方,所以,子网位只须占用5位主机位就可划分成32个子网,可以满足划分成20个子网的要求。B类网络的默认子网掩码是255.255.0.0,转换为二进制为11111111.11111111.00000000.00000000。现在子网又占用了5位主机位,根据子网掩码的定义,划分子网后的子网掩码应该为11111111.11111111.11111000.00000000,转换为十进制应该为255.255.248.0。现在我们再来看一看每个子网的主机数。子网中可用主机位还有11位,2的11次方=2048,去掉主机位全0和全1的情况,还有2046个主机ID可以分配,而子网能容纳200台主机就能满足需求,按照上述方式划分子网,每个子网能容纳的主机数目远大于需求的主机数目,造成了
IP地址
资源的浪费。为了更有效地利用资源,我们也可以根据子网所需主机数来划分子网。还以上例来说,128<200<256,即2^7<200<2^8,也就是说,在B类网络的16位主机位中,保留8位主机位,其它的16-8=8位当成子网位,可以将B类网络138. 96.0.0划分成256(2^8)个能容纳256-1-1-1=253台(去掉全0全1情况和留给路由器的地址)主机的子网。此时的子网掩码为11111111.11111111.11111111.00000000,转换为十进制为255.255.255.0。 在上例中,我们分别根据子网数和主机数划分了子网,得到了两种不同的结果,都能满足要求,实际上,子网占用5~8位主机位时所得到的子网都能满足上述要求,那么,在实际工作中,应按照什么原则来决定占用几位主机位呢? 在划分子网时,不仅要考虑目前需要,还应了解将来需要多少子网和主机。对子网掩码使用比需要更多的主机位,可以得到更多的子网,节约了
IP地址
资源,若将来需要更多子网时,不用再重新分配
IP地址
,但每个子网的主机数量有限;反之,子网掩码使用较少的主机位,每个子网的主机数量允许有更大的增长,但可用子网数量有限。一般来说,一个网络中的节点数太多,网络会因为广播通信而饱和,所以,网络中的主机数量的增长是有限的,也就是说,在条件允许的情况下,会将更多的主机位用于子网位。 综上所述,子网掩码的设置关系到子网的划分。子网掩码设置的不同,所得到的子网不同,每个子网能容纳的主机数目不同。若设置错误,可能导致数据传输错误。 补充: 子网划分(subnetting)的优点: 1.减少网络流量 2.提高网络性能 3.简化管理 4.易于扩大地理范围 How to Creat Subnets 如何划分子网?首先要熟记2的幂:2的0次方到9次方的值分别为:1,2,4,8,16,32,64,128,256和512.还有要明白的是:子网划分是借助于取走主机位,把这个取走的部分作为子网位.因此这个意味划分越多的子网,主机将越少 Subnet Masks 子网掩码用于辨别
IP地址
中哪部分为网络地址,哪部分为主机地址,有1和0组成,长32位,全为1的位代表网络号.不是所有的网络都需要子网,因此就引入1个概念:默认子网掩码(default subnet mask).A类
IP地址
的默认子网掩码为255.0.0.0;B类的为255.255.0.0;C类的为255.255.255.0 Classless Inter-Domain Routing(CIDR) CIDR叫做无类域间路由,ISP常用这样的方法给客户分配地址,ISP提供给客户1个块(block size),类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28代表多少位为1,最大/32.但是你必须知道的1点是:不管是A类还是B类还是其他类地址,最大可用的只能为30/,即保留2位给主机位 CIDR值: 1.掩码255.0.0.0:/8(A类地址默认掩码) 2.掩码255.128.0.0:/9 3.掩码255.192.0.0:/10 4.掩码255.224.0.0:/11 5.掩码255.240.0.0:/12 6.掩码255.248.0.0:/13 7.掩码255.252.0.0:/14 8.掩码255.254.0.0:/15 9.掩码255.255.0.0:/16(B类地址默认掩码) 10.掩码255.255.128.0:/17 11.掩码255.255.192.0:/18 12.掩码255.255.224.0:/19 13.掩码255.255.240.0:/20 14.掩码255.255.248.0:/21 15.掩码255.255.252.0:/22 16.掩码255.255.254.0:/23 17.掩码255.255.255.0:/24(C类地址默认掩码) 18.掩码255.255.255.128:/25 19.掩码255.255.255.192:/26 20.掩码255.255.255.224:/27 21.掩码255.255.255.240:/28 22.掩码255.255.255.248:/29 23.掩码255.255.255.252:/30 Subnetting Class A,B&C Address 划分子网的几个捷径: 1.你所选择的子网掩码将会产生多少个子网?:2的x次方-2(x代表掩码位,即2进制为1的部分,现在的网络中,已经不需要-2,已经可以全部使用,不过需要加上相应的配置命令,例如CISCO路由器需要加上ip subnet zero命令就可以全部使用了。) 2.每个子网能有多少主机?: 2的y次方-2(y代表主机位,即2进制为0的部分) 3.有效子网是?:有效子网号=256-10进制的子网掩码(结果叫做block size或base number) 4.每个子网的广播地址是?:广播地址=下个子网号-1 5.每个子网的有效主机分别是?:忽略子网内全为0和全为1的地址剩下的就是有效主机地址.最后有效1个主机地址=下个子网号-2(即广播地址-1) 根据上述捷径划分子网的具体实例: C类地址例子:网络地址192.168.10.0;子网掩码255.255.255.192(/26) 1.子网数=2*2-2=2 2.主机数=2的6次方-2=62 3.有效子网?:block size=256-192=64;所以第一个子网为192.168.10.64,第二个为192.168.10.128 4.广播地址:下个子网-1.所以2个子网的广播地址分别是192.168.10.127和192.168.10.191 5.有效主机范围是:第一个子网的主机地址是192.168.10.65到192.168.10.126;第二个是192.168.10.129到192.168.10.190 B类地址例子1:网络地址:172.16.0.0;子网掩码255.255.192.0(/18) 1.子网数=2*2-2=2 2.主机数=2的14次方-2=16382 3.有效子网?:block size=256-192=64;所以第一个子网为172.16.64.0,最后1个为172.16.128.0 4.广播地址:下个子网-1.所以2个子网的广播地址分别是172.16.127.255和172.16.191.255 5.有效主机范围是:第一个子网的主机地址是172.16.64.1到172.16.127.254;第二个是172.16.128.1到172.16.191.254 B类地址例子2:网络地址:172.16.0.0;子网掩码255.255.255.224(/27) 1.子网数=2的11次方-2=2046(因为B类地址默认掩码是255.255.0.0,所以网络位为8+3=11) 2.主机数=2的5次方-2=30 3.有效子网?:block size=256-224=32;所以第一个子网为172.16.0.32, 最后1个为172.16.255.192 4.广播地址:下个子网-1.所以第一个子网和最后1个子网的广播地址分别是172.16.0.63和172.16.255.223 5.有效主机范围是:第一个子网的主机地址是172.16.0.33到172.16.0.62;最后1个是172.16.255.193到172.16.255.222 Variable Length Subnet Masks(VLSM) 可变长子网掩码(VLSM)的作用:节约
IP地址
空间;减少路由表大小.使用VLSM时,所采用的路由协议必须能够支持它,这些路由协议包括RIPv2,OSPF,EIGRP和BGP. 关于更多的VLSM知识,可以去Google.com进行搜索
CGI
2,204
社区成员
4,518
社区内容
发帖
与我相关
我的任务
CGI
Web 开发 CGI
复制链接
扫一扫
分享
社区描述
Web 开发 CGI
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章