UDP协议有什么特点
UDP是User Datagram Protocol的简称,是TCP/IP体系结构中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议是IP协议与上层协议的接口,用端口号分别为运行在同一设备上的多个应用程序提供服务。它定义在IETFRFC768中。UDP是分发信息的理想协议,适用于追求效率且不需要额外可靠机制的情形,如音、视频流媒体分发、高层协议或应用程序提供错误和流控制功能时的快速数据分发。UDP服务于很多知名应用,如网络文件系统(NFS)、简单网络管理协}义(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)、动态主机配置协议(DHCP)、路由信息协议(RIP)等。扩展资料:UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。某些应用程序(如TFTP)可能会根据需要在应用程序层中添加基本的可靠性机制。一些应用程序不太需要可靠性机制,甚至可能因为引入可靠性机制而降低性能,所以它们使用UDP这种缺乏可靠性的协议。流媒体,实时多人游戏和IP语音(VoIP)是经常使用UDP的应用程序。 在这些特定应用中,丢包通常不是重大问题。如果应用程序需要高度可靠性,则可以使用诸如TCP之类的协议。例如,在VoIP中延迟和抖动是主要问题。如果使用TCP,那么任何数据包丢失或错误都将导致抖动,因为TCP在请求及重传丢失数据时不向应用程序提供后续数据。如果使用UDP,那么应用程序则需要提供必要的握手,例如实时确认已收到的消息。由于UDP缺乏拥塞控制,所以需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送端无法检测拥塞,所以像使用包队列和丢弃技术的路由器之类的网络基础设备会被用于降低UDP过大流量。数据拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制,来减小这个潜在的问题。参考资料来源:百度百科——UDP协议
关键是最后一句总结 UDP(User Datagram Protocol) 用户数据报协议 (RFC 768)用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分别运行在同一台设备上的多个应用程序。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 UDP 的“端口号”完成的。例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP 头插入目标端口号 53 。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。 UDP 端口的详细介绍可以参照相关文章。与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。UDP 适用于不需要 TCP 可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。 UDP 是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。协议结构Source Port — 16位。源端口是可选字段。当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。如果不使用,设置值为0。Destination Port — 16位。目标端口在特殊因特网目标地址的情况下具有意义。Length — 16位。该用户数据报的八位长度,包括协议头和数据。长度最小值为8。Checksum — 16位。IP 协议头、UDP 协议头和数据位,最后用0填补的信息假协议头总和。如果必要的话,可以由两个八位复合而成。Data — 包含上层数据信息。UDP的特点:UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程序传给网络上另一台主机上的某一个应用程序。UDP协议有如下的特点:1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。4、UDP传送数据较TCP快速,系统开销也少。 从以上特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。
UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。举一个IP电话进行通话的例子。如果使用TCP,数据在传送途中如果丢失会被重发,但是这样无法流畅地传输通话人的声音,会导致无法进行正常交流。而采用UDP,它不会进行重发处理。从而也就不会有声音大幅度延迟到达的问题。即使有部分数据丢失,也只是影响某一小部分的通话。
UDP是用户数据报协议,是不可靠快速传输协议,就像聊天软件就是用的UDP协议,因为快,及时。 相对于TCP就是可靠传输协议,必须双方回应才行,比较慢,但是数据包不会丢失

