对《End-to-End Arguments in System Design》理解文章的整理

网上对《EtE Arguments in System Design》的读后感比较多,但是也比较混乱,本文整理了几篇调理比较清晰,内容比较完整的总结。

一 原文链接:http://www.iteye.com/topic/556911

目 录 1 1.论文回顾 2 2.网络设计的分层思想 3 3.TCP 协议的提出 4 4.注意的问题 5 5.总结 6

1. 论 文 回顾 《END-TO-END ARGUMENT IN SYSTEM DESIGN》写于 1984 年,当时计算机网络技术还相当不成熟,但是作 者 这篇文章对于计算 机分层结构的形成具有直接的重要的作用。 文章主要提出了在分布式系统下端到端的系统设计原则,而这也 成为 了 Internet 日 后主要的设计原则。在 Internet 设计原则中,考虑 最多的两个因素就是代价与性能。作为当时网络发展的两个趋势: 利 用底层网络实现和高层网络 实现,作者从位错误恢复、安全加密、重 复消息限制、系统崩溃、确认机制等进行比较,得出进行端到端系统 设计的优越性。 即网络设计应当尽量简单化,可以 将一部分功能赋予 高层网络进行实现,反而能得到更大的效率。 首先作者就端到端系统传输的整个过程分为以下几步: 设 有主机 A

与主机 B 进行通信。 A 主机与 B 主机之间的信息传递分以下几步:

图 1.1 端 到端系统文件传输 过程 这个利用端到端原则进行的传送的应用,即小心的文件传输。这种应 用主要的威胁有:本身文件出错、传输过程出错、接收过程出错和 数 据安全 等。 现有的能够保证数据传输正确性和安全性的做法主要有: 一、 进行多次文件复制,即通过简单的多次传输进行数据完整性和 安全性的保证; 二、 进 行超时重传,设定 ACK 进行确认,根据请求进行重发; 三、 进行数据的检查和操作,以保证数据的正确性。 虽然这些方法去除一些威胁,但不足以去除 所有的威胁。 于是作者对在底层实现这些方法和在高层实现这些方法做了比较, 得 出以下结论: 一、 通常利用底层来实现这些功能可以 很大程度上提高 整个系统的 性能,但是代价太大; 二、为了在一个原本不可靠的网络上实现可靠传输,就需要一个独立 于网络层的可靠传输协议和一个端系统的应用层的错误 检测功能。 即 利用高层来实现数据传输等功能也一样能够保证数据的可靠传输。 三、与底层方法相比,实现的效率和所付出的代价之比,高层 明显要 更 好。 接下来作者分别对下列几个功能在底层和高层的实现做了比较:

