127 从基础开始的学习网络--大中型医院的网络规划
场景的分析
此可见医院的网络系统建设主要应满足以下几个方面的需求:
带宽性能的需求,医院网络已经发展成为一个多业务承载平台。不仅要继续承载办公自动化,Web浏览等简单的数据业务,还要承载涉及医院运营的各种业务应用系统数据,以及带宽和时延都要求很高的 IP 电话、视频会议等多媒体业务。因此,数据流量将大大增加,尤其是对核心网络的数据交换能力提出了前所未有的要求,核心层及骨干层必须具有万兆位级带宽和处理性能,才能构筑一个畅通无阻的”高品质”大型医院网,从而适应网络规模扩大,业务量日益增长的需要。所以要建立高速骨干网络,保证各楼宇、各网段之间线速无阻塞的数据交换;
应用服务的需求,当前的网络已经发展成为”以应用为中心”的信息基础平台,网络管理能力的要求已经上升到了业务层次,医院日常业务的处理,如:门诊及住院管理、药品管理、电子病案管理等;良好的兼容性,保障医院各管理系统软件的正常运行
稳定可靠的需求,设备的可靠性设计:医院每天都有庞大的数据量需要传输,难免在某些端口或者设备上出现故障,所以网络的可靠性不仅要考察网络设备是否实现了关键部件的冗余备份,还要从网络设备整体设计架构、处理引擎种类等多方面去考察。业务的可靠性设计:网络设备在故障倒换过程中,是否对业务的正常运行有影响。链路的可靠性设计:以太网的链路安全来自于多路径选择,所以在医院网络建设时,要考虑网络设备是否能够提供有效的链路自愈手段,以及快速重路由协议的支持;
网络服务质量的需求,单纯的提高带宽并不能够有效地保障数据交换的畅通无阻,所以今天的大型医院网络建设必须要考虑到网络应能够智能识别应用事件的紧急和重要程度,如视频、音频、数据流;
灵活性的需求,医院的服务会逐步的趋于完善,未来可能有更多的科室或者部门的加入进来,因此,需要能够灵活的扩充网络容量以及提升网络服务,同时还可以实现多种方式的网络接入,以便适应未来对网络规模的扩大,以及接入模式变化的需求;
网络安全的需求,医院的内部信息主要是以病人的病例、处方和医嘱等信息为主,而医院是有义务保障病人的信息安全,保证病人的病例、处方和医嘱信息不被没有必要的部门或人员查看,同时也要保证信息不能外传。因此,如何保证整个系统的保密性、完整性、可用性、可审核性也是医院信息系统安全性的一部分,对网络病毒、DHCP攻击,ARP攻击甚至是对于黑客的DDoS攻击等的防御,同时能够完成一些基本的对于网络的管理和一些对于网络的实时监控功能。
简单来说就是要安全、可靠、灵活、冗余。
随便去一个省级或者小一点的医院,只有一个感受:人满为患,人山人海,看不见尽头的排队。
由此便知道医院的业务有多么的繁重了,这还只是我们看到了,我们没有看到的视频会议,IP 电话,X 光片、CT 等数据的传输存储等等。
所以根据这几样的需求我们网络在设计时需要考虑到:
带宽性能:使用千兆,设置在骨干区域使用万兆的线路与端口;
稳定可靠:每天大数据量的传输对于端口的压力很大,所以网络的冗余设计、负载均衡不可少;
灵活易扩展:医院的规模随着需求在不断的扩展着,所以此时的设计必须模块化,分层次,否则在未来扩展的时候会十分的混乱;
网络安全:医院每天交易的金额,每天传输的病人数据都是非常私密、非常敏感,很容易招来不法分子的窥视,所以安全十分的重要,如防火墙、Zone Based Firewall、ACL 等等都十分重要(本套实验还未讲到安全部分所以暂时不做过多的要求)
拓扑图的设计
从上述的需求,以及真实的医院结构参照,我们决定使用经典的三层结构网络模型
核心层
接入层
汇聚层
同时从医院的结构布局来看,大致分为 教育培训楼、科研楼、后勤大楼、行政大楼、第一、二、三住院大楼、医技楼、门诊大楼。由此我们做出了这样的拓扑设计(这样的设计是根据我们现有的知识点与能力来设计,例如多园归路、Zone based firewall 等等都没有接触到便不会考虑在内):
拓扑图中各个设备的对应关系如下:
因为医院实在是太大了,我们只是部分实现。
首先从宏观的结构来看,我们对每栋大楼做出这样的设计,如住院大楼与门诊大楼这些都是独立的模块,功能类似,而同层次结构的医技大楼、行政大楼都可以这样设计扩展下去,最后用同样的方法连上核心层的两台核心交换机即可。
我们细看其中的一个模块:
首先汇聚层的 DS1 与 DS2 两台设备,这样下属的设备与外通信时不会出现单点故障的问题,同时两台设备的存在可以做到负载均衡,减小一台设备因为负载过高而出现故障的几率,同时设备之间使用链路捆绑以备防范某个端口出现故障的情况。
该层会实现 vlan 的划分,vtp 的 vlan 管理,mstp 的链路放环与负载均衡, etherchannel 的带宽冗余,同时实现 vrrp 的网关冗余,DHCP 的地址管理,与上层的 OSPF 连接。
接下来的 AS1、2 为网络中继,避免汇聚层接入过多的端口,而该层只用配置 vtp 即可。
PC1 与 PC2 用于模拟终端接入设备,只需配置成 DHCP 的地址获取方式即可。
这便是每个独立模块的功能,其他的模块除了 vlan 划分的不同,IP 地址分配的不同其余的基本上完全相同。
所以这样我们可以很灵活的去扩展各个部分,每个模块,一个模块的改动并不会牵扯到其他模块的使用。
往上看便是核心层,所有的数据包都会通过该层来转发,所以该层只需要安心转发数据包即可,不能分配过多的任务给他,这一层只用实现 OSPF 即可。
继续往上看便是出口路由,出口路由决定着我们与外网的通信,在该层可以做
多园归路(也就是我们可以从两个运营商或者一个运营商申请多个公网地址,做到符合一定条件的出一个口,符合另外条件的走另外一个出口),当然我们还没有学习到所以不实现,
Zone Based Firewall,也就是路由实现的防火墙,来抵挡外部的攻击,当然也可以之间连接防火墙设备,只是价格较为昂贵。
NAT 地址转换,医院中有这么多的设备不可能每个都配置一个公网 IP,所以需要 NAT,在所有内网地址将要访问公网时将其转换为我们从 ISP 申请到的 IP 地址,这样才能使得所有设备访问 Internet。(这部分也未来得及讲)
帧中继或者 VPN 或者二者同时存在,这样能够将该园区网路与其他的分院的网络连接起来,或者是出差办公的人员可以访问内网资源。
而左边的 DS5 部分与独立的模块类似,但是不用做 vlan 的划分,因为该部分用于连接服务器,如 OA 平台,Web 访问服务器等等的使用,当然也可以选择使用公有云了。
右边的 Client 用于模拟在外地需要访问内网的站点。
看着这样复杂的网络这样梳理下来其实并不会太困难了,使用的都是我们所学习过的知识点。
逐步实现
梳理完拓扑结构,每层会实现怎样的功能,我们便可来着手实现了。
实现的第一部便是做好网络地址的规划与划分,不划分子网的网络会混乱,管理不便的。我们根据不同的科室、不同的部门做了这样的地址划分:
还记得如何划分 vlan,如何划分子网吗?此处每个 vlan 可以容纳 30 台主机,因为一个可是差不多也就 20 多个人,所以一个 vlan 划分 30 台主机。每个 vlan 的头几个地址作为网关使用,或者设备之间的连接使用。
我了拓扑图有了功能的描述,我们便先定一个小目标,实现一个模块:
1.DS1 的功能实现:
#汇聚层第一台
##第一个功能 Ethernet channel
DS1(config)#int range e0/0-1
DS1(config-if-range)#sh
DS1(config-if-range)#switch tr en do
DS1(config-if-range)#swit mode tr
DS1(config-if-range)#channel-group 1 mode on
DS1(config-if-range)#ex
DS1(config)#int port-channel 1
DS1(config-if)#switch tr en do
DS1(config-if)#swit mode tr
DS1(config-if)#ex
DS1(config)#int range e0/0-1
DS1(config-if-range)#no sh
DS1(config-if-range)#ex
DS1(config)#no ip cef
DS1(config)#int range e0/2-3
DS1(config-if-range)#switchport trunk en do
DS1(config-if-range)#switchport mode trunk
DS1(config-if-range)#no sh
DS1(config-if-range)#exit
##验证该功能是否实现 show etherchannel summary
##第二个功能 vtp
DS1(config)#vtp mode server
DS1(config)#vtp pruning
DS1(config)#vtp domain menzhen
##验证该功能的实现 show vtp status
##第三个划分vlan
##这是一个体力活,没有思路而言,只实现部分
DS1(config)#vlan 2
DS1(config-vlan)#name guke
DS1(config-vlan)#exit
DS1(config)#vlan 3
DS1(config-vlan)#name neike
DS1(config-vlan)#exit
DS1(config)#vlan 4
DS1(config-vlan)#name waike
DS1(config-vlan)#exit
DS1(config)#vlan 5
DS1(config-vlan)#name pifu
DS1(config-vlan)#exit
DS1(config)#vlan 6
DS1(config-vlan)#name zhongyi
DS1(config-vlan)#exit
DS1(config)#vlan 7
DS1(config-vlan)#name yanke
DS1(config-vlan)#exit
DS1(config)#vlan 8
DS1(config-vlan)#name fangshe
DS1(config-vlan)#exit
##第四打开端口 trunk 模式
DS1(config)#int range e0/2-3
DS1(config-if-range)#switchport trunk en do
DS1(config-if-range)#switchport mode trunk
DS1(config-if-range)#no sh
DS1(config-if-range)#exit
##第五开启DHCP以及地址的排除
#每个科室都创建一个地址池,每个地址池的头两个作为两组 VRRP 的虚拟网关,一个作为 SVI 接口地址
DS1(config)#service dhcp
DS1(config)#ip dhcp pool guke
DS1(dhcp-config)#network 172.16.0.32 255.255.255.224
DS1(dhcp-config)#default-router 172.16.0.33 255.255.255.224
DS1(dhcp-config)#exit
DS1(config)#int vlan 2
DS1(config-if)#ip address 172.16.0.34 255.255.255.224
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#
DS1(config)#ip dhcp pool neike
DS1(dhcp-config)#network 172.16.0.64 255.255.255.224
DS1(dhcp-config)#default-router 172.16.0.65 255.255.255.224
DS1(dhcp-config)#exit
DS1(config)#int vlan 3
DS1(config-if)#ip address 172.16.0.66 255.255.255.224
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#
DS1(config)#ip dhcp pool waike
DS1(dhcp-config)#network 172.16.0.96 255.255.255.224
DS1(dhcp-config)#default-router 172.16.0.97 255.255.255.224
DS1(dhcp-config)#exit
DS1(config)#int vlan 4
DS1(config-if)#ip address 172.16.0.98 255.255.255.224
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#
DS1(config)#ip dhcp pool pifu
DS1(dhcp-config)#network 172.16.0.128 255.255.255.224
DS1(dhcp-config)#default-router 172.16.0.129 255.255.255.224
DS1(dhcp-config)#exit
DS1(config)#int vlan 5
DS1(config-if)#ip address 172.16.0.130 255.255.255.224
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#
DS1(config)#ip dhcp pool zhongyi
DS1(dhcp-config)#network 172.16.0.160 255.255.255.224
DS1(dhcp-config)#default-router 172.16.0.161 255.255.255.224
DS1(dhcp-config)#exit
DS1(config)#int vlan 6
DS1(config-if)#ip address 172.16.0.162 255.255.255.224
DS1(config-if)#no sh
DS1(config-if)#exit
##很多地址都作为了网关的需要所以需要排除掉,以防地址冲突
DS1(config)#ip dhcp excluded-add 172.16.0.33
DS1(config)#ip dhcp excluded-add 172.16.0.34
DS1(config)#ip dhcp excluded-add 172.16.0.35
DS1(config)#ip dhcp excluded-add 172.16.0.65
DS1(config)#ip dhcp excluded-add 172.16.0.97
DS1(config)#ip dhcp excluded-add 172.16.0.129
DS1(config)#ip dhcp excluded-add 172.16.0.161
DS1(config)#ip dhcp excluded-add 172.16.0.193
DS1(config)#ip dhcp excluded-add 172.16.0.225
DS1(config)#
DS1(config)#ip dhcp excluded-add 172.16.0.66
DS1(config)#ip dhcp excluded-add 172.16.0.98
DS1(config)#ip dhcp excluded-add 172.16.0.130
DS1(config)#ip dhcp excluded-add 172.16.0.162
DS1(config)#ip dhcp excluded-add 172.16.0.194
DS1(config)#ip dhcp excluded-add 172.16.0.226
DS1(config)#
DS1(config)#ip dhcp excluded-add 172.16.0.67
DS1(config)#ip dhcp excluded-add 172.16.0.99
DS1(config)#ip dhcp excluded-add 172.16.0.131
DS1(config)#ip dhcp excluded-add 172.16.0.163
DS1(config)#ip dhcp excluded-add 172.16.0.195
DS1(config)#ip dhcp excluded-add 172.16.0.227
DS1(config)#
##第六 mstp的设置
##设置两个 mst 组管理两部分 vlan,1 组此设备为次根,2组此设备为主根,在 DS2 中反过来
##这样的灵活应用可以做到负载均衡的作用
DS1(config)#spanning-tree mode mst
DS1(config)#spanning-tree mst conf
DS1(config-mst)#name keshi
DS1(config-mst)#instance 1 vlan 2-4
DS1(config-mst)#instance 2 vlan 5-6
DS1(config-mst)#ex
DS1(config)#spanning-tree mst 1 priority 4096
DS1(config)#spanning-tree mst 2 priority 8192
DS1(config)#
##第七 vrrp的设置
## vrrp 也可以与 mstp 的做法类似,一个 vlan 两个组,一个此设备 Master,一个 DS2 为 Master
DS1(config)#int vlan 2
DS1(config-if)#vrrp 1 ip 172.16.0.33
DS1(config-if)#vrrp 1 priority 150
DS1(config-if)#vrrp 1 preempt
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#int vlan 3
DS1(config-if)#vrrp 2 ip 172.16.0.65
DS1(config-if)#vrrp 2 priority 150
DS1(config-if)#vrrp 2 preempt
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#int vlan 4
DS1(config-if)#vrrp 3 ip 172.16.0.97
DS1(config-if)#vrrp 3 priority 150
DS1(config-if)#vrrp 3 preempt
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#int vlan 5
DS1(config-if)#vrrp 4 ip 172.16.0.129
DS1(config-if)#vrrp 4 priority 150
DS1(config-if)#vrrp 4 preempt
DS1(config-if)#no sh
DS1(config-if)#exit
DS1(config)#int vlan 6
DS1(config-if)#vrrp 5 ip 172.16.0.161
DS1(config-if)#vrrp 5 priority 150
DS1(config-if)#vrrp 5 preempt
DS1(config-if)#no sh
DS1(config-if)#exit
如此我们便配置好了 DS1,然后我们便来配置 DS2,DS2 与 DS1 的功能相同,但是有一些细微的差别,例如上文所说的 mstp,vrrp 等
##汇聚层第2台
##第一个功能 Ethernet channel
DS2(config)#int range e0/0-1
DS2(config-if-range)#sh
DS2(config-if-range)#switch tr en do
DS2(config-if-range)#swit mode tr
DS2(config-if-range)#channel-group 1 mode on
DS2(config-if-range)#ex
DS2(config)#int port-channel 1
DS2(config-if)#switch tr en do
DS2(config-if)#swit mode tr
DS2(config-if)#ex
DS2(config)#int range e0/0-1
DS2(config-if-range)#no sh
DS2(config-if-range)#ex
DS2(config)#no ip cef
DS2(config)#int range e0/2-3
DS2(config-if-range)#switchport trunk en do
DS2(config-if-range)#switchport mode trunk
DS2(config-if-range)#no sh
DS2(config-if-range)#exit
##验证 show etherchannel summary
##第二个功能 vtp
DS2(config)#vtp mode server
DS2(config)#vtp pruning
DS2(config)#vtp domain menzhen
##第四打开端口trunk模式
DS2(config)#int range e0/2-3
DS2(config-if-range)#switchport trunk en do
DS2(config-if-range)#switchport mode trunk
DS2(config-if-range)#no sh
DS2(config-if-range)#exit
##第五定义各个vlan的第二个网关
DS2(config)#int vlan 2
DS2(config-if)#ip address 172.16.0.35 255.255.255.224
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 3
DS2(config-if)#ip address 172.16.0.67 255.255.255.224
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 4
DS2(config-if)#ip address 172.16.0.99 255.255.255.224
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 5
DS2(config-if)#ip address 172.16.0.131 255.255.255.224
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 6
DS2(config-if)#ip address 172.16.0.163 255.255.255.224
DS2(config-if)#no sh
DS2(config-if)#exit
##第六 mstp的设置
DS2(config)#spanning-tree mode mst
DS2(config)#spanning-tree mst conf
DS2(config-mst)#name keshi
DS2(config-mst)#instance 1 vlan 2-4
DS2(config-mst)#instance 2 vlan 5-6
DS2(config-mst)#ex
DS2(config)#spanning-tree mst 1 priority 8192
DS2(config)#spanning-tree mst 2 priority 4096
##第七 vrrp的设置
DS2(config)#int vlan 2
DS2(config-if)#vrrp 1 ip 172.16.0.33
DS2(config-if)#vrrp 1 priority 100
DS2(config-if)#vrrp 1 preempt
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 3
DS2(config-if)#vrrp 2 ip 172.16.0.65
DS2(config-if)#vrrp 2 priority 100
DS2(config-if)#vrrp 2 preempt
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 4
DS2(config-if)#vrrp 3 ip 172.16.0.97
DS2(config-if)#vrrp 3 priority 100
DS2(config-if)#vrrp 3 preempt
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 5
DS2(config-if)#vrrp 4 ip 172.16.0.129
DS2(config-if)#vrrp 4 priority 100
DS2(config-if)#vrrp 4 preempt
DS2(config-if)#no sh
DS2(config-if)#exit
DS2(config)#int vlan 6
DS2(config-if)#vrrp 5 ip 172.16.0.161
DS2(config-if)#vrrp 5 priority 100
DS2(config-if)#vrrp 5 preempt
DS2(config-if)#no sh
DS2(config-if)#exit
这样我们便配置好了 DS2 的所有功能,配置相应的功能之后大家记得验证哦。
这是 AS1 与 AS2 的配置:
##接入层第一台
##第一个功能开启vtp
AS1#conf t
AS1(config)#hostname AS1
AS1(config)#vtp mode client
AS1(config)#vtp pruning
AS1(config)#vtp domain menzhen
AS1(config)#
##第二个功能以端口划分给vlan
AS1(config)#int range e0/2-3
AS1(config-if-range)#switch mode acc
AS1(config-if-range)#switch acc vlan 2
AS1(config-if-range)#no sh
AS1(config-if-range)#ex
AS1(config)#int e1/0
AS1(config-if)#switch mode acc
AS1(config-if)#switch acc vlan 3
AS1(config-if)#no sh
AS1(config-if)#ex
AS1(config)#
##第三 mstp的设置
AS1(config)#spanning-tree mode mst
AS1(config)#spanning-tree mst conf
AS1(config-mst)#name keshi
AS1(config-mst)#instance 1 vlan 2-4
AS1(config-mst)#instance 2 vlan 5-6
AS1(config-mst)#ex
AS1(config)#spanning-tree mst 1 priority 4096
AS1(config)#spanning-tree mst 2 priority 8192
##接入层第二台
##第一个功能开启vtp
AS2#conf t
AS2(config)#hostname AS2
AS2(config)#vtp mode client
AS2(config)#vtp pruning
AS2(config)#vtp domain menzhen
AS2(config)#
##第二个功能以端口划分给vlan
AS2(config)#int range e0/2-3
AS2(config-if-range)#switch mode acc
AS2(config-if-range)#switch acc vlan 2
AS2(config-if-range)#no sh
AS2(config-if-range)#ex
AS2(config)#int e1/0
AS2(config-if)#switch mode acc
AS2(config-if)#switch acc vlan 3
AS2(config-if)#no sh
AS2(config-if)#ex
AS2(config)#
##第三 mstp的设置
AS2(config)#spanning-tree mode mst
AS2(config)#spanning-tree mst conf
AS2(config-mst)#name keshi
AS2(config-mst)#instance 1 vlan 2-4
AS2(config-mst)#instance 2 vlan 5-6
AS2(config-mst)#ex
AS2(config)#spanning-tree mst 2 priority 4096
AS2(config)#spanning-tree mst 1 priority 8192
只需要在 PC1 的响应端口使用 ip add dhcp 命令,能获取到正确范围的 IP 地址,我们的功能便完全实现了,这就是一个独立的模块所有的功能。
你能独立配置另外一个模块吗?
当另外一个模块也实现的时候,这两个模块是独立,没有联系,此时我们需要配置核心层将他们连接起来,这样便能实现全网通了。
能按照我们拓扑图中所绘制的 OSPF 的区域将该功能实现吗?
需要做的便是为每个相连的端口配置 IP 地址,然后配置 OSPF 即可
##参考配置
##DS1
DS1(config)#int e1/0
DS1(config-if)#no switch
DS1(config-if)#ip add 172.16.0.2 255.255.255.252
DS1(config-if)#no sh
DS1(config-if)#ex
DS1(config)#
DS1(config)#int e1/1
DS1(config-if)#no switch
DS1(config-if)#ip add 172.16.0.10 255.255.255.252
DS1(config-if)#no sh
DS1(config-if)#ex
DS1(config)#router ospf 1
DS1(config-router)#network 0.0.0.0 0.0.0.0 area 1
##DS2
DS2(config)#int e1/0
DS2(config-if)#no switch
DS2(config-if)#ip add 172.16.0.6 255.255.255.252
DS2(config-if)#no sh
DS2(config-if)#ex
DS2(config)#
DS2(config)#int e1/1
DS2(config-if)#no switch
DS2(config-if)#ip add 172.16.0.14 255.255.255.252
DS2(config-if)#no sh
DS2(config-if)#ex
DS2(config)#router ospf 1
DS2(config-router)#network 0.0.0.0 0.0.0.0 area 1
这是 CS1 的参考配置,能参照着做出 CS2 的配置吗?
conf t
host CS1
int e0/0
no swit
no ip add
sh
channel-group 1 mode on
ex
int e0/1
no swit
no ip add
sh
channel-group 1 mode on
ex
int port-channel 1
no swit
ip address 172.16.10.1 255.255.255.252
no sh
ex
int range e0/0-1
no sh
ex
no ip cef
conf t
int e0/2
no switch
ip add 172.16.0.1 255.255.255.252
no sh
ex
int e0/3
no switch
ip add 172.16.0.5 255.255.255.252
no sh
ex
int e1/0
no switch
ip add 172.16.3.1 255.255.255.252
no sh
ex
int e1/1
no switch
ip add 172.16.3.5 255.255.255.252
no sh
ex
router ospf 1
network 172.16.10.6 0.0.0.0 area 0
network 172.16.0.1 0.0.0.0 area 1
network 172.16.0.5 0.0.0.0 area 1
推荐阅读
-
127 从基础开始的学习网络--大中型医院的网络规划
-
使用 winzip 生成的扩展名为 -ZIP 的压缩文件通常使用".zip "扩展名,其 MIME 格式为 application/zip。(推荐学习:phpstorm) 目前,ZIP 格式属于几种主流压缩格式之一,其竞争对手包括 RAR 格式和开源的 7z 格式。 从性能对比来看,RAR 和 7z 格式比 ZIP 格式压缩率更高,而 7-Zip 由于提供免费压缩工具而逐渐在更多领域得到应用。 微软从 Windows ME 操作系统开始就内置了对 zip 格式的支持,即使用户没有在电脑上安装解压软件,也可以打开和创建 zip 格式的压缩文件,OS X 和流行的 Linux 操作系统也提供了类似的 zip 格式支持。 因此,如果要在网络上传播和分发文件,zip 格式往往是最常见的选择。
-
[姿势估计] 实践记录:使用 Dlib 和 mediapipe 进行人脸姿势估计 - 本文重点介绍方法 2):方法 1:基于深度学习的方法:。 基于深度学习的方法:基于深度学习的方法利用深度学习模型,如卷积神经网络(CNN)或递归神经网络(RNN),直接从人脸图像中学习姿势估计。这些方法能够学习更复杂的特征表征,并在大规模数据集上取得优异的性能。方法二:基于二维校准信息估计三维姿态信息(计算机视觉 PnP 问题)。 特征点定位:人脸姿态估计的第一步是通过特征点定位来检测和定位人脸的关键点,如眼睛、鼻子和嘴巴。这些关键点提供了人脸的局部结构信息,可用于后续的姿势估计。 旋转表示:常见的旋转表示方法包括欧拉角和旋转矩阵。欧拉角通过三个旋转角度(通常是俯仰、偏航和滚动)描述头部的旋转姿态。旋转矩阵是一个 3x3 矩阵,表示头部从一个坐标系到另一个坐标系的变换。 三维模型重建:根据特征点的定位结果,三维人脸模型可用于姿势估计。通过将人脸的二维图像映射到三维模型上,可以估算出人脸的旋转和平移信息。这就需要建立人脸的三维模型,然后通过优化方法将模型与特征点对齐,从而获得姿势估计结果。 特征点定位 特征点定位是用于检测人脸关键部位的五官基础部分,还有其他更多的特征点表示方法,大家可以参考我上一篇文章中介绍的特征点检测方案实践:人脸校正二次定位操作来解决人脸校正的问题,客户在检测关键点的代码上略有修改,坐标转换部分客户见上图 def get_face_info(image). img_copy = image.copy image.flags.writeable = False image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) results = face_detection.process(image) # 在图像上绘制人脸检测注释。 image.flags.writeable = True image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) box_info, facial = None, None if results.detections: for detection in results. for detection in results.detections: mp_drawing.Drawing.detection = 无 mp_drawing.draw_detection(image, detection) 面部 = detection.location_data.relative_keypoints 返回面部 在上述代码中,返回的数据是五官(6 个关键点的坐标),这是用 mediapipe 库实现的,下面我们可以尝试用另一个库:dlib 来实现。 使用 dlib 使用 Dlib 库在 Python 中实现人脸关键点检测的步骤如下: 确保已安装 Dlib 库,可使用以下命令: pip install dlib 导入必要的库: 加载 Dlib 的人脸检测器和关键点检测器模型: 读取图像并将其灰度化: 使用人脸检测器检测图像中的人脸: 对检测到的人脸进行遍历,并使用关键点检测器检测人脸关键点: 显示绘制了关键点的图像: 以下代码将参数 landmarks_part 添加到要返回的关键点坐标中。
-
41 个下载免费 3D 模型的最佳网站-使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 17. Clara.io Clara.io 是一个创建 3D 内容的全球平台,也是一个培养新 3D 艺术家的社区。Clara.io 提供+100,000个免费的3D模型,包括OBJ,Blend,STL,FBX,DAE,Babylon.JS,Three.JS格式,用于 Clara.io,Unity 3D,Blender,Sketchup,Cinema 4D,3DS Max和Maya。 使用说明:免费,标准和专业帐户仅供个人使用,如果您需要将 clara.io 用于商业用途,请与销售团队联系。 18. 3DExport 3DExport是一个市场,您可以在其中购买和销售用于CG项目的3D模型,3D打印模型和纹理。它提供15 +不同的3D格式供下载,如3DS MAX(.max),Cinema4D(.c4d),Maya(.mb,.ma),Lightwave(.lwo),Softimage(.xsi),Wavefront OBJ(.obj),Autodesk FBX(.fbx)等。它还提供15种不同的语言! 使用说明:免费下载仅供个人和非商业用途。 19. 3D Warehouse 3D Warehouse是一个开放的库,允许用户共享和下载SketchUp 3D模型,用于建筑,设计,施工和娱乐!任何人都可以免费制作,修改和重新上传内容到3D仓库,您可以找到任何您能想到的东西,如家具,电子产品,室内产品等。 使用说明:3D Warehouse中的所有模型都是免费的,因此任何人都可以下载文件以用于SketchUp甚至其他软件,如AutoCAD,Revit和ArchiCAD。 20. CadNav.com CadNav是CGI平面设计师和CAD / CAM / CAE工程师的在线3D模型库,我们提供超过50000 +免费3D模型和CAD模型下载。在CadNav网站上,您可以下载高质量的多边形网格3D模型,3D CAD实体对象,纹理,Vray材料,3D作品,CAD图纸等。 使用说明:免费下载仅供个人和非商业用途。 21. All3dfree.net 就像网站名称一样,它提供免费的3D模型,还包括Vray材料,CAD块,2d和3d纹理集合,无需注册即可免费下载。它是不断更新的,因此您可以查找或请求3DS,MAX,C4D,skp,OBJ,FBX,MTL等格式的模型。 使用说明:所有资源均不允许用于商业用途,否则您将承担责任。 22. Hum3D 自2005年以来,Hum3D帮助来自3多个国家的80D艺术家节省3D建模时间,并制作逼真的3D模型,用于电影,视频游戏,AR应用程序和可视化。所有模型均由首席3D艺术家进行验证,他们检查其是否符合专业要求和最新的3D建模标准。 使用说明:免费下载仅供个人和非商业用途。 23. Artist-3D.com 艺术家-3D 库存的免费 3D 模型下载按通用类别排序。它为人体解剖学、汽车、家具、火箭、卫星等模型提供 AutoDesk 3DS Max 格式。您还可以在浏览他们的网站时找到教程和类似类型的建模。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 24. Free the models 就像本网站的标题一样,它为3d应用程序和3d游戏引擎提供免费的内容模型。您可以为您的任何项目找到许多有趣且有用的模型!它提供3ds,wavefront,bryce,poser,lightwave,md2和unity3d格式的模型。还有一个很棒的纹理集合,可以在您最喜欢的建模和渲染程序中使用。 使用说明:您从这里下载的所有内容都可以免费使用,除非它不能包含在另一个免费的网络或CD收藏中,也不能单独出售。否则,您可以在商业游戏,3D应用程序或渲染作品中使用它。您不必提供信用,但如果您这样做,那就太好了。 25. Resources.blogscopia 本网站由一家名为Scopia的公司创建。他们制作3D图像和视频,您可以找到许多为CGI工作的信息架构设计的模型,所有这些都可以在现实生活中使用。您可以免费下载它们,但是,如果您想一次下载它们,您可以支付 3 到 9 欧元。 使用说明:您可以免费下载模型部分的所有文件。每个压缩文件都包含您也可以在此处找到的许可证。基本上,您可以对文件执行任何操作。唯一的限制是不归属于Scopia的重新分发。 26.ambientCG 1000+公共领域PBR材料适合所有人!环境CG是使用许多不同的方法和资产类型创建的,例如照片纹理(PBR),贴花(PBR),图集(PBR),照片纹理(普通),物质存档(SBSAR),雕刻画笔,3D模型和地形。您可以在所有项目中*使用它们! 使用说明:在 ambientCG 上提供下载的所有 PBR 材料、画笔、照片和 3D 模型均根据知识共享 CC0 1.0 通用许可提供。您可以复制、修改、分发和执行作品,即使是出于商业目的,也无需征得许可。信用将不胜感激。 不要满足于平庸的大理石纹理 - 立即使用我们的免费PBR大理石纹理升级您的3D设计。 27.Pixar One Twenty Eight 这是一个提供官方动画行业经典纹理的网站:皮克斯,创建于 1993 年,该纹理库包括 128 个重复纹理,现在免费提供。 它包含您来到的纹理,包括砖块和动物毛皮。肯定会有一些你可以使用的东西。 使用说明:皮克斯动画工作室的《Pixar One Twenty Eight》根据知识共享署名4.0国际许可协议进行许可。即使出于商业目的,您也可以重新混合、调整和构建您的作品,只要您以相同的条款对新创作进行信用和许可。 访问数以千计的免费纹理并提升您的设计游戏 - 立即开始下载! 28. 3DXO 即使有近 620 个免费贴纸可供下载,3DXO 也不是最大的资源,但它的内容非常有用,不需要注册。无论是简单的墙壁或地板,还是一些奇怪的小东西,您都需要的纹理都可以在此网站上看到。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 29. 3DModelsCC0 3DModelsCC0 与其他产品的不同之处在于它包含超过 250+ 个高质量 3D 模型,并且本网站上的所有内容都是免费的,完全是公共领域!使用我们的模型时无需信用或归属! 使用说明:为每个人提供完全免费的公共领域内容。 30.Sketch up texture club Sketchup Texture Club是一个非营利性的教育和信息门户网站,由3D社区的图像促进协会管理,特别强调面向学生和建筑和室内设计专业人士的可视化和渲染技术,以及所有正在学习3D可视化的人。 使用说明:您无需支付版税或使用费。纹理可以免费下载和使用。不允许将纹理作为竞争产品出售或重新分发,即使图像被修改也是如此。 31. FlippedNormals FlippedNormal 是一个提供计算机图形和 3D 资产的市场,您可以找到许多用于雕刻、建模、纹理、概念艺术、3D 模型、游戏资产或课程的高级资产! 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 32. NASA 3D NASA 3D网站是一个在线门户,提供与太空和各种NASA任务相关的大量三维模型和模拟。该网站是用户友好的,并提供有关每个型号的详细信息。该网站允许用户探索和下载几种不同格式的模型,包括 OBJ、STL 和 FBX,只需单击下载按钮即可。 使用说明: 要下载模型,只需单击模型页面上的下载按钮并选择所需的格式。 33. 3DAGOGO (Astroprint) 3DAGOGO 是一个提供广泛 3D 模型的网站,包括角色、车辆和建筑物。3DAGOGO 的独特功能之一是它专注于适合 3D 打印的模型,使其成为希望创建物理原型或模型的设计师的绝佳资源。要使用 3DAGOGO,设计师只需在网站上搜索他们正在寻找的模型类型,然后下载 STL 格式的文件。 使用说明: 要使用 3DAGOGO,只需搜索所需的 3D 模型类型并下载 STL 格式的文件。根据需要自定义模型,并确保在将其用于商业目的之前检查使用权限。 34. FreeCAD FreeCAD是一款了不起的3D建模软件,可让您在计算机上创建令人难以置信的3D设计。该软件可免费下载和使用,它提供了广泛的工具和功能,可用于创建用于各种目的的3D模型。 该网站易于浏览,您可以找到开始使用FreeCAD的所有必要信息。此外,该网站还提供一系列教程和指南,可帮助您了解 3D 建模的来龙去脉。 使用说明: 要下载模型,请访问网站并从库中选择所需的模型。该网站还提供了一系列使用该软件的教程和指南。 35. Pinshape Pinshape是一个提供一系列3D打印模型的网站。网站上提供的型号质量很高,因此您可以确保您的最终印刷产品看起来很棒。该网站提供了广泛的模型,包括从家居用品到小雕像和珠宝的所有物品。 但这还不是Pinshape所能提供的全部!该网站还允许用户上传和共享自己的3D模型。这意味着您不仅可以下载出色的模型,还可以通过分享自己的设计为社区做出贡献。此外,Pinshape 提供了一系列自定义选项,因此您可以调整和调整模型以满足您的特定需求。 使用说明: 要下载模型,请在网站上创建一个帐户,搜索所需的模型,然后单击下载按钮。该网站还为每种型号提供了一系列定制选项。 36.Yeggi Yeggi 提供了大量免费的 3D 模型,您可以下载各种格式的模型,例如 STL、OBJ 和 FBX。该网站易于使用,您可以按关键字、类别或特定网站搜索模型。 Yeggi 对于任何寻找 3D 模型的人来说都是一个很好的资源。它提供了大量的模型集合,从日常物品到复杂的机械,以及介于两者之间的一切。该网站的收藏量在不断增长,每天都有新的型号增加。 使用说明: 要下载模型,请在网站上搜索所需的模型,然后单击下载按钮。该网站还提供指向托管模型的原始网站的链接。 37. Open3DModel 来自开放3D模型的图像 Open3DModel具有各种类别的模型,包括建筑,车辆和角色。无论您需要建筑物,汽车还是人的3D模型,都可以在此网站上找到。 该网站易于浏览,您可以按类别或关键字搜索模型。每个模型都附带预览图像和详细信息,例如文件格式、大小和多边形数量。此信息可以帮助您选择适合您需求的模型。 使用说明: 要下载模型,请访问网站,从库中选择所需的模型,然后单击下载按钮。 使用最好的 3D 资产管理工具简化您的 3D 制作流程。立即试用它们,将您的 3D 项目提升到一个新的水平! 38. 3DExport 对于那些为其 3D 设计项目寻找 3D 模型、纹理和其他资源的人来说,该平台是一个很好的资源。该网站有大量模型可供选择,包括 3D 打印对象、游戏资产等。用户可以按类别、文件格式或价格范围浏览,以找到适合其项目的完美资源。此外,3DExport 还提供一系列教程和其他 3D 资源,以帮助用户提高技能并创建更令人印象深刻的设计。 使用说明: 要使用 3DExport,只需创建一个帐户并浏览可用型号。您可以按类别、格式和价格进行搜索,以找到所需的型号。找到喜欢的模型后,只需下载它并开始在您的项目中使用它。 39.Blend Swap Blend Swap是一个社区驱动的市场,提供与Blender软件兼容的各种免费3D模型。该平台允许用户共享和下载模型、纹理和其他资产,以便在他们的项目中使用。 使用说明: 创建免费帐户后,您可以浏览社区上传的大量3D模型。当您找到要使用的一个时,只需下载它并将其导入您选择的 3D 软件即可。 40. 3DShook 3DShook 是一个高级 3D 模型市场,提供一系列用于建筑、游戏等各个行业的高质量模型。该平台提供基于订阅的模型,具有不同的定价计划,允许用户访问一系列模型。 使用说明: 注册免费帐户后,只需浏览3D模型库,选择您喜欢的模型,然后以您需要的格式下载它们。 41. Smithsonian X 3D 史密森尼 X 3D 对于正在寻找历史文物和文物的高质量 3D 模型的设计师来说,这是一个独特的资源。该平台提供了大量3D模型,这些模型是根据史密森尼博物馆和研究中心中的真实物体扫描创建的。 使用说明: