关于网络理论,我觉得还是要看一下。因为我从正统的道路学习过(谢希仁的《计算机网络》),也从其他野路子看过一下关于网络理论的介绍(鸟哥私房菜服务器篇和农夫安全的网络安全教程),觉得讲得还是不太好,不利于初学者讲解。所以这里必须要写一个浅显易懂的教程。
首先讲一下谢希仁《计算机网络》的优缺点,它的优点在于,介绍网络理论介绍得很详细,甚至连数据包、协议的细节都讲得很清楚。但过于注重细节,会使得初学者觉得计算机网络很难,不能一下子理解计算机网络的大概。事实上要理解计算机网络,真的不用过多地去抠细节,只要知道一个脉络,具体的再在《计算机网络》中查阅就行了。不过我现在看的《计算机网络》还是第6版,看着知识已经有点过时了,现在都更新到第7版了,不知道知识有没有更新。
所以现在先讲一些新知识。传统的计算机网络课参看《计》P3,就是一堆计算机和路由器等构成的网络。
然而,现代计算机网络已经有了很大的不同,因为其中混入了虚拟技术。每一台计算机可能不一定是一台物理计算机,还可能是虚拟计算机,这台虚拟计算机或许是从一台物理超级服务器虚拟出来的多台虚拟机中的其中之一。虚拟计算机的作用是,可以很好地对虚拟计算机的性能进行均分,从而便于调度和管理,是现代云计算的基础。
因此,现代计算机网络已经是物理计算机和虚拟计算机混合而成的网络了。由《计》P3可知,连接在因特网上的计算机都称为主机(host)。所以实质上,不管你的计算机是PC机还是服务器,还是虚拟机,都应该能叫做主机才对。网上很多博文老是说主机、虚拟机,要让人仔细分辨出这里主机的含义原来是指物理PC机,那就很让人费解了。
下面讲一下OSI七层协议,在《计》P25有详细的描述。但是实际上真正应用的其实只是TCP/IP的四层协议,在《计》P28有明确的对应关系。
我们看农夫安全第二季的网络理论视频,TQ也讲到了这四层协议与七层协议的对应关系。所以说其实野路子的TQ还是有系统地学过网络理论的。
对于七层协议,这里不详细讲解,我们可以看到《计》P30,大概可以看到五层协议是如何工作的(《计》采用了自创的便于教学的五层协议)。我大概提一下一个知识点,就是同层之间的报文是能够互相理解的,例如路由器工作在网络层(第三层),那么它就能够拆封并理解第三层报文的内容(即和IP相关的内容)。
我们再讲一下交换机和路由器的区别。
对于交换机,《计》P100只提到了二层交换机。
交换机的作用,我的理解是:
- 用于分配IP地址
- 减少局域网之间数据传输产生碰撞的概率
事实上,对于二层交换机,它能理解的只有物理层和数据链路层,所以它其实只能识别网卡的MAC地址,而不能识别IP。
如果是三层交换机的话,那么它就能够理解网络层了,从而能理解IP地址,但是它的职责依然只是分配IP,而不是提供IP,提供IP的是路由器。
对于减少局域网之间的碰撞,这其实是相对于集线器而言的,可以查看鸟哥私房菜服务器篇P47
对于路由器,可查看《计》P115。这里要提一下,IP地址实质上网卡上的接口地址,而不是笼统地说你的计算机地址。一台计算机可以有多个网卡,一个网卡也可能会有多个接口(网口),可查看鸟哥私房菜服务器篇P82,所以计算机的IP地址可能不是唯一的。
路由器的作用,个人理解:
- 提供IP地址
- 计算主机与主机之间通信的最优路径
由于现在用到的IP地址大多还是用的IPv4的,所以很容易会出现IP地址不够用的情况。所以就出现了NAT的情况,关于NAT,可查看《计》P176。NAT会占用一些IPv4的地址,这些地址称为内网IP地址。而其他的IP地址称为全球唯一IP地址,也就是俗话说的公网IP地址。
对于公网IP地址,是由网络运营商ISP(中国电信、中国联通)的路由器提供,而私有IP地址,就可以由其中的NAT来提供。
在所有的教材上,局域网路由器通常只有两个接口,一个与外部通信,一个与内部通信(不过事实上两个接口的地位是平等的)。而交换机会有一个外口,多个内口,从而连接到各个主机上。
这种形式的连接,其IP地址往往是手动分配的。但是如果路由器有DHCP功能的话,那么IP地址就能通过交换机自动分配到各个主机上(《计》P279)。
NAT通常是路由器附带的功能,但如果交换机是三层交换机的话,那么DHCP也能用在三层交换机上了。
我们思考一下家用的路由器,这种路由器有一个外口,和多个内口,实质上它已经不是真正意义上的路由器了,而是一个带有交换机功能路由器,其带有NAT和DHCP功能,所以我们的电脑通常接入路由器后就能上网了,IP地址通过DHCP帮你自动分配了。
我们看一下,如果一个网络带有服务器(通常是公司的网络),那么这个架构就不同于我们家用PC机的网络架构。我们先看一下农夫安全第二季的安全防御----安全概述视频,其网络架构通常是这样的。
不过我觉得这里有点奇怪,为什么办公室的PC机需要防火墙,而机房里面不需要防火墙呢?然后视频里面说,右边机房的服务器是一个局域网,也就是说只有一个公网IP,那这样的话,如果是网站的话,估计是多个服务器共用一个公网IP。
我们说的外网IP不能访问内网IP是什么意思呢?
这就涉及到NAT的知识了,这是因为,外网主机与某个局域网主机进行通信的时候,实际上外网通过局域网路由的接口来区分到底发送到那一台局域网主机上,而这个接口对应到哪一台局域网主机IP地址,只有局域网路由器自己才知道。
因此虽然外网主机不能通过IP地址去主动访问局域网内的主机,但它会知道与局域网主机通信时,是走路由器的哪一个接口。
从而对于服务器或机房而言,外网能够访问服务器,那它至少要得有一个公网IP,而防火墙或者路由器,它应该要有两个网络接口(或者两个网卡),一个于外网沟通,一个与局域网进行沟通。
我们注意到,左边和右边两个交换机连在了一起。实际上,左右两组主机处于不同的网段,所以按理来说无法通信。所以推测这两个交换机应该是三层交换机,能够理解IP地址,所以就能理解局域网从而能够互相通信了。
对于有多个公网IP的机房,服务器相对好搭一点,但如果只提供给你一个公网IP的话,那么搭建起来就有点困难。
通过鸟哥私房菜服务器篇P81,可进一步了解网络的搭建。你能搭建什么样的网络,关键在于网络运营商给你多少个什么样的IP地址。
对于家用的宽带,通常只会给一个私网IP地址。当然私网IP对于网络运营商来说根本不值钱,所以如果它能给一个公网IP的同时,再给一个私网IP的话,那是最好不过的。一个公网IP连接服务器,一个私网IP连接PC机。
因此农夫安全视频里面说的,究竟有没有给公网IP地址,给了多少个IP地址那就不知道了。
对于防火墙,我们可能会想,PC机自带都有一个防火墙啦,怎么现在又弄一个防火墙呢?
由鸟哥私房菜服务器篇P81可知, 防火墙是用来防服务器和整体的,PC机的防火墙只能防PC机自身,而普通人多数都不会用PC机自身的防火墙的。
好了,接下来我们用VMware来讲解一下路由器、交换机、NAT、DHCP和搭建网络的原理。
个人对虚拟机用途的理解:
- 可以自由创建一个新系统的虚拟主机,不用重装物理主机系统或者双系统,方便灵活。
- 用于软件**和病毒研究,避免弄坏物理主机
- 用于在没钱购买服务器的前提下,就能搭建一个局域网做网络实验
所以虚拟机可以说非常有用,我们现在主要是第三个用途,搭建的虚拟机可以自由配置硬件。例如之前提到,搭建防火墙或者路由器需要双网卡,所以你可以直接创建一个带有双网卡的主机,即使你的物理主机没有。
在理解VMware中的网络配置的时候,必须要先知道它的三种网络配置模式:桥接模式、NAT模式和仅主机模式。
参考链接:
https://www.cnblogs.com/saryli/p/9762771.html
https://blog.csdn.net/weixin_44786530/article/details/89509875
https://blog.csdn.net/m0_37542524/article/details/86135875
我们注意到,当安装了VMware之后,可以看到它为我们的物理PC机添加了两个虚拟网卡:
首先,本来的物理设备有:
Intel(R) Wireless-AC 9560 160MHz 是我的物理无线网卡
Realtek Gaming GbE Family Controller 是我的物理有线网卡
Bluetooth Device (Personal Area Network) 是我的物理蓝牙设备
新添加的虚拟网卡有:
VMware Virtual Ethernet Adapter for VMnet1 这是用于仅主机模式下的网卡
VMware Virtual Ethernet Adapter for VMnet8 这是用于NAT模式下的网卡
事实上还有一个虚拟的二层交换机叫VMnet0,是用于桥接模式的,但事实上这个交换机处于物理路由器上,其实就是一个物理交换机,直接用无线网卡或者有线网卡连就行了,所以就没有在网络连接中显示了。
我们可以通过cmd命令中的ipconfig,或者Win10中点击“查看网络属性”来查看这几个网卡的信息。
桥接模式:
桥接模式需要注意的一点是,它是桥接到哪一个网卡的网络上。
VMware中打开“虚拟网络编辑器”,可以看到并无VMnet0。
然而我们点击“更改配置”之后,VMnet0出现了,但是桥接到哪一个网卡,默认的配置是自动匹配。
我现在的PC机使用无线网卡上网,而虚拟机使用桥接模式,也能上网。这是因为虚拟机的自动分配把无线网卡网线网卡的网络分配到了虚拟机上。所以这种情况下,如果我选择桥接到无线网卡,那实质上是一样的配置。
但是,有时候自动配置可能并不那么管用。例如有时候我用Linux的时候,选择桥接模式就是连不上网,或许就是VMware把虚拟机桥接到物理PC机的有线网卡了,而物理PC机正在用无线上网。
此时勾选虚拟机设置中的“复制物理网络连接状态”,或许就能马上解决问题,同时注意右下角的小电脑,看是否是断开状态。
若这都不能解决的话,那就查看Linux配置资料
https://blog.csdn.net/m0_37542524/article/details/86135875
NAT模式:
在物理PC机中,VMnet8的信息如图所示
可见,它会分配一个新的网段和子网地址,还有一个DHCP服务器。然而默认网关为空,这是因为这个网卡其实只会连接到交换机,不经过虚拟路由器与虚拟主机通信,因此这个交换机应该是三层交换机。
因此实际上,物理PC机用的IP还是192.168.1.3
我们看到虚拟机的网卡信息:
显然可以看到虚拟机的网卡实际上连的就是VMnet8,因为是用的同一个子网,而且也有网关,这是因为这台虚拟主机连接到了虚拟路由器上了。
由于虚拟机与物理PC机通过交换机连接,因此物理PC机能ping通虚拟主机的IP地址192.168.159.129,而虚拟主机能ping通物理PC机的IP地址192.168.1.3,尽管它们处于不同的子网。
既然我们知道了VMnet8存在虚拟路由器,那怎么配置这个虚拟路由器、NAT和DHCP呢?
在WMware中打开“虚拟网络编辑器”,选择WMnet8,就可以配置子网IP和子网掩码了。然后点击NAT设置,就可以配置网关的IP。
我们看到,网关的IP默认配置为192.168.159.2,与虚拟主机的网关是一致的。
然后点击”DHCP设置”
我们看到,IP地址分配地址从192.168.159.128到192.168.159.254
而虚拟主机的IP地址为192.168.159.129,处于这个地址范围中。
DHCP服务器的IP地址为192.168.159.254,也处于这个地址范围中。
下面我们尝试更改这个IP地址类型为A类网络:
10.0.0.0/8
使得它与C类网络
192.168.xxx.0/24
相差较大,看看能不能互相ping通。
配置好后,虚拟主机cmd输入命令ipconfig
可以看到网卡的信息和配置一样,也能够ping通物理PC机192.168.1.3。
同时,物理PC机也能ping通虚拟主机10.0.0.128。
若想还原回原来的网络配置,可以点击VMware“虚拟网络编辑器”中的“还原默认设置”。不过这样会把所有的虚拟网络重置,比较大费周章,所以最好还是手动还原设置就行了。
仅主机模式
由此图可以看到,仅主机模式相对于NAT模式来说,就是少了路由功能,所以虚拟主机无法连接外网。但是虚拟主机还是具有IP地址,所以VMnet1实际上是一个三层交换机,所以能够配置DHCP服务器。
我们看到其中一台虚拟主机的网卡信息
它能分配到IP地址192.168.154.128,还有DHCP服务器,但是它没有网关,因为没有路由功能。
它能够ping通另一台虚拟主机IP 192.168.154.129
但不能ping通物理PC机192.168.1.3。同样,物理PC机也不能ping通虚拟主机。
我们想象一下,其实仅主机模式有点像防火墙,物理网卡连接外网,虚拟网卡WMnet1连接内网。所以,只要在物理PC机上搭建一个路由功能,其实就能够让虚拟主机联网了。
这个想法不错,不过是不行的。
因为通常物理PC机是一个Windows桌面系统,而不是服务器系统,不适合搭建路由功能。而且即使是服务器系统,还有可能是Linux系统,从而也不能安装WMware。
因此,如果要模拟一个局域网系统,应该是通过WMware创建一个独立的虚拟主机当做防火墙或路由器,而这个虚拟主机要配置两个网卡。
但是,我们知道,WMware创建的虚拟主机无论数量有多少,她们都同属于一个子网,那么我想创建多层子网那怎么办呢?
于是就引入了虚拟机的嵌套,当创建出一个虚拟主机用作防火墙或路由器后,再在这个虚拟主机中再创建一层虚拟主机,作为这个虚拟主机的子网。
如果防火墙或路由器主机是用的Linux系统的话,那么就要用到Linux自身的虚拟机软件了。
这就是为什么农夫安全视频中提到嵌套的概念,因为主机之间的链路,是通过虚拟机的创建而建立的。
最后,我们看一下WMware中的自定义模式
其实这个很容易理解,其实你选VMnet0的话,就等于选择了桥接模式,选VMnet1的话,就等于选择了仅主机模式,选VMnet8的话,就等于选择了NAT模式。
选其它网络的话,就是选择自定义的网络,其参数都是可以自定义的,但都跳不出这三个种类。
自此,网络理论就讲完了。其实如果要理解网络的话,根本就不用理解得太深,就上面提到的知识基本够用。而如果你看《计算机网络》的话,就很容易会让初学者望而却步,事实上还是有捷径的,只不过是,涉及到一些具体细节的时候,《计算机网络》只是一本查阅的工具书而已。