一、传送过程的可靠保证,在高层通过 RFNM 机制等能实 现对数 据 的可靠性保证; 二、数据的安全传送过程的加密与解密,通信系统本身无须为所有的 流量进行自动加密,这些操作可在高层完成; 三、重复信息的限制, 由于提供重复信息后还可能收到以前的请求数 据,可以通过高层来鉴别; 四、保证先进先出的传送顺序,信息通过不同的链路到达后顺序可能 被打乱,可以在 高层进行顺序排序。 五、传送管理,底层的核心功能应该尽量简易,不提供传送确认。 此后作者就端到端系统在其他系统领域的应用进行了分析。 他指出 了 ACK 机制和端到端加密思想的来源和讨论。同时指出只有在航空或 者金融领域才有足够的经济实力能够利用底层来进行数据的可靠传 输, 而端到 端 系统已经能够满足错误控制和纠错处理方面的要求了。 最后作者总结了端到端原则犹如奥卡姆剃刀(Occam's Razor) , 即如果在底层设计 的功 能已经超过它所能提供的必要核心业务了, 那 么可以考虑在其他层进行此类功能的设计。 而改变的做法就是设计一 个端到端的系统,负责数据的可靠 传输 等。 2. 网络设计的分层思想 从作者的设计理念我们不难看出, 作者为同年提出的 ISO 的网络七 层结构的提出奠定了理论基础。作者在文章 最后也指出,对于“时下” 流行这种基于网络分层的想法是可取的, 这样可以加强模块间的分工 合作。网络分层的优越性,正是体现在底层实现的复杂和代价 昂贵,

因 此网络设计的简易化和接口化已经成为了网络设计的基本原则。 众所周知,网络传输是一种不可靠的传输, 因此在网络的最核 心 的重要的部分只可以做数据的 传输而不能去做一些特殊的应用, 最终 网络需要检查是否进行了正确的传输, 这里也只有靠网络的高层去判 断,并由此 出现网络高层的确定重传机制等。因此作者提出网络的核 心部分(交换与路由)应当只需要去做最迫切而且是最简单的任务数据传输,而不应该将复杂的任务赋予 底层的不可靠网络传输,使得 网络 的核心复杂度降低,同时也提高了网络的灵活性,使得网络的升 级和维护都变得更加容易。 端到端的设计原则,屏蔽了底 层硬件和网络状况的复杂性,将数 据 传输过程中的完整性和安全性等要求交付于网络高层负责, 从而大大 简化了网络的核心复杂度。端到端原则主要包括三 个设计理念: 1. 降低网络核心 复杂度。互联网的目的之一是在应用程序中隐藏所 有的物理细节,因此对于在传输过程中可能出现的不可靠因素,我们 只 有在端系统才知道,因此我们赋予底层 的操作也越简单越好。 Internet 将确认传输正确的任务交给端系统去完成,从而最大的保证 了传输的可靠性 和完整性。 可以通过确认和超时重传等 机制来保证传 输的正确, 因此建立一个独立于网络层和物理层的可靠传输协议和错 误检测功能就很有必 要。 2. 数据传输的尽力传输服务。对于整个网络传输来说,对于网络层 及其底层的要求只是提供尽可能打的数据传输速率, 至于数据的完整 性和正确性 要求可以交付给高层即端系统来负责。后面将要介绍的

TCP 协 议正是基于这样一样思想而设计出来的。 3. 端到端地址的透明性。端到 端设计的原则同样有给 Internet 上的 主机分配唯一的地址, 这样在传 输过程中不需要在中间的节点或者转 发节点上对包的内容进行修改。 而 且端系统之上的应用程序也不需要 知道实际传输的具体线路,为实际应用带来了方便。 因此网络的分层和模块化趋势是端到端原则在 Internet 体系 的具体体 现,这样不仅将底层和网络层解放出来专注于数据传输服务,更使得 整个网络服务质量的保证的核心功能集中于端系统, 大大的减少了成 本和简化 了网络架构。 3.TCP 协议的提出 正是基于文章所提出的端到端原则,90 年代最流行的 TCP 协议以及 相应的 TCP/IP 分层也就应运而 生了。 TCP 协议能够实现端到端系统 所要求的可靠数据传输功能, 从而让底层协议脱离于数据的可靠性服 务的保证,专注于网络速率的最大 化。 TCP 实现了网络的分层结构,整个网络被划分为四层,共有应用 层、 传输层、网络层和链路层。其中传输层实现的就是文章所提及的端系 统所要求 的功能。不同层次的协议负责不同的通信功能,高层协议以 低层协议的服务为基础,低层协议接收来高层协议的命令和请求。其 中传输层主要负责两台主机间的 应用程序提供端到端的通信,在 TCP/IP 协议族中,有两个互不相同 的传输协议:TCP(传输控制协 议)和 UDP(用户数据报协 议) 。 TCP 为两台主机提供高可靠性的数据通信,它所做的工作包括把应

用 程序交给它的数据分成合适的小块交给下面的网络层, 确 认接收到 的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高 可靠性的端到端的通信,因此底层和网络层可以忽略这些细节。为了 提供这种可 靠的服务,达到文章中所要求的传输服务要求,TCP 采 用了超时重传、发送和接收端到端的确认 分组等机制。下面就具体实 现进行分析: 一、 关于传 送过程的可靠性保证。TCP 协议将数据分割成最适合发 送的数据块,我们称之为报文段。然后发出一个段后,TCP 就启动 一个定时器,等待目的端确认 收到这个报文段。如果不能及时收到一 个确认,将重发这个报文段。而当另一端的 TCP 收到该报文段后, 通常推迟几分之一秒后会进行确认发送。 二、 数据的安全传送过程的加密与解密。TCP 首先将会进行首部和 数据的检验和,目的是检测数据在传输过程中的任何变化。如果检测 段的检验和有差 错,TCP 将丢弃这个报文段和不确认收到此报文段。 因此在应用层加密后的数据在运输层可以得到很好的数 据完整性保 证。 三、重复信息的限制。如 果 TCP 收到重复的报文段,TCP 的接收端 必须丢弃重复的数据。 四、保证先进先出的传送顺序。既 然 TCP 报文段作为 IP 数据包来 发 送,而 IP 数据包的达到可能会失序,因此 TCP 的报文段到底也可能 会失序。因此 TCP 将对接收 到的数据通过序号技术进行重新排 序, 将收到的数据以正确的顺序交给应用层。

五、传送管理。此外针对网络传送情况的复杂性,TCP 还提 供了流 量控制和拥塞控制等。 利用滑动窗口原理,TCP 接收端只允许另一 端发送接收端缓冲区所能接纳的数据。 这将防止较快主机致使较慢主 机的缓冲 区溢出。 4.注意的问 题 在 TCP 可提供可靠、有序传输服务,实现端到端思想的同时,我 们也应该看到 TCP 的一些不足。 由于采用了滑动窗口 机制, 它只能保证一 个消息从节点 A 到节点 B 被正确传递,从节点 B 到节点 C 也能正确传递,但是它不能保证在 节点 B 本身不出错。正是 由于这些窗口系统的 脆弱性,仍然需要提 供真正的物理层端的端到端的检测以保证可靠/有序的服务,即底层 的链路层已实现了这种功能。比如 TCP /IP 协议的链路层一 样会进行 差错检测(CRC) 、流量控制等的服务。 5.总结 本文主要从 《END-TO- END ARGUMENTS IN SYSTEM DESIGN》 一文出发,作者阐述了在 Internet 系统设计中最重要的原则之一-端 到端 理 论。简而言之,端到端了理论说明有些功能(比如提供可靠/ 有序的服务)不应该在系统的较低层提供,除非能在低层完全正确的 被实现,而且花费的代价 不是 太大。这条原则促使了 TCP 协议的诞 生, 解决了如何在一个不可靠的网络通信信道上进行了可靠的网络传 输服务。 这条原则在设 计 RISC 系统 的原则上也一样适用,当然这条原则

并不是绝对的, 有时为了性能优化的需要也允许在较低层提供一些不 完全的功能。

二 原文链接:http://blog.sina.com.cn/s/blog_4a5695fd0100cs6q.html

这 篇 论文剖析了端对端原则在网络系统设计时的作用。作者在文 章开始对端到端下了定义:在两台机器之间建立连接,两端并不知道 中间经历的多么复杂的连接,经 过了另外的多少机器。 接下来,作者对端到端原则的一个应用做了介绍,即小心的文件 传输。它可以去除一些威胁,但是不足以消灭所有。文章列 出 了 5 种 基本的威胁, 包 括: 1. 2. 3. 4. 5. Read file error Software copy file error Hardware copy file error More than 1 changed bit Host crash at anytime

之后举例说明一些解决威胁的办法,如复制一份拷贝,重新传输 等。 作者举了一个来自他们自己大学 MIT 的实验例子作反面说明, 强 调了威胁被层层放大以至于无法解决的可能性。

接 下 来,作者列举了更多端到端的应用领域,如传输确认,数据 安全,复制信息限制,确保 FIFO 信息传递,交换管理等。 作者之后说明,端到端并不是一个 限制性的规则。我们可以灵活 地运用它,为设计协议和网络体系结构进行服务。在总结中,作者希 望自己的讨论可以为 “当下” 流行的网络协议层次结 构 提供一些帮助。 当然,这也已经是 1983 年的文章了。目前网络协议的层次结构基本 固定,而 TCP 协议也正是用来实现端到端的一个具体 例 子。 我认为,端到端应该是网络体系结构最自然的形式。因为信息的 发送和获取在绝大多数情况下都是一一对应的。 对于服务器和主机来 说,也应该是 不加 区分的两个终端。不过,我感觉有些自然的想法被 打破的时候,也将是网络体系结构设计上升到一个新台阶的时候。希 望端到端可以为演化成一个更好的 原则做 好准备吧。 对于这篇文章, 我想我的专业知识的缺乏还不足以让我理解其中提到 的一些设计思想。但是在未来的课程中,我可以带着在阅读中遇到 的 问题进 行学习。到课程结束的时候,相信我可以对文章中的内容有更 深刻的体会。

三 原文链接:http://blog.sina.com.cn/s/blog_4e4ee8ed0100ltfq.html

这 篇 文章对网络分层体系结构的产生和发展产生过重要的影响, 文中所涉猎到诸多的课题,如网络性能和代价的平衡选择,数据传输 中的确认和重传机制的实 现 等, 仍然在目前的网络设计中有着指导性 的意义。“端到端”的网络设计观点,由此成为对网络结构设计的一 篇经典论文, 帮助我们更好的理解 当 前 TCP/IP、 ISO 七层协议等网络 分层设计原理。 一、作者的中心观点 作者提出了分布式系统下端到端的系统设计原则,即底层网络设 计 应注重与核心传输功能的实现, 而不是花费更大的代价去实现其他 的功能。作者指出,错误恢复、安全加密、重复消息限制、系统崩溃 恢复、传输确认等技术 实 现,都支持端到端观点的成立。在网络的底 层应该简化结构,把更多的功能实现,如数据确认和重传、安全加密 等功能放到高层网络实现,效率会更 高。 二、 观点辨析

作者以文件传输过程来分析端到端网络设计的合理性: 文件传输过程 如图所示,

图 1 A-B 端 到端文件传输 过程 在传输过程中可能遇到诸多难以控制的风险,包括文件本身出 错、通信传输过程出错、接收过程出错、数据包完整性的度量以及其 他一些 未知的错误发 生。 作者讨论了当前技术条件下解决文件传输错 误的几种途径:1、进行多次的文件复制,通过多次的简单传输保证 数据写入的正确性;2、 端到端的数据确 认和请求重传 3、进行错误 检测。建立一个可靠的文件传输机制离不开底层链路的支持。 从性能分析的角度讲,基于一个不可靠的网路建立 一个可靠的文 件传输,底层网络可以实现完善的功能,但是权衡性能和代价,在底 层实现这些功能的代价太大,不如在高层网络进行这些功能实现。实

现 数据的 可靠传输,需要建立错误检查功能,在应用层也能实现。作 者从三方面提出例证: 1、借鉴 ARPANET 网络的方法,高层可以使 用 RFNM 原理实 现 消息确认机制,保证数据传输的准确性; 2、在高层实现数据加密功能而不是在底层实现是必要的,因为 数据加密需要密钥;传输 过程中数据的安全性很脆弱;数据的最终确 认仍然在高层。高层对数据加密功能的实现手段具有互补性,而底层 无需实现这些功能; 3、为防范网路对重复信 息的抑制,高层可以实现对数据重复请 求的鉴别; 4、在先进先出的信息传输机制中,信息的序列可能被打乱,高 层则可以重组信息序列; 5、传输管理 中,消息的确认报文最好由高层完成,底层的设计 上应尽量减少冗余信息的传输。 应用于实际问题,端到端的观点分析需要做细微的甄别。如在语 音传输中, 人们更侧重于对声音同步性 的要求而非正确率,过多的时 间延迟会导致人们的反感。因此,作者指出,端到端的观点不是一个 硬性的绝对规则,而是一个帮助 设计应用程序和协议的设计的 指导。 目前,只有金融和航空领域才有能力和需求,完成底层的数据可靠性 传输, 在其他领域端到端系统已经能够满足错误控 制和纠错处理方面 的要求了。

总 而言之,端到端的观点犹如奥卡姆剃刀(Occam's Razor),即 如果在底层设计的功能已经超 过它所能提供的必要核心业务了, 那么 可以考虑在 其他层进行此类功能的设计。 而改变的做法就是设计一个 端到端的系统,负责数据的可靠传输 等。 三、文章主要贡献 文章的观点和分析思路为网络的分层设 计思想奠定了理论基础。 作者在文章最后也指出, 对于“时下”流行这种基于网络分层的想 法是 可取的,这样可以加强模块间的分工合作。网络分层的优越 性,正是 体现在底层实现的复杂和代价昂贵, 因此网络设计的简易化和接口化 已经成为了 网络设计的基本原则。

四 原文链接:http://blog.csdn.net/collier/article/details/3547200

前 些天读了两篇论文,一篇是J.H.Saltzer,D.P.Read 和D.D.Clark 在80年代初发表的《The End-TO- End Arguments in System Design》,另一篇是David D.Clark在前篇论文发表近20年后写的 《Rethinking the Design of the Internet- The end to end arguments vs. the brave new world》,这两篇论文都是网络设计原则方面的重要理论探 讨。

《The End-TO-End Arguments in System Design》 这篇论文提出了一个著名的“端到端原 则”,文章考虑的一个重要问题是如何在功能之间进行合适的划分,如何将功能安置到合适的层中。通讯系统设计的主要目标是要让传输中各种错误发生的概率降低 到一个可以接受的水平。对于一个通讯可靠系统,它的出错率应该是很低的,而且只需通过简单的多次传输就可以实现系统的 目标。当然也可以采用“端到端确认 重传”来实现,这时就要考虑这些功能在系统中什么地方实现,即层次上的考虑。设置功能时要考虑两个因素的权衡:代价和性能。通常底层的功能可以提高系统的 性能(如底层的校验机制),但全局的代价较大(overall cost)。在文中作者通过几个例子(传输保证、安全传输、时序控制以及实务管理)来说明 将一些功能放到高层(End) 是有利于系统的实现和性能提高的。同时也强调一点:任何应用对功能的需求都是有特指的,因此不可能存在一种底层的功能满足 所有的上层应用需求。任何底层功能的设定都是高全局代价的。因此,某些功能的不完全实现往往是提高系统功能的好办法。作者认为网络传输是不可靠的,即由于 错误的复制或缓冲,硬件处理器或 记忆短暂的错误等各种原因会出现数据包的丢失和损坏,因此在网络的最核心的部分应该只做数据的传输而不能去做一些其他的 应用,而数据是否正确传输则应该放到应用层去检查和判断——由此产生了我们今天网络应用层上的确定重传机制。这样一来实际上是降低了网络的核心复杂度,同 时也提高了网络的灵活性和可维护 性,因为网络只需要做一件事情即传输数据,而其他的功能可以放到应用层上去实现,这样网络一旦出现故障我们首先想到的就 不会是网络的核心部件了。

今天我们的网络已经是非常庞大了,可是在当时网络还刚刚起步,我在想作者当时为什么会提出这样一种论点呢?带着这样一个问题反复地拜读了好多次,细细揣摩作者写作的动机,隐隐明白了作者当初想要解决的一些问题。

其 一,降低网络核心复杂度,简化复杂功能。文件从主机A传到主机B,也就是说AB主机要通信,需要经过三个环节:首先是主机A从磁盘上读取文件并将数据分组 成一个个数据包packet,,然后数据包通过连接主机A和主机B的网络传输到主机B,最后是主机B收 到数据包并将数据包写入磁盘。在这个看似简单其实 很复杂的过程中可能会由于某些原因而影响正常通信。比如:磁盘上文件读写错误、缓冲溢出、内存出错、网络拥挤等等这些因素都有可能导致数据包的出错或者丢 失,由此可见用于通信的网络是不可靠的。那么怎么样在不可靠的网络上实现和确保两个主机之间文件的可靠传 输,即实现数据的完整而准确的传输成为通信双方 信息共享的关键。由于实现通信只要经过上述三个环节,那么我们就想是否在其中某个环节上增加一个检错纠错机制来用于对信息进行把关呢?在通信时一旦发现数 据包有问题就进行相应的处理使得到达主B的数据包都是没有问题的或者说都是正确的数据包。连接主机A和B的 网络在通信过程中起着桥梁的作用,同时它在整 个网络体系结构中也处于一个较低的层次,那么是不是可以把数据包的纠错任务也交给网络呢?事实证明这是行不通的。因为这不但会增加网络的复杂性而且会降低 网络的可维护,从而必须要付出昂贵的开销,这是不可取的。这时候“端系统”似乎理所当然地成为了要完成这个任 务的佼佼者。实验证明“端系统”完全可以胜 任这个工作,因为只有“端系统”可以知道哪个地方出现了错误,哪个地方需要重传。我们将确认传输正确的任务交给“端系统”去完成,在“端系统”没有接收到 完整的所需要的资源的同时,可以有多种机制来保证满足传输的正确。如将确认重传机制放在端系统的应用层上可以保 证信息的可靠到达,这样就最大的保证了传 输的可靠性和完整性。但是为了在一个原本不可靠的网络上实现可靠传输,就必须要有一个独立于网络层的可靠传输协议和一个端系统的应用层的错误检测功能。这 样一来,网络的使命就很单纯了,网络只需要负责传输数据,而其他方面都由网络以外的系统去实现了,从而大大地降低 了网络的复杂性,提高了网络的通用性和 灵活性,当增加新应用时也不必改变核心网络,便于网络的升级,提高了网络的可靠性。

其 二,尽可能好的数据传输服务。对于数据的传输来说, 网络层的最主要目的是增大数据传输的速率,网络层不需要考虑数据的完整性,数据的完整性和正确性交给端系统去检测就行了,因此在数据传输中,对于网络层只 能要求其提供尽可能好的数据传输服务,而不可能寄希望于网络层提供数据完整性的服务。这种设计原则可以 使得传输的速率最大化,同时也为多种服务的实现提 供了数据传输方面的保证。现在广泛使用的TCP协议也只能够用确定重传的机制来保证数据的一致性和完整性,因此这对于端系统的检测数据完整性和保证数据的 正确性提出了更高的要求。

其三,“End-To-End”地址透明性和全球唯一地址。“端到端”设计原则需要给Internet上 的主机 分配全球唯一的地址以用于标识不同的主机,这样在传输的过程中不需要中间的节点或者转发节点对于包的内容进行修改。在数据包中包括了来源和目的地的完整的 信息,中间的路由等转发节点也不需要去知道该数据包的信息。在这个意义上,数据在端系统之间的传输好像是有唯一的通路直接相连。这样,端系统上的应 用程 序也不需要知道实际传输的具体的线路,为实际应用也带来了方便。

《Rethinking the Design of the Internet- The end to end arguments vs. the brave new world》这篇论文是MIT教授David Clark于 2001年发表在ACM上的另一篇关于重新思考Internet设计原则的重要论文。20多年前他提出的“End-to-End Argument”表述 为:“一种应用功能只有当其知识和帮助置于通信系统的边缘才能完全和正确地实现,因此将提出这种应用功能作为通信系统本身的性质是不可能的。”当 时提出 这种论断的依据是网络是不可靠的,网络只做最通用的数据传输,而最终检查是否正确执行只能在处于传输终端的应用层。这样一种设计原则的优点很多,解决了当 时很多难题,这在前面已有论述。可是到了今天,这样一种设计原则是否仍然适用呢?“端到端”原则是绝对可靠的吗?这正是作者在这篇文章中思考的问 题。

当 今的网络已是今非昔比,不但网络的规模是当时无法想象的,就是网络的应用环境也大大地改变了。一方面由于端系统原则要求每台主机都要有一个全球唯一的地 址,这样20年前的IPV4已经不可以保证每一台端系统都有唯一的地址,这样就产生了A,B,C类地址,产生了子网、网关等等也产生了IPV6技术来面对 地址空间不足的挑战。另一方面Internet初期的用户基本上都属于技术型的科研人员,而现今已普及到一般老百姓,所以事实上许多复杂的软件都放在服务 器而不再是“end”,这是与当初“端系统”原则不相符合的。由于用户急剧增加而互不了解,Internet已变成没有信用的世界,必须在网络的核心部分 增加认证、授权等机制使网络更可信。尽力服务不能保证服务质量,特别是流媒体服务质量,需要在网络中间增加存储节点。ISP服务的多样化,要求基于中间服 务器的应用。出于信息安全等方面的考虑,政府与中介组织参与网络内容与服务的监督管理,网络核心不可能再是“Dumb”网。所有这些变化都要求增加核心网 络的功能,这对“端系统”原则提出了重大挑战。

我想今后网络的发展不可能完全局限于“端到端”原则的架构思想,但也不可能完全抛弃这样一种理论的指导,“端到端”原则所提倡的灵活性和开放性对今后网络的发展仍将具有重要指导意义。

转载于:https://www.cnblogs.com/wuplus/archive/2012/06/26/2563820.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值