IP网络中的名字和地址

网络基础(IP、子网掩码、网关、DNS) 文章目录一、ip地址1. 概述2. IPV4&IPV63. 分类4. 子网掩码5. 配置win系统的本地ip地址二、网关三、DNS1. 概述2. nslookup3. ping命令 一、ip地址 1. 概述 ip地址是一个唯一标识,是一段网络编码(二进制),由32位组成,为了便于记忆,将其转化为十进制;如:10010100.00101010.10001001.00010001 转化为 148.42.137.17 ip地址形式 x.x.x.x,每个X范围为 0~255。 2. IPV4&IPV 阅读详情
下载
本部分内容包括:
• IP网络中的命字和地址
• ARP和R A R P
• DNS:名字服务器
• WINS
• 地址发现协议( B O O T P和D H C P )
第4章IP网络中的名字和地址
作者:Mark A. Sportack
本章内容包括:
• IP寻址
• 子网的出现
• 无类域间路由( C I D R )
网络互连的一个重要前提条件是要有一个有效的地址结构,并且所有的互联网络用户都
应遵守这个地址结构。地址结构可以有许多不同的形式、网络地址总是数字式的,但这些数
字可以用二进制表示、十进制表示,甚至用十六进制表示。它们能方便所有的人理解和实现。
地址结构能够高度可扩展,或者专门为一小部分用户团体而设计。
本章考查由I P协议实现的地址结构。在过去2 0年中,随着I P的重大发展,I P地址结构亦发
生了重大变化。本章描述了I P地址结构的演化,解释了一些重要概念,包括分类的I P地址、
无类域间路由,子网地址和掩码以及可变长度子网掩码( V L S M )。
4.1 IP寻址
I n t e r n e t工程任务组( I E T F )—I n t e r n e t和I P的设计师—选择了适合于机器表示的数值来
标识I P网络和主机。因此I n t e r n e t中的每一个网络具有自己独一无二的数值地址—它的网络
地址。网络管理人员要确信网络中的每一台主机有与之对应的惟一的主机编号。
I P的原始版本I P v 4,使用3 2位的二进制地址,每个地址组织成由点分隔的8位数,每个8
位数称为8位位组,二进制数表示对机器很友好,但却不易被用户所理解。因此要提供更直观
的使用十进制表示的地址。应该很好地理解二进制与十进制数值系统之间的关系,因为整个
I P地址结构是基于二进制和十进制的。二进制与十进制数之间的关系将在4 . 1 . 1节中讨论。
3 2位的I P v 4地址意味着I n t e r n e t能支持4 294 967 296个可能的I P v 4地址—这个数量曾经
被认为绰绰有余。但是,这些地址被浪费掉许多,包括分配但没被使用的地址、分配不合适
第二部分命名和寻址
的子网掩码等。其中许多原因及其所带来的影响,会随着读者对I P v 4地址的深入理解而更加
清楚。
注意IP的新版本即将完成。这个版本是IPv6,它有非常不同的地址结构。IPv6地址有
1 2 8位,使用全新的分类,以使地址的使用效率最大化。考虑到I P的新版本广泛使用还
需要一些时间,因此本书所举的例子均是I P v 4地址结构,若要获得I P v 6的更多信息可以
阅读第10章。
4.1.1 二进制和十进制数
以2为基数的数值系统称为二进制数,某一位的1表示的值大小由其位置决定,这非常类
似于十进制系统。最右边的数代表1,次右边的数代表1 0,再次右边的数表示1 0 0,依此类推。
每一个数位表示的值是其右边数位表示数值的1 0倍。
然而,1 0进制数系统提供了1 0个数字表示不同的值( 0~9 ),而二进制数系统仅支持两个有
效数字: 0和1。数值所在位置决定了数的大小。最右位置,在1 0进制中表示1,在二进制中亦
是如此。次右的数位代表2,下一个位置代表4,再下一个代表8等等。每一个位置上的数表示
的值是其右边数位表示数值大小的2倍。
一个二进制数对应的十进制数为:把二进制数中为1的位对应的数值相加起来即可获得。
从数学上讲,I P v 4地址的每个8位位组(共有4个)能表示的最大值为1 0进制2 5 5,若要一个8位的
二进制数等于2 5 5,需要其中的每一位均为1。表4 - 1表示出了二进制与十进制数之间的关系。
表4-1 二进制数( 11111111)和十进制数(2 5 5)
数字8 7 6 5 4 3 2 1
二进制1 1 1 1 1 1 1 1
十进制1 2 8 6 4 3 2 1 6 8 4 2 1
正如读者所看到的,二进制地址中每位的值均为1。因此计算这个二进制数对应的十进制
数可以把各位所表示的数值相加即可,即: 1 2 8 + 6 4 + 3 2 + 1 6 + 8 + 4 + 2 + 1 = 2 5 5。
表4 - 2是另一个二进制与十进制数转化的例子。在这个例子中,从右边数第五位上是0,
这个位置表示的十进制数为1 6;因此,这个二进制数对应的十进制数应比2 5 5少1 6,即:
1 2 8 + 6 4 + 3 2 + 8 + 4 + 2 + 1 = 2 3 9
表4-2 二进制数(111 0 1111)和十进制数(2 3 9)
数字8 7 6 5 4 3 2 1
二进制1 1 1 0 1 1 1 1
十进制1 2 8 6 4 3 2 1 6 8 4 2 1
二进制与十进制数值之间的这个关系是整个I P地址结构的基石。记住在每个I P v 4地址中
有4个二进制8位位组。I P地址结构的其他方面如子网掩码、V L S M以及C I D R均基于这些数值
系统。在读者理解各种I P地址实现方式之前,必须明白这些基本的数值系统及其之间的转化。
4.1.2 IPv4地址格式
I P v 4地址在1 9 8 1年9月实现标准化。人们考虑到当时的计算情况,尽量使其具有前瞻性。
基本的I P地址是分成8位一个单元(称为8位位组)的3 2位二进制数。
30使用第二部分命名和寻址
下载
为了方便人们的使用,对机器友好的二进制地址转变为人们更熟悉的十进制地址。I P地
址中的每一个8位位组用0~2 5 5之间的一个十进制数表示。这些数之间用点( . )隔开,这是所谓
的点-十进制格式。因此,最小的I P v 4地址值为0 . 0 . 0 . 0,最大的地址值为2 5 5 . 2 5 5 . 2 5 5 . 2 5 5,然
而这两个值是保留的,没有分配给私人的端系统。要想知道其中的原因需要考查I E T F实现这
个基本地址结构的方式。
点-十进制数表示的I P v 4地址分成几类,以适应大型、中型、小型的网络。这些类的不同
之处在于用于表示网络的位数与用于表示主机的位数之间的差别。I P地址分成五类,用字母
表示:
• A类地址
• B类地址
• C类地址
• D类地址
• E类地址
每一个I P地址包括两部分:网络地址和主机地址,上面五类地址对所支持的网络数和主
机数有不同的组合。
1. A类地址
设计IPv4 A类地址的目的是支持巨型网络,因为对规模巨大网络的需求很小,因此开发
了这种结构使主机地址数很大,而严格限制可被定义为A类网络的数量。
一个A类I P地址仅使用第一个8位位组表示网络地址。剩下的3个8位位组表示主机地址。
A类地址的第一个位总为0 ,这一点在数学上限制了A类地址的范围小于1 2 7 , 1 2 7 是
6 4 + 3 2 + 1 6 + 8 + 4 + 2 + 1的和。最左边位表示1 2 8,在这里空缺。因此仅有1 2 7个可能的A类网络。
A类地址后面的2 4位( 3个点-十进制数)表示可能的主机地址, A类网络地址的范围从
1 . 0 . 0 . 0到1 2 6 . 0 . 0 . 0。
注意只有第一个8位位组表示网络地址,剩余的3个8位位组用于表示第一个8位位组所表
示网络中惟一的主机地址,当用于描述网络时这些位置为0。
注意技术上讲,1 2 7 . 0 . 0 . 0也是一个A类地址,但是它已被保留作闭环(look back)测
试之用而不能分配给一个网络。
每一个A类地址能支持16 777 214个不同的主机地址,这个数是由2的2 4次方再减去2得到
的。减2是必要的,因为I P把全0保留为表示网络而全1表示网络内的广播地址。网络与主机8
位位组的比例关系如表4 - 3所示。
表4-3 A类地址结构
网络部分主机部分
8位位组1 2 3 4
2. B类地址
设计B类地址的目的是支持中到大型的网络。B类网络地址范围从1 2 8 . 1 . 0 . 0到1 9 1 . 2 5 4 . 0 . 0。
B类地址蕴含的数学逻辑是相当简单的。一个B类I P地址使用两个8位位组表示网络号,另
外两个8位位组表示主机号。B类地址的第1个8位位组的前两位总置为1 0,剩下的6位既可以是
0也可以是1,这样就限制其范围小于等于1 9 1,由1 2 8 + 3 2 + 1 6 + 8 + 4 + 2 + 1得到。
第4章IP网络中的名字和地址使用31
下载
最后的1 6位( 2个8位位组)标识可能的主机地址。每一个B类地址能支持64 534个惟一的主
机地址,这个数由2的1 6次方减2得到。B类网络仅有16 382个。
网络与主机8位位组的比例如表4 - 4所示。
表4-4 B类地址结构
网络部分主机部分
8位位组1 2 3 4
3. C类地址
C类地址用于支持大量的小型网络。这类地址可以认为与A类地址正好相反。A类地址使
用第一个8位位组表示网络号,剩下的3个表示主机号,而C类地址使用三个8位位组表示网络
地址,仅用一个8位位组表示主机号。
C类地址的前3位数为11 0,前两位和为1 9 2 ( 1 2 8 + 6 4 ),这形成了C类地址空间的下界。第三
位等于十进制数3 2,这一位为0限制了地址空间的上界。不能使用第三位限制了此8位位组的
最大值为2 5 5 - 3 2等于2 2 3。因此C类网络地址范围从1 9 2 . 0 . 1 . 0至2 2 3 . 2 5 5 . 2 5 4 . 0。
最后一个8位位组用于主机寻址。每一个C类地址理论上可支持最大2 5 6个主机地址( 0~
2 5 5 ),但是仅有2 5 4个可用,因为0和2 5 5不是有效的主机地址。可以有2 097 150个不同的C类
网络地址。
注意在I P地址中,0和2 5 5是保留的主机地址。I P地址中所有的主机地址为0用于标识
局域网。同样,全为1表示在此网段中的广播地址。
网络和主机8位位组的比例如表4 - 5所示。
表4-5 C类地址结构
网络部分主机部分
8位位组1 2 3 4
4. D类地址
D类地址用于在I P网络中的组播( m u l t i c a s t i n g,又称为多目广播)。D类组播地址机制仅有
有限的用处。一个组播地址是一个惟一的网络地址。它能指导报文到达预定义的I P地址组。
因此,一台机器可以把数据流同时发送到多个接收端,这比为每个接收端创建一个不同的流
有效得多。组播长期以来被认为是I P网络最理想的特性,因为它有效地减小了网络流量。
D类地址空间,和其他地址空间一样,有其数学限制, D类地址的前4位恒为111 0,预置
前3位为1意味着D类地址开始于1 2 8 + 6 4 + 3 2等于2 2 4。第4位为0意味着D类地址的最大值为
1 2 8 + 6 4 + 3 2 + 8 + 4 + 2 + 1为2 3 9,因此D类地址空间的范围从2 2 4 . 0 . 0 . 0到2 3 9 . 2 5 5 . 2 5 5 . 2 5 4。
这个范围看起来有些奇怪,因为上界需要4个8位位组确定。通常情况下,这意味着用于
表示主机和网络的8位位组用来表示一个网络号。这其中是有原因的!因为D类地址不是用于
互联单独的端系统或网络。
D类地址用于在一个私有网中传输组播报文至I P地址定义的端系统组中。因此没有必要把
地址中的8位位组或地址位分开表示网络和主机。相反,整个地址空间用于识别一个I P地址组
( A、B或C类)。现在,提出了许多其他的建议:不需要D类地址空间的复杂性,就可以进行I P
组播。
32使用第二部分命名和寻址
下载
网络和主机8位位组的比例如表4 - 6所示。
表4-6 D类地址结构
主机部分
8位位组1 2 3 4
5. E类地址
E类地址虽被定义但却为I E T F所保留作研究之用。因此I n t e r n e t上没有可用的E类地址。E
类地址的前4位恒为1,因此有效的地址范围从2 4 0 . 0 . 0 . 0至2 5 5 . 2 5 5 . 2 5 5 . 2 5 5,考虑到E类地址作
研究之用且仅在I E T F内部使用,因此,在这里没有必要作进一步讨论了。
6. 系统的低效
历史上,不同类I P地址之间巨大的差异已经浪费了大量的地址。举例来说,一个中等规
模的公司需要3 0 0个I P地址。一个C类地址( 2 5 4个地址)不够用。使用两个C类地址,提供的地
址有富余,但是这样一来,一个公司就有两个不同的域,增加了路由表的尺寸—每一个地
址空间需要一个路由表项(即使它们属于同一个组织)。
另一种选择是, B类地址提供了所有需要的地址,而且在一个域中。但是这样却浪费了
65 234个地址,当一个网络有多于2 5 4个主机时就提供一个B类地址,这种情况太常见了。因
此,B类地址比其他地址更容易耗尽。
或许最浪费的是分配的地址比所需的地址多。任何组织只希望一个地址空间。这些组织
不会验证需求量,因此他们会把大部分不用的地址保留,以备将来之用。
幸运的是,这种情况不会再发生了。因为大量的I P扩充工作主要用于改进3 2位地址空间
的使用效率,三个重要的扩充是:
• 子网掩码
• 可变长子网掩码
• 无类域间路由( C I D R )
这三个扩充用于解决不同的问题,是非常不同的机制。子网掩码,无论是固定长度还是
可变长度,用于在一个物理网络中分成多个逻辑网络。掩码问题会在本章4 . 2 . 2节讨论。
C I D R用于解决原先分类地址策略的低效性。这样可以使路由器更有效地汇聚不同网络地
址成单一的路由表项。
值得注意的一点是这两种机制不是互斥的;二者可以,也应该结合使用。
管理地址空间
I n t e r n e t的稳定性和公共使用的网络地址的惟一性直接相关。因此,需要一些机
制来保证地址的惟一性。以前这个工作交给I n t e r n e t N I C完成。这个组织现在已失去
此功能。由I n t e r n e t编号管理局( I A N A)接替。I A N A后来也已解体,由I C A N N来完
成号码和名字分配工作。I C A N N制定了一套富有竞争性的注册机构,允许商业团体
互相竞争注册I P名字和号码。
最重要的目标是要保证公共使用的地址不能重复。若出现重复会导致I n t e r n e t不
稳定,使传送到重复地址的报文能力受到损害。
虽然一名网络管理员极有可能选择任意没被注册的地址,但是不应该允许这样
做。具有这样地址的计算机只能在其域内正常工作。具有这样地址的互连网络会与
第4章IP网络中的名字和地址使用33
下载
其他合法注册此地址的组织发生冲突。重复的地址会导致路由问题,会破坏I n t e r n e t
正确转发报文的能力。
4.2 子网的出现
I n t e r n e t最初使用两层结构(包括网络地址和主机地址)。图4 - 1示例的是相当小的简单二级
网络,这个层次假设每个点只有一个网络。因此,每个点只需一个到I n t e r n e t的连接。最初,
这种假设是正确的。然而,随着时间的推移,网络计算逐渐成熟和发展。至1 9 8 5年,上面的
假设不再成立,因为一个组织可能会有多个网络,并且单一的I n t e r n e t连接不能满足其要求。
图4-1 Internet最初认为是一个两层结构
随着许多地方开始拥有多个网络,很显然I E T F需要开发某种机制来区别同一个地点内的
多个逻辑网络,作为I n t e r n e t的另一个层次。否则,将没有有效的方法在多个网络之间传送数
据到特定的端系统,这一点可参考图4 - 2中示例。
图4-2 同一地点内多个网络的出现破坏了Internet的双层结构
34使用第二部分命名和寻址
下载
I n t e r n e t
服务器A . 2 服务器A . 3 服务器B . 2 服务器B . 3
路由器B . 1
以太网以太网
路由器A . 1
I n t e r n e t
服务器A . 2 服务器A . 3 服务器B . 2
服务器C . 2
服务器C . 3
服务器C . 4
服务器B . 3
路由器B . 1
以太网以太网
路由器A . 1
令牌环
一种解决方法是分配给每一个逻辑网络(或称为子网)自己的I P地址范围,这种方法可以工
作,但使I P地址的使用相当低效。不用多久,这种方法就会消耗掉所有未分配的地址。并且
路由器中的路由表会扩大,每个网络需要自己的路由表项。可见,需要一种更好的方法。
解决方法是分层地组织这些逻辑网络,并在它们之间路由。从I n t e r n e t的角度看具有多个
逻辑网络的地方应该被看作一个网络。因此,它们应该共享一个共同的I P地址范围。然而,
它们可以有自己惟一的子网号。
4.2.1 分子网
在8 0年代中期,发布了R F C 9 1 7和R F C 9 5 0,这两个文档针对由于相对比较简单的两层结
构I P地址带来的日趋严峻的问题提出了解决方法。这个方法称为分子网( s u b n e t t i n g )。分子网
的设想为:基于I n t e r n e t的层次结构需要一个第三层。随着互联网络技术的成熟,接受和使用
这种方法的人数急剧增加。结果是,大中型组织有多个网络已经很普遍。通常情况是,这些
网络是局域网,每个局域网被看作子网。
在这样多网络的环境中,每个子网通过一个至I n t e r n e t的公共点路由器互联。实际的网络
环境细节对I n t e r n e t没有影响。它们由私有网络组成,能够转发自己内部的报文。因此I n t e r n e t
只需要知道哪个网络连接至I n t e r n e t的路由器,也就是哪个网络的网关。在私有网内部, I P地
址的主机部分能被细分用作标识子网。
R F C 9 5 0中规范的分子网方法能使任何一类( A、B、C ) I P地址再细分为更小的网络号。一
个被子网化的I P地址实际包含三部分:
• 网络号
• 子网号
• 主机号
子网和主机地址是由原先I P地址的主机地址部分分割成两部分得到。因此,用户分子网
的能力依赖于被子网化的I P地址类型。I P地址中主机地址位数越多,就能分得更多的子网和
主机。然而,子网减少了能被寻址主机的数量。实际上,是把主机地址的一部分拿走用于识
别子网号。子网由伪I P地址,也称为子网掩码标识。
子网掩码是可用点-十进制数格式表示的3 2位二进制数,掩码告诉网络中的端系统(包括路
由器和其他主机) I P地址的多少位用于识别网络和子网。这些位被称为扩展的网络前缀。剩下
的位标识子网内的主机,掩码中用于标识网络号的位置为1,主机位置为0。
举例来说,掩码11111111 . 11111111 . 11111111 . 11 0 0 0 0 0 0 ( 2 5 5 . 2 5 5 . 2 5 5 . 1 9 2 )能在子网产生6 4
个可能的主机地址。因此,可以在子网内惟一地标识6 4个设备。实际上只有6 2个地址是可用
的,另两个主机地址是保留的,第一个主机号总保留为识别子网自身,另一个主机号保留作
为子网的广播地址。因此当得到子网内最大可用的主机数时总要减去2,才能得到可用的主机
数。
从数学上讲,可以得到的子网数依赖于被子网化的I P地址所属的类别。每一类地址使用
不同的位数识别网络,因此,每一类地址用于子网化的位数也不同。表4 - 7例示了一个B类I P
地址子网和子网内主机数的情况。当读者仔细阅读表4 - 7时,会注意到最少可用作网络分配的
位数是2,最多是1 4。其中的原因很简单,网络前缀1位只允许定义两个网络: 0和1。子网化
的规则不允许使用全0或者全1的子网地址。这些地址是保留的,因此1位的前缀不能得到可用
第4章IP网络中的名字和地址使用35
下载
的子网地址。
同样原因,2位的网络前缀只会得到2个可用的子网地址。2位的二进制子网地址、域,数
学上的组合为0 0 . 0 1 . 1 0和11,第一种和最后一种组合是无效的,只剩下0 1和1 0可用于识别子
网。
表4-7 B类地址空间的子网化
网络前缀中的位数子网掩码可用的子网地址数每个子网内可用的主机地址数
2 2 5 5 . 2 5 5 . 1 9 2 . 0 2 16 382
3 2 5 5 . 2 5 5 . 2 2 4 . 0 6 8 190
4 2 5 5 . 2 5 5 . 2 4 0 . 0 1 4 4 094
5 2 5 5 . 2 5 5 . 2 4 8 . 0 3 0 2 046
6 2 5 5 . 2 5 5 . 2 5 2 . 0 6 2 1 022
7 2 5 5 . 2 5 5 . 2 5 4 . 0 1 2 6 5 1 0
8 2 5 5 . 2 5 5 . 2 5 5 . 0 2 5 4 2 5 4
9 2 5 5 . 2 5 5 . 2 5 5 . 1 2 8 5 1 0 1 2 6
1 0 2 5 5 . 2 5 5 . 2 5 5 . 1 9 2 1 022 6 2
11 2 5 5 . 2 5 5 . 2 5 5 . 2 2 4 2 046 3 0
1 2 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 4 094 1 4
1 3 2 5 5 . 2 5 5 . 2 5 5 . 2 4 8 8 190 6
1 4 2 5 5 . 2 5 5 . 2 5 5 . 2 5 2 16 382 2
显然,用于标识子网的位数越多,剩下标识主机的位数就越少,反之亦然。
C类地址也能分子网。因为C类地址中2 4位用于网络寻址,因此,只剩下8位用于子网和
主机寻址。C类网络中子网和主机寻址之间的关系如表4 - 8所示。
表4-8 C类地址空间的子网化
网络前缀中的位数子网掩码可用的子网地址数每个子网内可用的主机地址数
2 2 5 5 . 2 5 5 . 2 5 5 . 1 9 2 1 022 6 2
3 2 5 5 . 2 5 5 . 2 5 5 . 2 2 4 2 046 3 0
4 2 5 5 . 2 5 5 . 2 5 5 . 2 4 0 4 094 1 4
5 2 5 5 . 2 5 5 . 2 5 5 . 2 4 8 8 190 6
6 2 5 5 . 2 5 5 . 2 5 5 . 2 5 2 16 382 2
虽然表4 - 7和表4 - 8例示了可能的子网数和子网内主机数之间的关系,但是它们并没有显示
出子网是如何工作的。说明子网如何工作的最好方式是对实际的一个I P地址进行分子网。这
正是下面要讨论的内容。
一个分子网的例子
子网化或许是I P地址结构中最难理解的部分,这主要是因为用二进制数最能说清楚,但
这样却不直观。举例来说,用户要对一个C类地址1 9 3 . 1 6 8 . 1 2 5 . 0分子网。这个地址是基地址,
这也是I n t e r n e t用于计算路由的地址。用户需要把这一地址切分成6个子网,那么至少需要8位
主机地址中的3位用来建造6个惟一的扩展网络前缀。这些地址是0 0 1 . 0 1 0 . 0 11 . 1 0 0 . 1 0 1和11 0。
最后一个8位位组被分成: 3位加到网络号中形成扩展的网络前缀,剩下的5位用于识别主机,
表4 - 9例示了子网是如何形成的。
在表4 - 9中,扩展的网络前缀(包括I P网络地址和子网地址)用黑体表示。子网地址用斜黑
体表示。主机地址用正常字体表示,用一个减号和网络前缀分隔开。这样容易明白一个基本
的I P地址如何被分成子网。
36使用第二部分命名和寻址
下载
表4-9 子网形成
网号# 二进制地址十进制地址
基11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1. 0 0 0 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 0
子网0 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .0 0 0- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 0
子网1 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .0 0 1- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 3 2
子网2 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .0 1 0- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 6 4
子网3 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .0 11- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 9 6
子网4 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .1 0 0- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 1 2 8
子网5 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .1 0 1- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 1 6 0
子网6 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .11 0- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 1 9 2
子网7 11 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 1 . 0 11111 0 1 .111- 0 0 0 0 0 1 9 3 . 1 6 8 . 1 2 5 . 2 2 4
每一个子网号用最后一个8位位组的前三位定义。十进制数为1 2 8、6 4和3 2。每一个子网
的起始I P地址(十进制)在第三列中列出。毫无疑问,这些数以3 2递增(子网号中最右边的位)。
注意子网0和7,虽然在数学上存在,即使在路由器上定义了,在正常环境下也不能使
用,它们的子网地址分别是0 0 0和111。包含所有0或1的地址应视为保留地址不能用作
特定子网地址。全0的地址(无论有少0)保留为识别子网自身,全1的子网地址用于在
子网内的广播。
表4 - 9中的子网地址只是按子网地址域从小到大递增地表示。
每个子网内的主机应该按剩下5位递增的顺序定义。有3 2 种0 、1组合。具有I P 地址
1 9 3 . 1 6 8 . 1 2 5 . 1 9 3的设备是子网6中的第一个主机,剩下的主机地址最高到1 9 3 . 1 6 8 . 1 2 5 . 2 2 3。至
此,子网就被主机填满,不能再加入主机了。
4.2.2 可变长子网掩码(VLSM)
虽然分子网方法是对I P地址结构有价值的扩充,但是它还要受到一个基本的限制:整个
网络只能有一个子网掩码。因此,当用户选择了一个子网掩码(也就意味着每个子网内的主机
数确定了)之后,就不能支持不同尺寸的子网了。任何对更大尺寸子网的要求意味着必须改变
整个网络的子网掩码。毫无疑问,这将是复杂和耗时的工作。
1 9 8 7年针对这一问题提出了解决方法。I E T F发布了RFC 1009。这个文档规范了如何使
用多个子网掩码分子网。表面上,每个子网可以有不同的大小;否则,它们应该有相同的掩
码—它们的网络前缀应相同。因此,新的子网化技术称为V L S M。
V L S M使一个组织的I P地址空间被更有效的使用,使网络管理员能够按子网的特殊需要定
制子网掩码。为了说明这一点,假设一个I P基地址为1 7 2 . 1 6 . 9 . 0,这是一个B类地址。使用1 6
位的网络号。使用6位扩展网络前缀会得到2 2位的扩展网络前缀。从数学上讲,有6 2个可用的
子网地址,每个子网内有1 022个可用的主机地址。
这种子网化策略对需要超过3 0个子网和每个子网内超过5 0 0个主机的组织是合适的。但是,
如果这个组织由一个超过5 0 0个主机的稍大分部,和许多小的只有4 0~5 0个主机设备的分部组
成,那么,地址的大部分就被浪费了。每个组织即使不需要,也被分配一个有1 022个主机地
址的子网。小的分部大约浪费9 5 0个主机地址。因为子网化的网络只能用单一的掩码,且这个
掩码是预定义的固定长度,所以这种地址浪费就不可避免。
子网化是对于“有限地址快速耗尽”这一棘手问题的理想解决办法。使私有网络能够对
第4章IP网络中的名字和地址使用37
下载
主机地址部分重定义为子网和主机,将极大地减少I P地址的浪费。不幸的是,在现实世界中,
对子网的要求是不一样的,希望一个组织或网络把其分成相同大小的子部分很不现实。因此,
使用固定长度的子网掩码会导致子网内I P主机地址的浪费,这一点在前面的例子中已经看到。
注意扩展网络前缀的大小能用斜杠( /)后跟一个网络或子网位数的值表示。因此,
193.168.125.0/27标识一个C类地址,其中27位用于扩展网络前缀。
解决这个矛盾的方法是允许使用不同大小的子网掩码,对I P地址空间进行灵活的子网化。
使用前面的例子,网络管理员能把基地址切分成不同的子网掩码。少数的大组织可以继续使
用2 2位的扩展网络前缀。然而小的组织可以分给2 5或2 6位的扩展网络前缀, 2 5位的前缀能包
含1 2 6个主机子网,2 6位的前缀允许每个子网有6 2个主机,这种方法就是V L S M。
4.3 无类域前路由(CIDR)
C I D R是对I P地址结构最新的扩充。它是随着9 0年代初I n t e r n e t的飞速发展带来的危机而产
生的。
早在1 9 9 2年,I E T F就针对I n t e r n e t的需要和使用开始考虑I n t e r n e t继续扩展的能力。主要考
虑:
• 剩下未分配I P v 4地址的耗尽问题。B类地址的耗尽尤其严重。
• 随着I n t e r n e t的成长,路由表迅速扩大。
所有的迹象表明I n t e r n e t会快速发展且这种势头必将持续,因为更多的商业组织连到
I n t e r n e t上。实际上,I E T F的一些成员甚至预言了“毁灭之日”,是1 9 9 4年3月的某一天,这一
天被认为是B类地址耗尽的时间。缺少任何寻址机制, I n t e r n e t的可扩展性将受到削弱。更坏
的预测是: I n t e r n e t会在“毁灭之日”前路由表将大到使路由机制崩溃。
I n t e r n e t成为自己成功的牺牲品。I E T F决定为了避免I n t e r n e t的崩溃,制定了短期和长期的
解决方案。从长远考虑,惟一可靠的解决方案是开发全新的I P协议,这种协议应具有极大扩
充的地址空间结构。最后,这个方案被称为I P n g ( I P协议:下一代)或更正式一些称为I P版本
6 ( I P v 6 )。
更紧迫、短期的要求是减慢未分配地址的耗尽速度。答案是削除地址分类带来的低效率,
依靠更灵活的地址结构。其结果促成了C I D R计划。1 9 9 3年9月,C I D R计划在RFC 1517、1 5 1 8、
1 5 1 9和1 5 2 0中形成。C I D R的几个关键特性对挽救I P v 4地址空间的耗尽问题是非常有价值的。
这些特性包括:
• 消除地址分类
• 强化的路由汇聚
• 超网化
这些革新对网络产生的效果是削除了基本分类的地址。基于分类的地址可能仍被使用,
但是无类地址(当然,它也有负面影响)更有效。
4.3.1 无类地址
数学上讲, I P v 4地址空间仍保留了大量可获得的地址。不幸的是,这些潜在地址的大部
分被浪费在已分配的地址块中,或称为已分配的有类地址中。消除类别并不需要从那些已分
配的地址空间中把浪费的地址恢复。但它能使剩下将被使用的地址被更有效地使用,表面上
38使用第二部分命名和寻址
下载
看来,这种努力会为I p v 6的开发赢得所需的时间。
4.3.2 强化路由汇聚
C I D R使I n t e r n e t路由器(任何符合C I D R规范的路由器)更有效地汇聚路由信息。换句话说,
路由表中一个表项能够表示许多网络地址空间。这就大大减小了在任何互联网络中所需路由
表的大小,能使网络具有更好的可扩展性。
在1 9 9 4~1 9 9 5年期间,C I D R在I n t e r n e t上被实现,在防止路由表扩大方面马上见效。如果
没有C I D R的实现,I n t e r n e t是否能继续成长将是很令人怀疑的。
4.3.3 超网化
C I D R的另一个优点是超网。超网化就是把一块连续的C类地址空间模拟成一个单一的更
大一些的地址空间。如果得到足够多的连续C类地址,就能够重新定义网络和主机识别域中位
数的分配情况,模拟一个B类地址。
设计超网化的目的是消除由于B类地址快速消耗所带来的压力,为其提供更灵活的方案。
以前基于分类的地址结构带来问题,主要是因为B类和C类地址的巨大差异。需要多于2 5 4个
主机的网络可以有两个选择,任何一个选择都不是所希望的,它们是:
• 使用多个C类地址(在网络域之间进行必要的路由)。
• 上升到一个B类地址,有65 534个主机地址可用。
简单的方法是使用B类地址,虽然这种方法浪费了大量I P地址。
4.3.4 CIDR怎样工作
C I D R是传统地址分配策略的重大突破,它完全抛弃了有类地址,以前的有类地址用8位
表示一个A类网络号,1 6位表示一个B类网络号,2 4位表示一个C类网络号。C I D R用网络前缀
代替了这些类。前缀可以任意长度,而不仅仅是8位,1 6位或2 4位。这允许C I D R根据网络大
小分配网络地址空间,而不是在预定义的网络地址空间中作裁剪。
每一个C I D R网络地址和一个相关位的掩码一起广播,这个掩码识别了网络前缀的长度。
举例来说, 1 9 2 . 1 2 5 . 6 1 . 8 / 2 0标识一个C I D R地址,此地址有2 0位网络地址。I P地址可以是任何
有效的地址,不管那个地址以前是A类、B类还是C类。C I D R路由器看“ /”后的数以决定网
络号。因此,以前的C类地址1 9 2 . 1 2 5 . 6 1 . 8的网络号是1 9 2 . 1 2 5 . 6 1,主机号是8。一个C类地址。
最多可提供2 5 4个主机地址,使用C I D R地址,8位边界的结构限制就不存在了。为了更好地理
解它的工作,有必要把十进制数变成二进制数。
用二进制表示,网络地址部分是11 0 0 0 0 0 0 . 0 1111 0 1 . 0 0 1111 0 1。前面2 0位标识网络号,表
4 - 1 0例示了这个地址被网络号和主机号分割的情况。
表4-10 一个2 0位的C I D R网络号
网络号主机号
二进制地址11 0 0 0 0 0 0 . 11111 0 1 . 0 0 11 11 0 1 . 0 0 0 0 1 0 0 0
注意网络和主机部分的地址分割落在第三个8位位组的中间,没有分配给网络号的位用
于标识主机,因此一个有2 0位网络前缀的I P v 4地址剩下1 2位用于主机识别。数学上讲,可翻
第4章IP网络中的名字和地址使用39
下载
译4 094个可用的主机地址,因为没有一个最左预置的位(以前用于分类之用),实际上整个地
址范围可用作C I D R网络。因此,一个2 0位的网络前缀能分配一个以前保留给A类或B或C类
网络的值。
4.3.5 公共地址空间
假如用户的广域网没有和I n t e r n e t或任何其他网络互联,那么互联地址可以任意选择。通
常,任意选择互联网络地址是短视的和不负责任的行为。
1 9 9 3年RFC 1597发布,提出了一个解决冲突的计划。
4.3.6 RFC 1597和1918
1 9 9 6年9月R F C 1 9 1 8发布,R F C 1 5 9 7作废。然而,新的R F C只对以前的规范作了很小的改
动。最重要的改动是抛弃了A、B、C类。相反,R F C 1 9 1 8提出使用新的C I D R寻址。如上一节
所述, C I D R不使用基于分类的地址。相反,保留作网络号的位由跟在斜杠( / )后的位数标识。
因此,一个A类地址1 0标识为1 0 / 1 8,因为只有8位用于识别网络号。更有意义的是与以前分类
地址中主机地址为8位的整数倍表示不同, C I D R允许主机地址在任何位边界。
• 只有三个网络地址范围保留为内部网络使用。这三个范围分别包括在I P v 4的A、B、C类
地址内,它们是:
1 0 . 0 . 0 . 0 - 1 0 . 2 5 5 . 2 5 5 . 2 5 5
1 7 2 . 1 6 . 0 . 0 - 1 7 2 . 3 1 . 2 5 5 . 2 5 5
1 9 2 . 1 6 8 . 0 . 0 - 1 9 2 . 1 6 8 . 2 5 5 . 2 5 5
这些范围由I A N A保留作私有网使用,R F C 1 5 9 7的一个规定是不能用这些地址访问I n t e r n e t。
使用这些地址范围的公司将来会发现要访问I n t e r n e t时将面临艰难的选择。它们应该对其所有
设备重新编号,和I A N A保持一致,或者使用代理服务器或网络地址转译器(network address
t r a n s l a t o r, N AT )作为I n t r a n e t与I n t e r n e t的中介。使用这样的设备可以使这些公司保持和I n t e r n e t
上的地址不互相冲突。
假如用户选择R F C 1 5 9 7的保留地址作为I n t r a n e t的实现,就必须考虑这个决定的长期影响。
随着时间的推移,用户可能需要通过E x t r a n e t或I n t e r n e t和公司的其他网络互联。无论哪种情况,
都不能保证组成地址的惟一性。
最后,如果实现RFC 1918为私有网保留的地址,就必须保证私有网络内每个设备地址的
惟一性,地址不必全局惟一,但必须局部惟一。
4.4 小结
很好地理解I P地址结构是理解使用I P互联网络的前提条件,本章介绍的基础知识能让读
者更好地理解用I P互联网络的机制。本章列出的结构设备,包括C I D R、子网掩码和V L S M,
正被广泛使用,不能理解它们将削弱支持和设计互联网络的能力。
在本部分的后续章中,将对I P网的命名和寻址的其他方面作进一步讨论。这些方面包括
I P地址如何与局域网的硬件地址相联系,以及用户友好的名字如何解析成I P地址等。
40使用第二部分命名和寻址
下载 
【YOLO系列】YOLOv4详解:模型结构、损失函数、训练方法及代码实现 摘要:YOLOv4在目标检测领域实现了精度与速度的平衡,通过CSPDarknet53骨干网络、SPP+PANet特征融合及CIoU损失函数等创新,在MS COCO数据集达到65.7% AP50,V100显卡实现62FPS实时检测。核心优化包括Mosaic数据增强、自对抗训练和解耦头结构,显著提升小目标检测和遮挡场景鲁棒性。代码实现采用CSP模块和SPP多尺度池化,兼顾计算效率与检测性能,为工业落地提供高效解决方案。(149字) 阅读详情