tcp和udp的特点和区别
TCP协议的主要特点(1)TCP是面向连接的运输层协议;(2)每一条TCP连接只能有两个端点(即两个套接字),只能是点对点的;(3)TCP提供可靠的传输服务。传送的数据无差错、不丢失、不重复、按序到达;(4)TCP提供全双工通信。允许通信双方的应用进程在任何时候都可以发送数据,因为两端都设有发送缓存和接受缓存;(5)面向字节流。虽然应用程序与TCP交互是一次一个大小不等的数据块,但TCP把这些数据看成一连串无结构的字节流,它不保证接收方收到的数据块和发送方发送的数据块具有对应大小关系,例如,发送方应用程序交给发送方的TCP10个数据块,但就受访的TCP可能只用了4个数据块久保收到的字节流交付给上层的应用程序,但字节流完全一样。UDP协议特点(1)UDP是无连接的传输层协议;(2)UDP使用尽最大努力交付,不保证可靠交付;(3)UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;(4)UDP没有拥塞控制,因此即使网络出现拥塞也不会降低发送速率;(5)UDP支持一对一 一对多 多对多的交互通信;(6)UDP的首部开销小,只有8字节。TCP和UDP的区别(1)TCP是可靠传输,UDP是不可靠传输;(2)TCP面向连接,UDP无连接;(3)TCP传输数据有序,UDP不保证数据的有序性;(4)TCP不保存数据边界,UDP保留数据边界;(5)TCP传输速度相对UDP较慢;(6)TCP有流量控制和拥塞控制,UDP没有;(7)TCP是重量级协议,UDP是轻量级协议;(8)TCP首部较长20字节,UDP首部较短8字节;扩展资料:TCP的可靠性原理可靠传输有如下两个特点:a.传输信道无差错,保证传输数据正确;b.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据;(1)首先,采用三次握手来建立TCP连接,四次握手来释放TCP连接,从而保证建立的传输信道是可靠的。(2)其次,TCP采用了连续ARQ协议(回退N,Go-back-N;超时自动重传)来保证数据传输的正确性,使用滑动窗口协议来保证接方能够及时处理所接收到的数据,进行流量控制。(3)最后,TCP使用慢开始、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞。基于TCP和UDP的常用协议HTTP、HTTPS、FTP、TELNET、SMTP(简单邮件传输协议)协议基于可靠的TCP协议。TFTP、DNS、DHCP、TFTP、SNMP(简单网络管理协议)、RIP基于不可靠的UDP协议常见协议的端口号FTP的20、21端口,21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。TELNET 23SMTP 25DNS 53TFTP 69HTTP 80SNMP的161、162端口。SNMP的161端口用于SNMP管理进程获取SNMP代理的数据,而162端口用于SNMP代理主动向SNMP管理进程发送数据
tcp:提供面向连接的服务,数据传输前先建立连接,传输完毕后释放连接,提供可靠连接; udp:发送数据前不需要先建立连接,发送后也不需要释放连接,减少开销和延迟,但不保证可靠交付。

