五万字,快速读完《图解TCP/IP》核心内容!!!(建议收藏)
Posted 学c的长弓狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五万字,快速读完《图解TCP/IP》核心内容!!!(建议收藏)相关的知识,希望对你有一定的参考价值。
目录
1. 网络基础知识
1.1 计算机网络出现的背景
最早出现的计算机是美国军方为了计算导弹落点而产生的,体积很大,很难普及,随着技术的发展计算机越来越普及和多样化,这时候就需要实现计算机的信息交流。
起初计算机以独立模式使用计算机,为了信息交流,将一台台计算机连接在一起,形成一个计算机网络,人们便可以以网络互联模式使用计算机。
计算机网络根据规模又分为广域网(WAN,Wide Area Network)和局域网(LAN,Local Area Network)。
局域网:一栋楼或大学校园中有限的,狭小的,区域内网络。
广域网:跨接相距较远的计算机或局域网的网络。
计算机网络好比一个人的神经系统。一个人身上的所有感觉都经神经传递到大脑。与之类似,世界各地的信息也通过网络传递到每个人的计算机中。
1.2 计算机与网络发展的7个阶段
20世纪50年代 批处理时代
为了让更多的人使用计算机,出现了批处理系统。所谓批处理,是指事先将用户程序和数据装入卡带或磁带,并由计算机按照一定的顺序读取,使用户所要执行的这些程序和数据能够一并批量得到处理的方式。
这个时代的计算机主要用于大规模计算或处理,并不是普通人就能使用的工具。
20世纪60年代 分时系统时代
指多个终端与同一个计算机连接,允许多个用户同时使用一台计算机的系统。
当时计算机造价昂贵,分时系统的产生实现了“一人一机”的目的,让用户感觉好像“完全是自己在使用一台计算机一样。”这也体现了分时系统的独占性。
这个时代,小型机也随即产生,办公场所和工厂也逐渐引入计算机。
20世纪70年代 计算机间通讯时代
这时计算机体积趋于小型化,为了提高效率,人们开始研究计算机之间的通信的技术。计算机与计算机之间由通讯线路连接,人们可以通过此技术读取另一台计算机中的数据,从而极大地缩短了传送数据的时间。
20世纪80年代 计算机网络时代
到了80年代,一种能够互联多种计算机的网络随之诞生,它能够让各式各样的计算机相互连接,从大型的超级计算机到小型的个人电脑。
20世纪90年代 互联网普及时代
这时,专注于信息处理的公司和大学已为每一位员工或研究人员分配了一台计算机,形成了“一人一机”的环境。但这种环境成本不菲,人们渴望连接不同厂商的计算机建立一个成本更低的网络环境,而连接异构型计算机的通信网络技术就是我们所看到的互联网技术。
面临互联网的广泛应用,各家厂商不仅力图保证自家产品的互联性,还着力于让自己的网络技术不断与互联网技术兼容。
个人电脑在诞生之初可以说是一种单机模式的工具,而现在它则被更广泛地应用于互联网的访问。而且,无论相距多远,世界各地的人只要接入互联网,就可以通过个人电脑实现即时沟通与交流。
2000年 以互联网为中心的时代
互联网的普及和发展对通讯领域产生了巨大的影响,许多技术都向互联网靠拢。
2010年 无论何时何地一切皆TCP/IP的网络时代
从“单纯建立连接”到“安全建立连接”。
互联网是由许多独立发展的网络通讯技术融合而成,使它们之间不断融合并实现统一的正是TCP/IP技术。那什么是TCP/IP技术呢?
TCP/IP是通讯协议的统称。下面我们来学习“协议”的概念。
1.3 协议
在计算机网络与信息通信领域里,人们经常提及“协议”一词。互联网常用的具有代表性的协议有IP,TCP,HTTP等。
“计算机网络体系结构”将这些网络协议进行了系统的归纳。TCP/IP就是IP,TCP,HTTP等协议的集合。可用于互联网和局域网。
简单来说,协议就是计算机与计算机之间通过网络实现通信时实现达成的一种“约定”。这种“约定”使那些由不同厂商的设备,不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。
协议就好比是一种语言,两人之间谈话的协议(语言)不同,就无法将数据(所说的话)传递给对方。
计算机没人智能,所以在设计计算机程序与硬件时,要充分考虑通讯过程中可能会遇到的各种异常以及对异常的处理。在实际遇到问题时,正在通讯的计算机之间也必须具备相应的设备和程序来应对异常。
分组交换是指将大数据分割为一个个的叫包(Packet)的较小单位进行传输的方法。这里所说的包,如同我们平常在邮局里见到的邮包。分组交换就是将大数据分装为一个个这样的邮包交给对方。
1.4 协议由谁规定
在计算机通信诞生之初,系统化和标准化并未得到重视,每家计算机厂商都出产各自的网络产品来实现计算机通信。对于协议的标准化,分层化等事宜没有特别强烈的意识。
随着计算机重要性的不断提高,很多公司逐渐意识到兼容性的重要意义。人们开始着手研究使不同厂商生产的异构机型也能够互相通信的技术。
为了实现协议的标准化,国际标准化组织(ISO)制定了一个OSI(开放式通信系统互联参考模型),本文讲解的TCP/IP协议作为互联网上的一种标准,也作为行业标准,俨然已成为全世界所广泛应用的通讯协议。
1.5 协议分层与OSI参考模型
OSI模型将通讯协议中必要的协议分为7层。通过这些分层,使得那些复杂的网络协议更加简单化。
在分层中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一次提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”,同一层之间的交互所遵循的约定叫做“协议”。
为了更好的理解上图,我们以电话聊天为例,下图中A与C正在通过电话(通讯设备)用汉语(语言协议)聊天。
分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统,通过分层可以细分通讯功能。
下面我们来认识OSI参考模型
OSI参考协议是一个“模型”,它也只是对各层的作用做了一系列粗略的界定,并没有对协议和接口进行详细的定义。对学习和设计协议只起到一个引导的作用。
各个分层的作用
应用层:为应用程序提供服务并规定应用层程序中通信相关的细节。包括文件传输,电子邮件,远程登录(虚拟终端)等协议。
表示层:将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转按为上层能够处理的格式。因此它主要负责数据格式的转换。
具体来说,就是将设备固有的数据格式转换为网络标准传输格式。不同设备对同一比特流解释的结果可能会不同。因此,使它们保持一致是这一层的主要作用。
会话层:负责建立和断开通信连接(数据流动的運辑通路),以及数据的分割等数据传输相关的管理。传输层:起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。
网络层:将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择。
数据链路层:负责物理层面上互连的、节点之间的通信传输。例如与1个以太网相连的2个节点之间的通信。将0、1序列划分为具有意义的数据桢传送给对端(数捆桢的生成与接收)。
物理层:负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。
1.6 OSI参考模型通讯处理举例
(这一小节博主只介绍了关键流程,强烈建议下来有空看看书,对理解很有帮助)
下面举例说明7层网络模型的功能。假设使用主机A的用户A要给使用主机B的用户B发来一封电子邮件。
发送端从上到下按照顺序传输数据,接收端由下至上按照顺序传输顺序。
在每个分层上,在处理由上一层传过来的数据时可以附上当前分层协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,最终将发送端的数据恢复原状。
1.7 传输方式的分类
网络与通信中可以根据其数据发送方法进行多种分类,下面我们来介绍几种。
通过网络发送数据,大致可分为面向有连接与面向无连接两种类型。
面向有连接型中,在发送数据之前,需要在收发主机之前连接一条通信线路。面向有连接型就好像人平常打电话,输入完对方电话号码播出之后,只有对方端拿起电话才是真正通话。
面向无连接型则不要求建立和断开连接。发送端可于任何时间发送数据,接收端则永远不知道自己会在何时从哪里接收数据,因此,接收端需要时常确认是否收到了数据。就好像邮差一样,负责处理邮件业务的营业员,不需要确认收件人的详细地址是否真的存在,也不需要确认收件人是否真的能收到包裹,只需要发件人有一个寄件地址就可以办理邮寄包裹的业务。
目前,网络通信方式大致分为两种——电路交换和分组交换。(这里博主本想简单概括,但还是需要大家结合图片耐心细读~)
前者多用于过去的电话网,后者是一种较新的通信方式,TCP/IP协议就是采用了分组交换技术。
在电路交换中,交换机主要负责数据的中转处理。计算机首先被连接到交换机上,而交换机与交换机之间则有众多通信线路再继续连接。因此计算机之间在发送数据时,需要通过交换机与目标主机建立通信电路。我们将连接电路称为建立连接。建立好连接后,用户可以一直使用这条电路,直到该连接被断开为止。
如果某条电路只是用来连接两台计算机的通信线路,就意味着只需在这两台计算机之间实现通信,因此这两台计算机是可以独占线路进行数据传输的。但是,如果一条电路上连接了多台计算机,而这些计算机之间需要相互传递数据,就会出现新的问题。鉴于一台计算机在收发信息时会独占整个电路,其他计算机只能等待这台计算机处理结束以后才有机会使用这条线路收发数据。并且在此过程中,谁也无法预测某一台计算机的数据传输从何时开始又在何时结束。如果并发用户数超过交换机之间的通信线路数,就意味着通信根本无法实现。
为此,人们想出了一个新的方法,即让连接到通信电路的计算机将所要发送的数据分成多个数据包,按照一定的顺序排列之后分别发送。这就是分组交换。有了分组交换,数据被纸分后,所有的计算机就可以一齐收发数据,这样也就提高了通信线路的利用率。由于在分组的过程中,已经在每个分组的首部写人了发送端和接收端的地址,所以即使同一条线路同时为多个用户提供服务,也可以明确区分每个分组数据发往的目的地,以及它是与哪台计算机进行的通信。
(图为分组交换)
在分组交换中,由分组交换机(路由器)连接通信线路。分组交换的大致处理过程是:发送端计算机将数据分组发送给路由器,路由器收到这些分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。因此,分组交换也有另一个名称:蓄积交换。路由器接收到数据以后会按照顺序缓存到相应的队列当中,再以先进先出的顺序将它们逐一发送出去”。在分组交换中,计算机与路由器之间以及路由器与路由器之间通常只有一条通信线路。因此,这条线路其实是一条共享线路。
在电路交换中,计算机之间的传输速度不变。然而在分组交换中,通信线路的速度可能会有所不同。根据网络拥堵的情况,数据达到目标地址的时间有长有短。另外,路由器的缓存饱和或溢出时,甚至可能会发生分组数据丢失,无法发送到对端的情况。
网络通信当中,也可以根据目标地址的个数及后续的行为对通信进行分类。如广播多播就是这种分类的产物。
分为单播,广播,多播,任播。
单播:比如早先的固定电话,1对1通信。
广播:典型例子就是电视播放,将电视信号一齐发送非非特定的多个接受对象。
多播:和广播类似,不同的是要限定某一组主机为接收端。
任播:在特定的多台主机中选出一台作为接受端。
1.8 地址
通讯过程中,发送端和接收端可以被视为通信主体。它们都能由一个所谓的“地址”的信息标识出来。当人们使用电话时,电话号码就相当于“地址”。
在实际的网络通信中,每一层的协议所使用的地址都不尽相同,例如在TCP/IP通信中使用MAC地址,IP地址,端口号等信息作为OSI模型不同层的地址标识。
一个地址必须明确地表示一个主体对象,在同一个通信网络中不允许由两个相同地址的通信主体存在,这就是地址的唯一性。
在1:1的单播中可以理解,那如何理解多播,广播,任播呢?如何做到通过一个地址访问多个设备?
这种情况下,接收端设备可能不止一个,为此,可以对这些由多个设备组成的一组通信赋予同一个具有唯一特性的地址。从而接收对象。就好比
当地址总数越来越多时,如何高效的从中找出通信的目标地址成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。
其实电话和信件通信中就有了地址分层的概念。电话地址包含国家区号和国内区号,通信地址包含国名,省名,市名和区名等,正是有了这些层次分类才能更加快速的定位某一个地址。
此外,MAC地址和IP地址在标识一个通信主体时虽然具有唯一性,但是它们当中只有IP地址具有层次性。
那IP地址时如何实现分层的呢?(原文P36可加强理解)
一方面,IP地址由网络号和主机号两部分组成,即使IP地址不同,若主机号不同,网络号相同,说明它们处于同一个网段。通常,处于同一网段的主机也都属于同一个部门或集团组织。另一方面,网络号相同的主机在组织结构,供应商类型和地域分布都比较集中,也为IP寻址带来了极大的方便,这也是为什么说IP地址具有层次性的原因。
1.9 网络的构成要素
搭建一套网络环境要涉及各种各样的电缆和网络设备。在此仅介绍连接计算机与计算机的硬件设备。
问:计算机网络是指计算机与计算机相连而组成的网络。那么现实中计算机之间又是怎样连接的呢?
答:计算机之间通过电缆相互连接,电缆有很多种,双绞线电缆,光纤电缆,同轴电缆,串行电缆等,根据数据链路(相互直连的设备之间进行通信所涉及的协议及其网络。为此,有众多介质与之对应)的不同选用的电缆类型也不尽相同,而媒介本身也可以被划分为电波,微波等不同类型的电磁波。
现在我们来认识一硬件,网卡。任何一台计算机连接网络时,必须使用网卡(全称是网络接口卡)。网络接口卡(NIC)有时也被叫做网络适配器,网卡,LAN卡。
现在许多设备都已内置网卡,如果没有配置网卡,至少得外接一个拓展槽以便插入网卡。
接下来我们来认识中继器———是OSI模型的第一层,物理层面延长网络的设备。由电缆传来的电信号或光信号经由中继器的波形调整和放大再传给另一个电缆。
一般而言,中继器两端连接的是相同的通信媒介,但有的中继器也可以完成不同媒介之间的传递工作。中继器的网络距离并非无限延长,例如一个10Mbps的以太网最多可以由4个中继器分段连接,而一个100Mbps的以太网则最多只能连接两个中继器。
有些中继器可以提供多个端口服务。这种中继器被称作中继集线器或集线器。因此,集线器也可以看作是多口集线器,每个端口都可以成为一个中继器。
网桥/2层交换机
网桥在OSI模型的第2层———数据链路层面上连接两个网络的设备。它能够识别数据链路层的数据帧(与分组数据意思大致相同,但是在数据链路层习惯称为帧),并将这些数据帧临时储存于内存,再重新生成信号作为一个全新的帧转发给另一个网段。
数据帧中有一个数据位叫做FCS,用以检测数据是否正确送达目的地,用以检测数据是否送达目的地。网桥通过检测这个值,将那些损坏的值丢弃。此外,网桥还能通过地址自学机制和过滤功能控制网络流量。
有些网桥能够判断是否将数据报文转发给相邻的网段,这种网桥称为自学式网桥。这类网桥会记住曾经通过自己转发的所有的数据帧的MAC地址,并保存到自己的内存表里,来判断哪个网段中包含持有哪类MAC地址的设备。(很聪明有没有?)
以太网中使用的交换集线器现在基本也属于网桥的一种,交换集线器中连接电缆的每个端口都能提供类似网桥的功能。
路由器/3层交换机
路由器是在OSI模型的第3层———网络层面连接两个网络,并对分组报文进行转发的设备。网桥是根据物理地址(MAC地址)进行处理,而路由器/3层交换机则是根据IP地址进行处理的。路由器可以连接到不同的数据链路。
4·~7层交换机
4·~7层交换机负责处理OSI模型中从传输层到数据层的数据。如果有TCP/IP分层模型,4~7层交换机就是以TCP等协议的传输层机器上面的应用层为基础,分析收发数据,并对其进行特定的处理。
我们来举例一种4~7层交换机模型,对于一个并发访问量非常大的企业级Web站点,使用一台服务器不足以满足前端的访问需求,需要架设多台服务器来分担。为了能通过同一个URL将前端访问分发到后台多个服务器上,可以在这些服务器的前端加一个负载均衡器。这个负责均衡器就是4~7层交换机的一种。
网关
网关是OSI模型中负责从传输层到应用层的数据进行转换和转发的设备。网关不仅转发数据还对数据进行转换,它通常会使用一个表示层或应用层网关,在两个不能进行直接通信的协议之间通信,最终实现两者之间的通信。
一个典型的例子就是互联网邮件和手机邮件之间的转换服务,为什么连到互联网的电脑与手机之间能够互发邮件呢?
互联网和手机设置了一道网关,网关负责读取完各种不同的协议后,对它们逐一进行合理的转换,再将相应的数据转发出去,这样一来不用电子邮件的协议也可以互相发邮件。
1.10 现代网络实态
我们以交通道路为例说明现实当中的网络配置。
高速公路的“骨干”或“核心”相当于计算机网络的中心,人们 通常选用高速路由器相互连接使之快速传递大量数据。
网络中相应于高速公路出入口的部分被称为“边缘网络”,常用的设备有多功能路由器和3层交换机。
高速公路出入口连接出国道,省道,从而可以直接通往市区街道对应计算机网络中连接“边缘网络”的部分叫做“接入层”或“汇聚层”。
问:那实际的互联网通信是怎么构成的呢?
答:人们在连接互联网时,一般会选用互联网接入服务。联网之后,汇集到无线局域网路由器和最近交换器和最近交换机的通信会再次被连接到前面所提到的“接入层”,甚至还有可能通过“边缘网络”或“主干网”实现与目标地址间的通信。
手机开机就会和最近的基站发生无线通信,基站上有手机基站天线,基站本身也相当于网络的“接入层”。基站收集发通信请求被汇集到控制中心(“边缘网络”),之后会再被接入到互联通信控制中心的主干网。
接下来我们从信息发布者的角度来看网络,网络信息传播的以往的主流做法是个人或企业自己制作网站(主页)部署到服务器中将所要发布的信息公之于众。现在,通过博客,托管主机的方式被更多人选择。
2.TCP/IP基础知识
2.1 TCP/IP出现的背景与历史
目前,计算机网络领域中,TCP/IP协议可谓名气最大,使用范围最广。那TCP/IP协议是如何在短时间内获得如此广泛普及的呢?
还记得我们刚开始说的吗?计算机通信技术最早是美国军方为了计算导弹落点而产生的一项技术,在20世纪60年代,以美国国防局为中心的组织展开了类似的研究。
美国国防局希望通信时即使遭到了敌方的破坏,也可以通过迂回的方式实现通信,使通信不间断。
分组交换技术不仅能实现军工防卫的应用,还可以使多个用户同一时间共享同一条通信线路,降低了搭建线路的成本。
1969年,为验证分组交换技术的实用性,研究人员搭建了一套网络在研究所和高校之间,这套网络被称为ARPANET,也是全球互联网的鼻祖。这也说明基于分组交换技术的通信方法是可行的。
20世纪70年代,ARPANET的一个研究机构研发出了TCP/IP,直到1982年,TCP/IP才被最终定下来,于1983年成为ARPANET网络唯一指定的协议。
1980年,ARPANET中的很多大学与研究机构开始使用一种叫做BSD UNIX的操作系统, 由于BSD UNIX实现了TCP/IP协议,所以很快在1983年,TCP/IP被ARPANET正式采用。
由于当时局域网,UNIX工作站,TCP/IP构建网络盛行,那些大学和研究机构也逐渐开始将ARPANET连接到了NSFnet网络,此后,基于TCP/IP而形成的世界性范围的网络——互联网诞生了。以连接UNIX主机的形式连接各个终端节点,这一主要方式使互联网得到了迅速的普及。
互联网最初是用于实验和研究,到了1990逐渐被引入公司企业和一般家庭。也出现了专门提供互联网接入服务的公司(ISP),这些都使互联网得到了更为广泛的普及。
连接到互联网可以以www获取世界各处的信息,可以通过电子邮箱进行交流,还可以向全世界发布自己的信息,互联网使人们的生活变得更加多姿多彩,因此商用互联网得到广泛的普及。
2.2 TCP/IP的标准化
为什么OSI协议并没有得到普及,真正被广泛使用的是TCP/IP协议?究其原因,是由TCP/IP的标准化所致。
从字面意思上讲,有人认为TCP/IP是指TCP与IP两种协议,实际生活中有时也确实是指这两种协议,但很多时候,它只是利用IP通信时所必要用到的协议群的统称。
问:TCP/IP的标准化和其他的有什么不同呢?
答:在于它的开放性和实用性。
开放性:首先,TCP/IP协议是由IETF讨论制定的,而IETF本身是一个允许任何人加入进行讨论的组织。其次,TCP/IP标准化过程中的首要任务是实现真正能够通信的技术。难怪有人打趣说“TCP/IP简直就是先开发程序,后写规格标准。”
实用性:标准化的协议能否被实际采用可行性较强。
那些需要标准化的协议,被人们列入RFC文档并在互联网公布。RFC不仅记录了协议规范内容,还包含了协议的实现和运用的相关信息,以及实验方面的信息。
RFC文档通过编号组织每个协议的标准化请求,RFC的编码是既定的,一旦成为某一RFC的内容,就不能再对其进行任意修改。不论扩展还是从新发行都需要一个新的RFC文档,重新发行时旧的文档作废,新的文档会明确规定扩展了那个已有的文档以及要作废哪个文档。
这时,就有人觉得每当修改时都要产生新的编号太麻烦,为此,人们采用STD方式管理编号。STD用来记载哪个编号制定哪个协议,因此,同一个协议的规范内容即便发生了变化也不会导致STD编号发生变化,今后协议内容更改不会改变STD编号,但有可能导致某个STD下的RFC编号视情况有所增减。
与STD相似,有FYI也开始标注编号组织,为了方便人们检索,在每个编号里覆盖了所涉及的RFC编号,即使更新内容,编号也不会发生变化。
问:那标准化流程是怎样的呢?(原书P58,这里建议看看)
答:TCP/IP的一个协议的标准化一定要经过IETF讨论,虽然一年只组织三次会议,但是日常都会通过邮件组的形式进行讨论。
流程分为互联网草稿阶段,提议标准阶段,草稿标准阶段,标准阶段四个阶段。
2.3 互联网基础知识
说到“互联网”家喻户晓,但互联网到底是什么呢?
internet指的是多个网络连接使其构成一个更大的网络,所以internet一词本意为网际网。现在“互联网”已经是一个专属名词了,对应的英文单词是“The Internet”。
TCP/IP是互联网的协议。
互联网一词原意是网际网,连接一个又一个网络。那么连接全世界的互联网也是如此。较小范围的网络之间相连组成机构内部的网络,机构内部的网络之间相连再形成区域网络,而各个区域网络之间再互联,最终就形成了连接全世界的互联网。因此,互联网是一个有层次的网络。
互联网中的每个网络都是由骨干网和末端网组成的。每个网络之间通过网络控制中心(NOC)相连,如果网络的运营商不同,它的网络连接方式和使用方法也会不同,连接这种网络需要有IX的支持。总之,互联网就是众多异构的网络通过IX互连的一个巨型网络。
连接互联网需要向ISP或区域网提出申请,公司企业或家庭申请入网只要联系ISP签约即可。(或许就等于找人接宽带吧...)
2.4 TCP/IP基础模型
我们聊了太多TCP/IP,那它究竟是什么呢?本节对其做一个简单的介绍。
TCP/IP和OSI参考模型
两者相比,OSI模型更注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发那种程序”。
硬件(物理层)
TCP/IP的最底层是负责数据传输的硬件,相当于以太网或电话线路等物理层的设备。
网络接口层(数据链路层)(这里的网络接口层对应图的网卡层)
网络接口层是利用以太网中的数据链路进行通信,因此属于接口层。也就是说,把它当作让NIC起作用的“驱动程序”也无妨。计算机添加外设或拓展卡需要相应驱动的支持。因此,人们常常还需要在操作系统的基础上安装一些驱动软件以便使用这些附加硬件。
互 以上是关于五万字,快速读完《图解TCP/IP》核心内容!!!(建议收藏)的主要内容,如果未能解决你的问题,请参考以下文章