相关推荐

PTGui使用教程

PTGui使用教程为啥使用ptgui开始使用ptgui 为啥使用ptgui ptgui是一个全景拼接软件,在海思hi3559上做视频拼接的时候,需要拼接参数,这是就需要使用到ptgui,这里可以在该网站下下载ptgui:下载地址 开始使用ptgui 第一步,加载图片,我这里添加了三幅图 然后添加控制点(可以先多对准几次图像,这样会自动生成一些控制点,但是不保证准确),建议控制点不要太密集 点开镜头设置,勾选以下几个选项以及配置好镜头类型,如下图 点开优化器,在高级界面中配置如下参数,最后点

what_wrong的博客 1万+

Linux 网络命名空间

文章目录基础查看网络命名空间添加网络命名空间删除网络命名空间操作进入命名空间查看ip信息启动命名空间网络通信veth 虚拟网卡接口创建一对vethveth绑定到命名空间veth添加ip地址启动vethexample 基础 查看网络命名空间 ip netns list 添加网络命名空间 ip netns add 命名空间 ip netns add test1 删除网络命名空间 ip netns delete 命名空间 ip netns delete test1 操作 进入命名空间查看ip信息

qq_29744347的博客 1725

计算机毕业设计springboot股票模拟交易系统的设计与实现u6m959【附源码+数据库+部署+LW】