TCP/IP -- 2
TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节调控交给应用的通信传输。 IP首部中有一个协议字段,用来标识网络层的上一层所采用的是哪一种传输层协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容,还是UDP的内容。同样,传输层的TCP和UDP,为了识别自己所传输的数据部分究竟应该发给哪个应用,也设定了这样一个编号。TCP/IP的众多应用协议大多以客户端/服务端的形式运行。客户端类似于客户的意思,是请求的发起端。而服务端则表示提供服务的意思,是请求的处理端。另外,作为服务端的程序有必要提前启动,准备接收客户端的请求。否则即使有客户端的请求发过来,也无法做到响应的处理。这些服务端程序在UNIX系统中叫做守护进程。例如HTTP的服务端程序是httpd(HTTP守护进程),而ssh的服务端程序是sshd(SSH守护进程)。在UNIX中并不需要将这些守护进程逐个启动,而是启动一个可以代表它们接收客户端请求的inetd(互联网守护进程)服务程序即可。它是一种超级守护进程,该超级守护进程收到客户端请求以后会创建新的进程并转换为sshd等各个守护进程。确认一个请求究竟发给的是哪个服务端(守护进程),可以通过所收到数据包的目标端口号轻松识别。TCP:TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管道中的水流。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP为提供可靠性传输,实行"顺序控制"或"重发控制"机制。此外还具备"流控制(流量控制)"、"拥塞控制"、提高网络利用率等众多功能。UDP:UDP是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在UDP的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需求进行重发处理。TCP与UDP的区分:TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。UDP主要用于那些对于高速传输和实时性有较高要求的通信或广播通信。数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信。它们是"源IP地址"、"目标IP地址"、"协议号"、"源端口号"、"目标端口号"。只要其中某一项不同,则被认为是其他通信。标准既定的端口号:这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。时序分配法:服务器有必要确定监听端口号,但是接收服务的客户端没必要确定端口号。在这种方法下,客户端应用程序可以完全不用自己设置端口号,而全权交给操作系统进行分配。操作系统可以为每个应用程序分配互不冲突的端口号。根据这种动态分配端口号的机制,即使是同一客户端程序发起多个TCP连接,识别这些通信连接的5部分数字也不会全部相同。端口号由其使用的传输层协议决定。因此,不同的传输协议可以使用相同的端口号。数据到达IP层后,会先检查IP首部中的协议号,再传给相应协议的模块。如果是TCP则传给TCP模块,如果是UDP则传给UDP模块去做端口号的处理。即使是同一端口号,由于传输协议是各自独立地进行处理,因此相互之间不会受到影响。UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中即使出现丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正功能。如果需要这些细节控制,那么不得不交由采用UDP的应用程序去处理。由于UDP面向无连接,它可以随时发送数据。再加上UDP本身的处理既简单又高效,因此经常用于以下几个方面:TCP是对"传输、发送、通信"进行"控制"的"协议"。它充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。为了通过IP数据报实现可靠性传输,需要考虑很多事情。例如数据的破坏、丢包、重复以及分片顺序混乱等问题。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答。序列号是按照顺序给发送数据的每一个字节都标上号码的编号。接收端查询接收数据TCP首部中的序列号和数据的长度,将自己下一步应该接受的序号作为应答返送回去。就这样,通过序列号和确认应答号,TCP可以实现可靠传输。重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。重发超时的计算既要考虑往返时间又要考虑偏差是有其原因的。根据网络环境的不同往返时间可能会产生大幅度的摇摆,之所以发生这种情况是因为数据包的分段是经过不同路线到达的。TCP/IP的目的是即使在这种环境下也要进行控制,尽量不要浪费网络流量。数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。此外,数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。TCP提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好通信两端之间的准备工作。在数据通信之前,通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答。如果对端发来确认应答,则认为可以进行数据通信。如果对端的确认应答未能到达,就不会进行数据通信。此外,在通信结束时会进行断开连接的处理。可以使用TCP首部用于控制的字段来管理TCP连接。一个连接的建立与断开,正常过程至少需要来回发送7个包才能完成。在建立TCP连接的同时,也可以确定发送数据包的单位,我们也可以称其为"最大消息长度"(MSS)。最理想的情况是,最大消息长度正好是IP中不会被分片处理的最大数据长度。MSS是在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接请求时,会在TCP首部中写入MSS选项,告诉对方自己的接口能够适应的MSS的大小。然后会在两者之间选择一个较小的投入使用。TCP以1个段为单位,每发一个段进行一次确认应答的处理。这样的传输方式有一个缺点。那就是,包的往返时间越长通信性能就越低。为了解决这个问题,TCP引入了窗口这个概念。即使在往返时间较长的情况下,它也能控制网络性能的下降。窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。在未使用窗口控制时,没有收到确认应答的数据都会被重发。而使用了窗口控制,某些确认应答即使丢失也无需重发。其次,我们来考虑一下某个报文段丢失的情况。接收主机如果收到一个自己应该接收的序号以外的数据时,会针对当前位置收到的数据返回确认应答。当某一报文段丢失后,发送端会一直收到序号为1001的确认应答,这个确认应答提醒发送端,"我想接收的是从1001开始的数据"。TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量。这就是所谓的流控制。它的具体操作是,接收端主机向发送端主机通知自己可以接收数据的大小,于是发送端会发送不超过这个限度的数据。这大小限度被称作窗口大小。窗口大小的值就是由接收端主机决定的。当接收端从3001号开始的数据段后其缓冲区即满,不得不暂时停止接收数据。之后,在收到发送窗口更新通知后通信才得以继续进行。有了窗口控制,收发主机之间可以不再以一个数据段为单位发送确认应答,也能够连续发送大量数据包。但是如果在通信刚开始时就发送大量数据,也有可能会引发其他问题。TCP为了防止该问题的出现,在通信一开始时就会通过一个叫做慢启动的算法得出的数值,对发送数据量进行控制。首先,为了在发送端调节所要发送数据的量,定义了一个叫做"拥堵窗口"的概念。于是在慢启动的时候,将这个拥堵窗口的大小设置为1个数据段(1 MSS)发送数据,之后每收到一次确认应答(ACK),拥堵窗口的值就加1。在发送数据包时,将拥堵窗口的大小与接收端主机通知的窗口大小做比较,然后按照它们当中较小那个值,发送比其还要小的数据量。如果重发采用超时机制,那么拥塞窗口的初始值可以设置为1以后再进行慢启动修正。有了上述这些机制,就可以有限的减少通信开始时连续发包导致的网络拥堵,还可以避免网络拥塞情况的发生。不过,随着包的每次往返,拥塞窗口也会以1、2、4等指数函数的增长,拥堵状况激增甚至导致网络拥塞的发生。为了防止这些,引入了慢启动阀值的概念。只要拥塞窗口的值超出这个阀值,在每收到一次确认应答时,只允许以下面这种比例放大拥塞窗口:TCP的通信开始时,并没有设置相应的慢启动阈值。而是在超时重传时,才会设置为当前拥塞窗口一半的大小。由于重复确认应答而触发的高速重发与超时重发机制的处理多少有些不同。因为前者要求至少3次的确认应答数据段到达对方主机后才触发,相比后者网络的拥堵要轻一些。而由重复确认应答进行高速重发控制时,慢启动阈值的大小被设置为当时窗口大小的一半,然后将窗口的大小设置为该慢启动阈值+3个数据段的大小。当TCP通信开始以后,网络吞吐量会逐渐上升,但是随着网络拥堵的发生吞吐量也会急剧下降。于是会再次进入吞吐量慢慢上升的过程。因此所谓TCP的吞吐量的特点就好像是在逐步占领网络带宽的感觉。UDP-Lite(Lightweight User Datagram Protocol,轻量级用户数据报协议)是扩展UDP机能的一种传输层协议。在基于UDP的通信当中如果校验和出现错误,所收到的包将被全部丢弃。然而,现实操作中,有些应用在面对这种情况时并不希望把已经收到的所有包丢弃。如果将UDP中校验和设置为无效,那么即使数据的一部分发生错误也不会将整个包废弃。不过,这不是一个很好的方法。因为如果发生的错误有可能是UDP首部中的端口号被破坏或是IP首部中的IP地址被破坏,就会产生严重后果。因此,不建议将校验和关闭。为了解决这些问题,UDP的修正版UDP-Lite协议就出现了。UDP-Lite提供与UDP几乎相同的功能,不过计算校验和的范围可以由应用自行决定。这个范围可以是包加上伪首部的校验和计算,可以是首部与伪首部的校验和计算,也可以是首部、伪首部与数据从起始到中间某个位置的校验和计算。有了这样的机制,就可以只针对不允许发生错误的部分进行校验和的检查。 对于其他部分,即使发生了错误,也会被忽略不计。而这个包也不会被丢弃,而是直接传给应用继续处理。SCTP(Stream Control Transmission Protocol,流控制传输协议)与TCP一样,都是对一种提供数据到达与否相关可靠性检查的传输层协议。其主要特点如下:SCTP主要用于进行通信的应用之间发送众多较小消息的情况。这些较小的应用消息被称作数据块(Chunk),多个数据块组成一个数据包。此外,SCTP具有支持多重宿主以及设定多个IP地址的特点。多重宿主是指同一台主机具备多种网络的接口。例如,笔记本电脑既可以连接以太网又可以连接无线LAN。同时使用以太网和无线LAN时,各自的NIC会获取到不同的IP地址。进行TCP通信,如果开始时使用的是以太网,而后又切换为无线LAN,那么连接将会被断开。因为从SYN到FIN包必须使用同一个IP地址。然而在SCTP的情况下,由于可以管理多个IP地址使其同时进行通信,因此即使出现通信过程当中以太网与无线LAN之间的切换,也能够保持通信不中断。所以SCTP可以为具备多个NIC的主机提供更可靠的传输。DCCP(Datagram Congestion Control Protocol,数据报拥塞控制协议)是一个辅助UDP的崭新的传输层协议。UDP没有拥塞控制机制。为此,当应用使用UDP发送大量数据包时极容易出现问题。互联网中的通信,即使使用UDP也应该控制拥塞。而这个机制开发人员很难将其融合至协议中,于是便出现了DCCP这样的规范。DCCP具有如下几个特点: TCP首部比UDP首部要复杂得多。TCP中没有表示包长度和数据长度的字段。可由IP层获知TCP的包长,由TCP的包长可知数据的长度。

