① 计算机网络的组成和体系结构
一、计算机网络的基本组成
计算机网络是一个很复杂的系统,它由许多计算机软件、硬件和通信设备组合而成。下面对一个计算机网络所需的主要部分,即服务器、工作站、外围设备、网络软件作简要介绍。
1.服务器(Server)
在计算机网络中,服务器是整个网络系统的核心,一般是指分散在不同地点担负一定数据处理任务和提供资源的计算机,它为网络用户提供服务并管理整个网络,它影响着网络的整体性能。一般在大型网络中采用大型机、中型机和小型机作为网络服务器,可保证网络的可靠性。对于网点不多,网络通信量不大,数据安全性要求不太高的网络,可以选用高档微机作网络服务器。根据服务器在网络中担负的网络功能的不同,又可分为文件服务器、通信服务器和打印服务器等。在小型局域网中,最常用的是文件服务器。一般来说网络越大、用户越多、服务器负荷越大,对服务器性能要求越高。
2.工作站(Workstation)
工作站有时也称为“节点”或“客户机(Client)”,是指通过网络适配器和线缆连接到网络上的计算机,是网络用户进行信息处理的个人计算机。它和服务器不同,服务器是为整个网络提供服务并管理整个网络,而工作站只是一个接入网络的设备,它保持原有计算机的功能,作为独立的计算机为用户服务,同时又可按一定的权限访问服务器,享用网络资源。
工作站通常都是普通的个人计算机,有时为了节约经费,不配软、硬盘,称为“无盘工作站”。
3.网络外围设备
是指连接服务器和工作站的一些连线或连接设备,如同轴电缆、双绞线、光纤等传输介质,网卡(NIC)、中继器(Repeater)、集线器(Hub)、交换机(Switch)、网桥(Bridge)等,又如用于广域网的设备:调制解调器(Modem)、路由器(Router)、网关(Gateway)等,接口设备:T型头、BNC连接器、终端匹配器、RJ45头、ST头、SC头、FC头等。
4.网络软件
前面介绍的都是网络硬件设备。要想网络能很好地运行,还必须有网络软件。
通常网络软件包括网络操作系统(NOS)、网络协议软件和网络通信软件等。其中,网络操作系统是为了使计算机具备正常运行和连接上网的能力,常见的网络操作系统有UNIX、Linux、Novell Netware、Windows NT、Windows 2000 Server、Windows XP等;网络协议软件是为了各台计算能使用统一的协议,可以看成是计算机之间相互会话使用的语言;而运用协议进行实际的通信则是由通信软件完成的。
网络软件功能的强弱直接影响到网络的性能,因为网络中的资源共享、相互通信、访问控制和文件管理等都是通过网络软件实现的。
二、计算机网络的拓扑结构
所谓计算机网络的拓扑结构是指网络中各结点(包括连接到网络中的设备、计算机)的地理分布和互连关系的几何构形,即网络中结点的互连模式。
网络的拓扑结构影响着整个网络的设计、功能、可靠性和通信费用等指标,常见的网络拓扑结构有总线型、星型、环型等,通过使用路由器和交换机等互连设备,可在此基础上构建一个更大网络。
1.总线型
在总线型结构中,将所有的入网计算机接入到一条通信传输线上,为防止信号反射,一般在总线两端连有终端匹配器如图6-1(a)。总线型结构的优点是信道利用率高,可扩充性好,结构简单,价格便宜。当数据在总线上传递时,会不断地“广播”,第一节点均可收到此信息,各节点会对比数据送达的地址与自己的地址是否相同,若相同,则接收该数据,否则不必理会该数据。缺点是同一时刻只能有两个网络结点在相互通信,网络延伸距离有限,网络容纳的节点数有限。在总线上只要有一个结点连接出现问题,会影响整个网络运行,且不易找到故障点。
图6-1 网络拓扑结构
2.星型
在星型结构中,以中央结点为中心,其他结点都与中央结点相连。每台计算机通过单独的通信线路连接到中央结点,由该中央结点向目的结点传送信息,如图6-1(b),因此,中央结点必须有较强的功能和较高的可靠性。
在已实现的网络拓扑结构中,这是最流行的一种。跟总线型拓扑结构相比,它的主要的优势是一旦某一个电缆线段被损坏了,只有连接到那个电缆段的主机才会受到影响,结构简单,建网容易,便于管理。缺点是该拓扑是以点对点方式布线的,故所需线材较多,成本相对较高,此外中央结点易成为系统的“瓶颈”,且一旦发生故障,将导致全网瘫痪。
3.环型
在环型结构中,如图6-1(c)所示,各网络结点连成封闭环路,数据只能是单向传递,每个收到数据包的结点都向它的下一结点转发该数据包,环游一圈后由发送结点回收。当数据包经过目标结点时,目标结点根据数据包中的目标地址判断出是自己接收,并把该数据包拷贝到自己的接收缓冲中。
环型拓扑结构的优点是:结构简单,网络管理比较简单,实时性强。缺点是:成本较高,可靠性差,网络扩充复杂,网络中若有任一结点发生故障都会使整个网络瘫痪。
三、计算机网络的体系结构
要弄清网络的体系结构,需先弄清网络协议是什么。
网络协议是两台网络上的计算机进行通信时使用的语言,是通信的规则和约定。为了在网络上传输数据,网络协议定义了数据应该如何被打成包、并且定义了在接收数据时接收计算机如何解包。在同一网络中的两台计算机为了相互通信,必须运行同一协议,就如同两个人交谈时,必须采用对方听得懂的语言和语速。
由于网络结点之间的连接可能是很复杂的,因此,为了减少协议设计的复杂性,在制定协议时,一般把复杂成分分解成一些简单成分,再将它们复合起来,而大多数网络都按层来组织,并且规定:(1)一般是将用户应用程序作为最高层,把物理通信线路作为最低层,将其间再分为若干层,规定每层处理的任务,也规定每层的接口标准;(2)每一层向上一层提供服务,而与再上一层不发生关系;(3)每一层可以调用下一层的服务传输信息,而与再下一层不发生关系。(4)相邻两层有明显的接口。
除最低层可水平通信外,其他层只能垂直通信。
层和协议的集合被称为网络的体系结构。为了帮助大家理解,我们从现实生活中的一个例子来理解网络的层次关系。假如一个只懂得法语的法国文学家和一个只懂得中文的中国文学家要进行学术交流,那么他们可将论文翻译成英语或某一种中间语言,然后交给各自的秘书选一种通信方式发给对方,如图6-2所示。
图6-2 中法文学家学术交流方式
下面介绍两个重要的网络体系结构:OSI参考模型和TCP/IP参考模型。
1.OSI参考模型
由于世界各大型计算机厂商推出各自的网络体系结构,不同计算机厂商的设备相互通信困难。为建立更大范围内的计算机网络,必然要解决异构网络的互连,因而国际标准化组织ISO于1977年提出“开放系统互连参考模型”,即着名的OSI(Open system interconnection/Reference Model)。它将计算机网络规定为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层,受到计算机界和通信界的极大关注。
2.TCP/IP参考模型
TCP/IP(Transmission Control Protocol/Internet protocol)协议是Internet使用的通信协议,由ARPANET研究中心开发。TCP/IP是一组协议集(Internet protocol suite),而TCP、IP是该协议中最重要最普遍使用的两个协议,所以用TCP/IP来泛指该组协议。
TCP/IP协议的体系结构被分为四层:
(1)网络接口层 是该模型的最低层,其作用是负责接收IP数据报,并通过网络发送出去,或者从网络上接收网络帧,分离IP数据报。
(2)网络层 IP协议被定义驻留在这一层中,它负责将信息从一台主机传到指定接收的另一台主机。主要功能是:寻址、打包和路由选择。
(3)传输层 提供了两个协议用于数据传输,即传输控制协议TCP和通用数据协议UDP,负责提供准确可靠和高效的数据传送服务。
(4)应用层 位于TCP/IP最高层,为用户提供一组常用的应用程序协议。例如:简单邮件传输协议SMTP、文件传协议FTP、远程登录协议Telnet、超文本传输协议HTTP(该协议是后来扩充的)等。随着Internet的发展,又开发了许多实用的应用层协议。
图6-3是TCP/IP模型和OSI模型的简单比较:
图6-3 TCP/IP模型和OSI模型的对比
② 计算机网络的拓扑结构有哪些类型
主要有六种:分别是星型结构、总线结构、树型结构、网状结构、蜂窝状结构、分猛悄咐布式结构。
星型结构是指各工作站以星型方式连接成网。网络有中央节点,其他节点(工作站、服务器)都与中央节点直接相连,这种结构以中央节点为中心,因此又称为集中式网络。
环型结构由网络中若干节点通过点到点的链路首尾相连形成一个闭合的环,这种结构使公共传输电缆组成环型连接,数据在环路中沿着一个方向在各个节点间传输,信息从一个节点传到另一个节点。
总线结构是指各工作站和服务器均挂在一条总线上,各工作站地位平等,无中心节点控制,公用总线上的信息多以基带形式串行传递,其传递方向总是从发送信息的节点开始向两端扩散,如同广播电台发射的信息一样,因此又称广播式计算机网络。各节点在接受信息时都进行地址检查,看是否与自己的工作站地址相符,相符则接收网上的信息。
分布式结构的网络是枝纯将分布在不同地点的计算机通过线路互连起来的一种网络形式。
树型结构是分级的集中控制式网络,与星型相比,它的通信线路总长度短,成本较低,节点易于扩充,寻找路径比较方便,但除了叶节点及其相连的线路外,任一节点或其相连的线路故障都会使系统受到影响。
在网状拓扑结构中,网络的每台设备之间均有点到点的链路连接,这种连接不经济,只有每个站点都要频繁发送信息时才使用这种方法。它的安装也复杂,但系统可靠性高,容错能力强。有时也称为分布式结构。
蜂窝拓扑结构是无线局域网中常用的结构。运好它以无线传输介质(微波、卫星、红外等)点到点和多点传输为特征,是一种无线网,适用于城市网、校园网、企业网。
③ 网络协议-- 底层网络知识详解(从二层到三层)
网线
Hub 采取的是广播的模式,如果每一台电脑发出的包,宿舍的每个电脑都能收到,那就麻烦了。这就需要解决几个问题:
这几个问题,都是第二层, 数据链路层 ,也即 MAC 层要解决的问题。 MAC 的全称是 Medium Access Control ,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问题。防止发生混乱。这解决的是第二个问题。这个问题中的规则,学名叫 多路访问 。
三种方式:
方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作 信道划分 ;
方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作 轮流协议 ;
方式三:不管三七二十一,有事儿先出门,发现特堵,就回去。错过高峰再出。我们叫作 随机接入协议 。着名的以太网,用的就是这个方式。
接下来要解决第一个问题:发给谁,谁接收?这里用到一个物理地址,叫作 链路层地址 。但是因为第二层主要解决媒体接入控制的问题,所以它常被称为 MAC 地址 。
解决第一个问题就牵扯到第二层的网络包格式。
对于以太网,第二层的最后面是 CRC,也就是循环冗余检测。通过 XOR 异或的算法,来计算整个包是否在发送的过程中出现了错误,主要解决第三个问题。
这里还有一个没有解决的问题,当源机器知道目标机器的时候,可以将目标地址放入包里面,如果不知道呢?一个广播的网络里面接入了 N 台机器,我怎么知道每个 MAC 地址是谁呢?这就是 ARP 协议 ,也就是已知 IP 地址,求 MAC 地址的协议。
ARP 是通过吼的方式(广播)来寻找目标 MAC 地址的,吼完之后记住一段时间,这个叫作缓存。
谁能知道目标 MAC 地址是否就是连接某个口的电脑的 MAC 地址呢?这就需要一个能把 MAC 头拿下来,检查一下目标 MAC 地址,然后根据策略转发的设备,这个设备显然是个二层设备,我们称为 交换机 。
交换机是有 MAC 地址学习能力的,学完了它就知道谁在哪儿了,不用广播了。(刚开始不知道的时候,是需要广播的)
当交换机的数目越来越多的时候,会遭遇环路问题,让网络包迷路,这就需要使用 STP 协议,通过华山论剑比武的方式,将有环路的图变成没有环路的树,从而解决环路问题。
在数据结构中,有一个方法叫做 最小生成树 。有环的我们常称为图。将图中的环破了,就生成了树。在计算机网络中,生成树的算法叫作 STP ,全称 Spanning Tree Protocol 。
STP 协议比较复杂,一开始很难看懂,但是其实这是一场血雨腥风的武林比武或者华山论剑,最终决出五岳盟主的方式。
交换机数目多会面临隔离问题,可以通过 VLAN 形成 虚拟局域网 ,从而解决广播问题和安全问题。
对于支持 VLAN 的交换机,有一种口叫作 Trunk 口。它可以转发属于任何 VLAN 的口。交换机之间可以通过这种口相互连接。
ping 是基于 ICMP 协议工作的。
ICMP 全称 Internet Control Message Protocol ,就是 互联网控制报文协议 。
ICMP 报文是封装在 IP 包里面的。因为传输指令的时候,肯定需要源地址和目标地址。它本身非常简单。因为作为侦查兵,要轻装上阵,不能携带大量的包袱。
ICMP总结:
ICMP 相当于网络世界的侦察兵。我讲了两种类型的 ICMP 报文,一种是主动探查的查询报文,一种异常报告的差错报文;
ping 使用查询报文,Traceroute 使用差错报文。
在进行网卡配置的时候,除了 IP 地址,还需要配置一个Gateway 的东西,这个就是 网关 。
一旦配置了 IP 地址和网关,往往就能够指定目标地址进行访问了。由于在跨网关访问的时候,牵扯到 MAC 地址和 IP 地址的变化,这里有必要详细描述一下 MAC 头和 IP 头的细节。
路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的 IP 地址都和局域网的 IP 地址相同的网段,每只手都是它握住的那个局域网的网关。
对于 IP 头和 MAC 头哪些变、哪些不变的问题,可以分两种类型。我把它们称为“欧洲十国游”型和“玄奘西行”型。
之前我说过, MAC 地址是一个局域网内才有效的地址。因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网 。
两者主要的区别在于 IP 地址是否改变。不改变 IP 地址的网关,我们称为 转发网关 ;改变 IP 地址的网关,我们称为 NAT 网关 。
网关总结:
路由分静态路由和动态路由,静态路由可以配置复杂的策略路由,控制转发策略;
动态路由主流算法有两种, 距离矢量算法 和 链路状态算法 。
距离矢量路由(distance vector routing)。它是基于 Bellman-Ford 算法的。
这种算法的基本思路是,每个路由器都保存一个路由表,包含多行,每行对应网络中的一个路由器,每一行包含两部分信息,一个是要到目标路由器,从那条线出去,另一个是到目标路由器的距离。
由此可以看出,每个路由器都是知道全局信息的。那这个信息如何更新呢?每个路由器都知道自己和邻居之间的距离,每过几秒,每个路由器都将自己所知的到达所有的路由器的距离告知邻居,每个路由器也能从邻居那里得到相似的信息。
每个路由器根据新收集的信息,计算和其他路由器的距离,比如自己的一个邻居距离目标路由器的距离是 M,而自己距离邻居是 x,则自己距离目标路由器是 x+M。
这种算法存在的问题:
第一个问题:好消息传得快,坏消息传得慢。
第二个问题:每次发送的时候,要发送整个全局路由表。
所以上面的两个问题,限制了距离矢量路由的网络规模。
链路状态路由(link state routing),基于 Dijkstra 算法。
这种算法的基本思路是:当一个路由器启动的时候,首先是发现邻居,向邻居 say hello,邻居都回复。然后计算和邻居的距离,发送一个 echo,要求马上返回,除以二就是距离。然后将自己和邻居之间的链路状态包广播出去,发送到整个网络的每个路由器。这样每个路由器都能够收到它和邻居之间的关系的信息。因而,每个路由器都能在自己本地构建一个完整的图,然后针对这个图使用 Dijkstra 算法,找到两点之间的最短路径。
不像距离距离矢量路由协议那样,更新时发送整个路由表。链路状态路由协议只广播更新的或改变的网络拓扑,这使得更新信息更小,节省了带宽和 CPU 利用率。而且一旦一个路由器挂了,它的邻居都会广播这个消息,可以使得坏消息迅速收敛。
基于两种算法产生两种协议,BGP 协议和 OSPF 协议。
OSPF(Open Shortest Path First,开放式最短路径优先) 就是这样一个基于链路状态路由协议,广泛应用在数据中心中的协议。由于主要用在数据中心内部,用于路由决策,因而称为 内部网关协议(Interior Gateway Protocol,简称 IGP) 。
内部网关协议的重点就是找到最短的路径。在一个组织内部,路径最短往往最优。当然有时候 OSPF 可以发现多个最短的路径,可以在这多个路径中进行负载均衡,这常常被称为 等价路由 。
但是外网的路由协议,也即国家之间的,又有所不同。我们称为 外网路由协议(Border Gateway Protocol,简称 BGP) 。
在网络世界,这一个个国家成为自治系统 AS(Autonomous System)。自治系统分几种类型。
每个自治系统都有边界路由器,通过它和外面的世界建立联系。
BGP 又分为两类, eBGP 和 iBGP 。自治系统间,边界路由器之间使用 eBGP 广播路由。内部网络也需要访问其他的自治系统。边界路由器如何将 BGP 学习到的路由导入到内部网络呢?就是通过运行 iBGP,使得内部的路由器能够找到到达外网目的地的最好的边界路由器。
BGP 协议使用的算法是 路径矢量路由协议 (path-vector protocol)。它是距离矢量路由协议的升级版。
前面说了距离矢量路由协议的缺点。其中一个是收敛慢。在 BGP 里面,除了下一跳 hop 之外,还包括了自治系统 AS 的路径,从而可以避免坏消息传得慢的问题,也即上面所描述的,B 知道 C 原来能够到达 A,是因为通过自己,一旦自己都到达不了 A 了,就不用假设 C 还能到达 A 了。
另外,在路径中将一个自治系统看成一个整体,不区分自治系统内部的路由器,这样自治系统的数目是非常有限的。就像大家都能记住出去玩,从中国出发先到韩国然后到日本,只要不计算细到具体哪一站,就算是发送全局信息,也是没有问题的。
参考:
极客时间-趣谈网络协议
极客时间-趣谈网络协议
极客时间-趣谈网络协议
极客时间-趣谈网络协议-网关
④ 我们做网络实验室用两台交换机和两台计算机还有一些网线做冗余环路的实验,什么是生成树还有MSTP啊
STP的作用
STP的全称是spanning-tree protocol,STP协议是一个二层的链路管理协议,它在提供链路冗余的同时防止网络产生环路。STP协议(Spanning tree protocol)的本质就是实现在交换网络中链路的备份和负载的分担.stp是生成树协议,主要功能是从拓扑中清除第2层环路
一.STP增强特性:
传统的802.1d标准的STP,有一些缺陷,比如当一个交换机检测到链路发生故障,再到网络重新收敛的时候,至少要等50秒的时间(转发延迟+BPDU最大生存周期).当一个端工作站,比如PC或服务器,插到交换机某个端口后,该端口同样会经历STP的一些状态,比如监听和学习.但是端工作站不会引起层2环路,因此,对于接端工做站的端口,没必要经历这相对漫长的STP收敛时间.因此 CISCO提出了Port Fast这一特性.启用该特性的端口无需经历转发延迟可以直接进入转发状态,减少收敛时间.该特性类似802.1w标准里的边缘端口(EP):
在启用这种特性的时候,必须保证该端口连接的是端工作站,而不是交换机或者集线器等网络设备,否则会引起环路问题.另外,如果在该端口启用了语音VLAN,那么Port /---全局启用Port Fast特性---/
Switch(config-if)# spanning-tree portfast [trunk] /---基于接口的启用Port Fast特性---/
Switch(config-if)# spanning-tree portfast disable /---禁用Port Fast特性---/
注意,如果要在trunk端口启用该特性,先要确保该trunk端口不会引起环路.
另外一种减少STP收敛时间的技术是Uplink Fast特性:
当交换机A检测到链路L2出故障后,会立刻切换到L3,从而跳过STP的监听和学习阶段(转发延迟),节约近30秒的时间达到快速收敛.另外要注意的是,如果配置了VLAN的优先级,那么不能启用该特性.因为该特性是对所有VLAN生效而不是针对某一个VLAN生效.一旦启用该特性后,交换机的网桥优先级自动被设置为49152;如果你的链路开销小于3000,那么开销将自动增大为3000(如果大于3000则不会).该举动的意图是防止交换机(如上图里的交换机A)成为根桥.
配置方式如下:
Switch(config)# spanning-tree uplinkfast [max-update-rate pps] /---全局启用Uplink Fast---/
可选参数值的范围是0-32000,默认每秒150个包,值越低收敛越慢.
如果照上图里,当链路L1出故障后,Uplink Fast特性就不能弥补该缺点.因此出现了Backbone Fast特性:
当交换机C通过下级BPDU信息(inferior BPDU)检测到L1出故障后,由于L1不是它到根桥的直连链路.因此,交换机C会发送根链路查询信息(RLQ).当收到RLQ的应答后,交换机C将自己原本处于堵塞状态的端口立即设置为转发状态(把最大生存周期的20秒给老化掉),为B提供一条到根桥的替代路径.但要经过转发延迟,也就是大约30的时间.一旦启用该特性,必须在所有的交换几上都使用.但如果此时新增加一个交换机进来,该交换机也会发送下级BPDU信息声称自己想成为根桥(野心够大啊).不过其他交换机会忽略该下级BPDU,并且交换机B会告诉它A才是根桥:
配置方式:
Switch(config)# spanning-tree backbonefast /---全局启用Backbone /---在启用了Port Fast特性的端口上启用BPDU Guard---/
Switch(config-if)# spanning-tree bpguard enable /---在不启用Port Fast特性的情况下启用BPDU Guard---/
而BPDU Filtering特性和BPDU Guard特性非常类似.通过使用BPDU Filtering,将能够防止交换机在启用了Port Fast特性的端口上发送BPDU给主机:
如果全局配置了BPDU /---在启用了Port Fast特性的端口上启用BPDU Filtering---/
Switch(config-if)# spanning-tree bpfilter enable /---在不启用Port Fast特性的情况下启用BPDU Filtering---/
一般层2网络的SP可能会有多条达到客户网络的连接.为了防止客户交换机偶然成为根桥,可以在连接到客户交换机的端口上使用Root Guard特性来避免这一问题的发生.如果STP偶然选出客户交换机的某个端口做为根端口(RP),那么Root Guard特性将把该端口设置为root-inconsistent状态(堵塞)来防止客户交换机成为根桥:
配置Root /---启用Root Guard特性---/
注意,Root Guard和Loop Guard特性不可同时使用,也不要在启用了Uplink Fast特性的端口上启用该特性.该特性一旦配置后,对所有VLAN都生效.
另外,也可以使用Loop Guard技术替代端口(AP)或RP由于单向链路的故障问题成为指定端口(DP):
交换机A做为根桥,由于交换机B和C之间发生单向链路故障,C将不能从B那里接收到BPDU.如果没有启用该特性,那么交换机C在最大生存周期(Max Age)计时器超时之后,交换机C上的堵塞端口将转换到监听状态,并最终会在30秒之后转换到转发状态.当交换机C的原先处于堵塞状态的端口进入到转发状态的时候,交换机B上原先的DP还处于转发状态,而一个桥接网段上只能有一个DP,因此就产生了环路.如果启用了Loop Guard特性之后,当最大生存周期超时之后,交换机C上的堵塞端口将过渡到loop-inconsistent状态(堵塞),处于该状态的端口不能传递任何流量.因此就不会产生层2环路.
配置Loop Guard:
Switch(config)# spanning-tree loopguard default /---启用Loop Guard特性---/
注意,Loop Guard和Root Guard特性不可同时使用.