选题背景: 随着互联网和金融科技的快速发展,股票市场成为了吸引人们关注和参与的重要领域之一。越来越多的人开始对股票投资感兴趣,希望通过交易股票来获取收益。然而,对于初学者来说,股票市场的复杂性和风险往往让他们望而却步。因此,设计和实现一个股票模拟交易系统,可以帮助初学者更好地理解和掌握股票交易的规则和技巧,提高他们的投资决策能力。 意义: 股票模拟交易系统的设计与实现具有以下几个重要意义: 提供实践机会:股票模拟交易系统为投资者提供了一个实践的平台,使他们能够在真实市场环境下进行模拟交易,了解股票市场的

gp12081的博客 1760

计算机网络之IP篇

首先这是个 IPv4 地址,IPv4 地址有 32 位,一个字节有 8 位,共 4 个字节。其中 127 开头的都属于回环地址,也是 IPv4 的特殊地址,没什么道理,就是人为规定的。而 127.0.0.1 是众多回环地址的一个。之所以不是 127.0.0.2 ,而是 127.0.0.1 ,是因为源码里就是这个定义的,也没什么道理。

songbijian的博客 3461

ROS实践(四)机器人SLAM建图(gmapping)

本文介绍了SLAM技术及其实现方法。SLAM(同步定位与地图构建)让机器人在未知环境中通过传感器数据自主定位并构建地图。文章详细讲解了激光雷达、RGBD相机等常用传感器,以及gmapping和map_server这两个ROS功能包的使用方法。重点阐述了SLAM建图实验步骤:配置gmapping节点参数、启动机器人仿真、运行gmapping节点、使用rviz可视化工具、通过键盘遥控机器人完成地图构建并保存。实验结果表明,该方法能有效实现机器人自主建图功能,为后续导航等应用奠定基础。