传输控制协议tcp 与udp 的区别
1)连接vs无连接:TCP面向连接,在收发数据前必须和对方建立可靠的连接;UDP是无连接的,发送数据前是不需要建立连接,当它想传送时就简单的去抓取来自应用程序的数据,并尽可能快的把它扔到网络上。2)可靠性:TCP提供交付保证,是可靠的,意味着一个使用TCP协议发送的消息是保证交付给客户端的,如果消息在传输过程中丢失,那么它将重发,通过TCP连接传送的数据,没有差错,不丢失,不重复,且按序到达;UDP不提供任何交付保证,是不可靠的,,他是尽最大的努力,即不保证可靠地交付3)有序性:TCP也保证了消息的有序性,该消息将从服务器端发送的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的,但TCP协议将会为你排好序;UDP不提供任何有序性或序列性的保证,数据包将以任何可能的顺序到达(尽管有基于UDP的协议通过使用序列号和重传来提供有序的可靠的应用)4)数据边界:TCP不保存数据的边界,数据以字节流的形式发送,并没有明显的标志表明传输信号消息的边界;UDP保存数据的边界,数据包单独发送,只要当他们到达时,才会再次集成,包有明确的界限表明哪些包已经收到,这意味着在消息发送后,在接收器接口将会有一个读操作,来生成一个完成的消息5)速度:TCP比较慢,因为TCP必须创建连接,以保证消息的可靠交付和有序性,他需要做比UDP多得多的事UDP比较快6)重量级vs轻量级TCP被认为是重量级的协议UDP被认为是轻量级的协议,因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的信息7)头大小TCP数据包报头的大小是20字节,TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口UDP数据包报头的大小是8字节,UDP报头中只包含长度,源端口号,目的端口和校验和8)拥塞或流控制TCP有流量控制和拥塞控制UDP不能进行流量控制无拥塞控制9)对接每一条TCP的连接是点到点的;UDP支持一对一,一对多和多对多的交互通信10)适合场景TCP提供可靠交付和有序性的保证,它最适合需要高可靠并对传输时间要求不高的应用,如金融领域UDP更适合的应用程序需要快速,高效的传输应用,如游戏和娱乐场所

UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这句话怎么理解?
TCP被设计为一种善良的协议,当发送方察觉网络出现拥塞时,就会抑制自己的发送。UDP没有拥塞控制,则会不管不顾发送,超出网络承载能力的包会被丢弃。拥塞的网络中不能保证实时的通信。
拥塞时,不能收发。 发送方 接收方发信息-> 收确认信息<-

本文由 在线网速测试 整理编辑,转载请注明出处。