qq_1033275663的博客 4336

学Simulink--基础微电网场景实例:基于Simulink的微电网黑启动过程建模与仿真

黑启动(Black Start)是指在全系统停电(无电压、无频率)状态下,微电网依靠内部电源自主恢复供电的能力。🌩️典型场景主网长时间故障自然灾害导致区域停电计划检修后重启❗挑战无参考电压/频率 → 逆变器无法锁相负荷逐级投入 → 需避免过流/过压多电源协调 → 防止环流或失步✅黑启动成功标准在30 秒内恢复关键负荷供电电压/频率稳定在范围内无设备损坏或保护跳闸🎯本文目标:手把手教你使用 Simulink + Simscape + Stateflow 搭建。

amy_mhd的博客 201

网络域名与IP地址的关系

所谓域名(英语:Domain Name),就是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。网域名称系统(DNS,Domain Name System,有时也简称为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数串。 例如,www.wikipedia.org是一个域名,和IP地址208.80.152.2相对应。D

asdaddsd的博客 4106

STM32G0/G4电机控制中三角函数与浮点运算优化实战

三角函数(sin/cos)和浮点运算是电机矢量控制(FOC)的核心基础,直接影响Clark/Park变换、SVPWM及观测器的实时性与精度。在资源受限的MCU上,标准math.h库因无硬件FPU支持而引发严重时序抖动,导致电流环延迟、转矩脉动增大甚至系统复位。通过硬件加速(如STM32G4的CORDIC协处理器)或定制化定点算法(如STM32G0的查表+线性插值),可将sin/cos计算从数十微秒压缩至1–3 μs量级,提升30倍以上效率。该方案广泛适用于BLDC/PMSM驱动、伺服控制及高动态响应嵌入式运

weixin_35751412的博客 110

通过ip地址查看电脑名称

1.利用cmd命令行,输入nslookup 加 ip地址

liujinlong12345的博客 5865

详细指南:如何在TI C2000基于C28x的微控制器上部署FreeRTOS_C语言实现

FreeRTOS是一个小型、开源、实时的嵌入式操作系统内核。它为多种微控制器和处理器提供了支持,包括ARM、AVR、MSP430和PIC等。小型和轻量级:适合资源受限的嵌入式系统。实时性:可以满足严格的实时要求。多任务支持:支持多任务并发执行。内存管理:提供了多种内存管理策略。模块化设计:用户可以根据需要选择所需的功能模块。TI C2000系列微控制器是专为实时控制应用设计的。高性能C28x核:提供了高速的浮点运算能力。丰富的外设:包括PWM、ADC、DAC、通信接口等。低功耗。

qq_38334677的博客 1606

标准测试测试数据STDF学习笔记

本文介绍了STDF(Standard Test Data Format)文件的结构与解析方法。首先详细说明了STDF记录的组成,包括记录头类型(REC_TYP和REC_SUB)、数据类型定义、时间日期格式以及无效数据标识。重点分析了25种主要记录类型的功能、数据内容和出现位置,如FAR、MIR、MRR等关键记录。然后介绍了基于pystdf开源工具的解析方法,包括自带脚本的使用和自编程解析流程,通过事件驱动机制处理数据流。特别指出测试数据是按照PIR→PTR/MPR/FTR→PRR的循环模式组织。文章为ATE

歌颂苦难的行为是无耻的; 1513

网络名称空间netns的用法

ip命令        linux 的强大的网络配置命令‘ip’。 netns可以让一台机器上模拟多个网络设备,是网络虚拟化的重要组成,将不同类型的网络应用隔离。 一个net namespace有自己独立的路由表,iptables策略,设备管理。说来说去,它就是用来隔离的。比如将eth0加入了netns 1,那么netns 2中的应用程序就找不到eth0了。netns 1中的

Ghost_02的博客 1万+

两点调制原理以及RF DAC和PLL SDM两条输入路径理解

特性数据本质原始数字比特流 (0/1)平滑后的预失真波形数据连接对象Σ-Δ调制器 (SDM)的小数输入RF DAC在系统中的角色主调制路径:通过改变PLL分频比产生频率偏移辅助补偿路径:通过RF DAC产生补偿电压,校正PLL失真可否加入延时可以且必须。用于数字时序对齐,对性能无影响。绝对不可以。会导致补偿失配,严重破坏信号频谱。功能目标实现数字域的频率调制确保模拟域的波形和频谱完美因此,在您所描述的这种先进发射机架构中,2-point数据是数字指令,送给SDM;

m0_49540263的博客 604

Java网络编程 —— 使用本地IP地址创建一个网络接口,输出此接口的名字和这个接口对应的所有IP

思路 1、获取本地主机的 InetAddress 对象 2、将本地主机对象传递给 NetworkInterface接口中的getByInetAddress()方法中获取实例对象 3、调用NetworkInterface对象的getInetAddresses()方法获取默认第一个接口的所有IP地址,它的返回类型是Enumeration ...

LaoYe的博客 876

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

搜索网络中的计算机名,怎样搜索一个局域网里全部机器的名字和IP地址

查看局域网内其它电脑名称和IP如果要自己建立这个程序,可以参照从这里开始的步骤。点击任务栏中的“开始”按钮,选择“所有程序”,再选择“附件”,再选择弹出菜单中的“记事本”,打开记事本程序:将以下内容复制到记事本,另存为后缀为.bat的批处理文件:COLOR 0ACLS@ECHO OffTitle 查询局域网内在线电脑IP:send@ECHO off&setlocal enabledelay...

weixin_42299089的博客 1418

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

cmd查看网络计算机名字,cmd通过ip地址查电脑名称怎样做

1、点击任务栏中的“开始”按钮,选择“所有程序”,再选择“附件”,再选择弹出菜单中的“记事本”,打开记事本程序:2、将以下内容复制到记事本,另存为后缀为.bat的批处理文件:COLOR 0ACLS@ECHO OffTitle 查询局域网内在线电脑IP:send@ECHO off&setlocal enabledelayedexpansionECHO 正在获取本机的IP地址,请稍等...fo...

weixin_29061531的博客 2769

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

wireshark中解析IP地址对应域名

Wireshark中给IP地址设置对应名字的方法: 勾选解析网络地址,并通过“编辑解析的名称”进行自定义设置

gibbs_的博客 4153

Ubuntu 24.04.1 LTS 配置静态固定IP地址

ip addr使用该命令查看网卡名字,一般是ens33或者ens32。

wuhao2343的博客 3207

Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip 、获取本地主机的名字

struct ifreq { #define IFHWADDRLEN 6 union { char ifrn_name[IFNAMSIZ]; } ifr_ifrn; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broa

Jayson 博客 1435

网络编程InetAddress类(获取客户端的IP地址和主机名字等)

InetAddress类:

weixin_43956414的博客 673

IP地址与域名

IP地址与域名 在现实生活中,如果要打电话则需要知道对应人的电话号码,如果要寄信则需要知道收信人的地址。在网络中也是这样,需要知道一个设备的位置,则需要使用该设备的IP地址,具体的连接过程由硬件实现,程序员不需要过多的关心。 IP地址是一个规定,现在使用的是IPv4,既由4个0-255之间的数字组成,在计算机内部存储时只需要4个字节即可。在计算机中,IP地址是分配给网卡的,每个网卡有一个唯一的IP...

qq_44858151的博客 501

域名与服务器 ip地址的理解

域名 服务器 ip地址具有怎样的关系呢 通俗的讲,我们访问一个网站就相当于访问一个服务器的文件,如果想要通过自己的域名来访问一个网站,首先得将域名部署到你的服务器上,然后就可以通过域名访问到你服务器上的网页文件。ip地址就相当于你服务器的地址(网络地址)。 换一种方式来比作,域名相当于你的名字,服务器相当于你的家,ip地址就相当于你家的地址。 转载于:https://www.cnblogs.c...

weixin_30845171的博客 430

名字系统的概念和技术

​ 就好比我现在要访问京东的官网,如果是正常人的话,我想肯定是直接搜索京东而不是说直接输入京东的ip(ip可以理解为你家的地址),因为京东的ip相较于他的名字肯定是更加难记的(当然我刘哥也不希望你知道)那么现在就可以将网咯名字系统看作。

2301_76345259的博客 1036

nmblookup - 基于TCP/IP上的NetBIOS客户用于查询NetBIOS名字的程序

总览 SYNOPSIS nmblookup [-M] [-R] [-S] [-r] [-A] [-h] [-B <broadcast address>] [-U <unicast address>] [-d <debug level>] [-s <smb config file>] [-i <NetBIOS scope>][-T]...

weixin_30367543的博客 393

PB获取计算机名字IP等函数

//得到计算机名字 function boolean GetComputerNameA(ref string lpBuffer, ref ulong nSize) library "KERNEL32.DLL" alias for "GetComputerNameA;Ansi" //设置计算机名字 FUNCTION boolean SetComputerNameA(ref string cname)LIBRARY "kernel32.dll" alias for "SetComputerNameA;An

z18866403126的博客 877

如何查看网络邻居中的计算机名称,怎样在局域网中通过IP地址查对方计算机名字 – 手机爱问...

2006-05-31如何建立局域网我们寝室的电脑想连接起来摘自计算机报:各机器都为Xp系统:本文介绍两种在Windows XP操作系统下的组网方案,并介绍Windows XP用于局域网中的各种很有特色的功能。一。 目标:组成家庭局域网:对外,可以连接Internet,允许局域网内的各个计算机共享连接。 对内,可以共享网络资源和设备。二。 采用什么网络形式?家庭网中的计算机可能...

weixin_31693025的博客 1010
上一篇: TCP/IP概述
下一篇: DNS:名字服务器
menuconfig
博客等级 码龄19年 713粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值