http协议

一、TCP/IP 协议介绍

  在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示:

 

 

TCP/IP基础--层次图

 

  从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下:

 

TCP/IP基础--数据封装

 

  其中,对于TCP传输协议,客户端在于服务器建立连接前需要经过TCP三层握手,过程如下:

 

TCP/IP基础--TCP三次握手

 

二、HTTP协议

2.1 简介

  超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议,自 1990 年起,HTTP 就已经被应用于 WWW 全球信息服务系统。
  HTTP 是一种请求/响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。
  HTTP 的第一版本 HTTP/0.9是一种简单的用于网络间原始数据传输的协议;
  HTTP/1.0由 RFC 1945 定义 ,在原 HTTP/0.9 的基础上,有了进一步的改进,允许消息以类 MIME 信息格式存 在,包括请求/响应范式中的已传输数据和修饰符等方面的信息;
  HTTP/1.1(RFC2616) 的要求更加严格以确保服务的可靠性,增强了在HTTP/1.0 没有充分考虑到分层代理服务器、高速缓冲存储器、持久连接需求或虚拟主机等方面的效能;
  安全增强版的 HTTP (即S-HTTP或HTTPS),则是HTTP协议与安全套接口层(SSL)的结合,使HTTP的协议数据在传输过程中更加安全。

 

2.2 协议结构

  HTTP协议格式也比较简单,格式如下:

 

HTTP协议--协议结构

 

2.3 HTTP 协议举例

  下面是一个HTTP请求及响应的例子:

 

2.4 请求头格式

a) 通用头(general-header):
Cache-Control:客户端希望服务端如何缓存自己的请求数据,如"Cache-Control: no-cache","Cache-Control: max-age=0";
Connection:客户端是否希望与服务端之间保持长连接,如"Connection: close", "Connection: keep-alive";
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段;
Pragma:包含了客户端一些特殊请求信息,如 "Pragma: no-cache" 客户端希望代理或应用服务器不应缓存与该请求相关的结果数据;
Via:一般用在代理网关向应用服务器发送的请求头中,表明该来自客户端的请求经过了网关代理,
     格式为:"Via: 请求协议版本  网关标识   [其它信息] ",
     如 :" Via: 1.1  webcache_250_199.hexun.com:80 (squid)"

 

b) 请求头(request-header):
Accept: 表明客户同端可接受的请求回应的媒体类型范围列表。星号“*”用于按范围将类型分组,用“*/*”指示可接受全部类型;用“type/*”指示可接受 type类型的所有子类型,如“ Accept: image/gif, image/jpeg, */*”;
Accept-Charset:客户端所能识别的字符集编码格式,格式:“Accept-Charset: 字符集1[:权重],字符集2[:权重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”;
Accept-Language:客户端所能识别的语言,格式:“Accept-Language: 语言1[:权重],语言2[:权重]”,如:” Accept-Language: zh, en;q=0.7”;
Host:客户请求的主机域名或主机IP,格式:“Host: 域名或IP[:端口号]”,如:“Host: www.hexun.com:80“,请求行中若有HTTP/1.1则必须有该请求头;
User-Agent:表明用户所使用的浏览器标识,主要用于统计的目的;
Referer:指明该请求是从哪个关联连接而来;

Accept-Encoding:客户端所能识别的编码压缩格式,如:“Accept-Encoding: gzip, deflate”;
If- Modified-Since:该字段与客户端缓存相关,客户端所访问的URL自该指定日期以来在服务端是否被修改过,如果修改过则服务端返回新的修改后 的信息,如果未修改过则服务器返回304表明此请求所指URL未曾修改过,如:“If-Modified-Since: Fri, 2 Sep 2006 19:37:36 GMT”;
If-None-Match:该字段与客户端缓存相关,客户端发送URL请求的同时发送该字段及标识,如 果服务端的标识与客户端的标识一致,则返回304表明此URL未修改过,如果不一致则服务端返回完整的数据信息,如:“If-None-Match: 0f0a893aad8c61:253, 0f0a893aad8c61:252, 0f0a893aad8c61:251”;
Cookie:为扩展字段,存储于客户端,向同一域名的服务端发送属于该域的cookie,如:“Cookie: MailUserName=whouse”;

 

c) 实体头(entity-header): (此类头存在时要求有数据体)
Content-Encoding:客户端所能识别的编码压缩格式,如:“Content-Encoding: gzip, deflate”;
Content-Length:客户端以POST方法上传数据时数据体部分的内容长度,如:“ Content-Length: 24”;
Content- Type:客户端发送的数据体的内容类型,如:“Content-Type: application/x-www-form-urlencoded”为以普通的POST方法发送的数据;“Content-Type: multipart/form-data; boundary=---------------------------5169208281820”,则表明数据体由多部分组成,分隔符为 “-----------------------------5169208281820”;

 

2.5)响应格式

a) 通用头(general-header):
Cache- Control:服务端要求中间代理及客户端如何缓存自己响应的数据,如“Cache-Control: no-cache”,如:“Cache-Control: private” 不希望被缓存,“Cache-Control: public” 可以被缓存;
Connection:服务端是否希望与客户端之间保持长连接,如“Connection: close”, “Connection: keep-alive”;
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段;
Pragma:包含了服务端一些特殊响应信息,如 “Pragma: no-cache” 服务端希望代理或客户端不应缓存结果数据;
Transfer-Encoding:服务端向客户端传输数据所采用的传输模式(仅在HTTP1.1中出现),如:“Transfer-Encoding: chunked”,注:该字段的优先级要高于“Content-Length” 字段的优先级;

 

b)响应头(response-header):
Accept-Ranges:表明服务端接收的数据单位,如:“Accept-Ranges: bytes”, ;
Location:服务端向客户端返回此信息以使客户端进行重定向,如:“Location: http://www.hexun.com”;
Server:服务端返回的用于标识自己的一些信息,如:“ Server: Microsoft-IIS/6.0”;
ETag:服务端返回的响应数据的标识字段,客户端可根据此字段的值向服务器发送某URL是否更新的信息;

 

c)实体头(entity-header): (此类头存在时要求有数据体)
Content-Encoding:服务端所响应数据的编码格式,如:“Content-Encoding: gzip”;
Content-Length:服务端所返回数据的数据体部分的内容长度,如:“ Content-Length: 24”;
Content-Type:服务端所返回的数据体的内容类型,如:“Content-Type: text/html; charset=gb2312” ;
Set-Cookie:服务端返回给客户端的cookie数据,如:“ Set-Cookie: ASP.NET_SessionId=icnh2ku2dqlmkciyobgvzl55; path=/”

 

2.6)服务器返回状态码

1xx:表明服务端接收了客户端请求,客户端继续发送请求;
2xx:客户端发送的请求被服务端成功接收并成功进行了处理;
3xx:服务端给客户端返回用于重定向的信息;
4xx:客户端的请求有非法内容;
5xx:服务端未能正常处理客户端的请求而出现意外错误。

 

举例:

“100”  ; 服务端希望客户端继续;
“200”  ; 服务端成功接收并处理了客户端的请求;
“301”  ; 客户端所请求的URL已经移走,需要客户端重定向到其它的URL;
“304”  ; 客户端所请求的URL未发生变化;
“400”  ; 客户端请求错误;
“403”  ; 客户端请求被服务端所禁止;
“404”  ; 客户端所请求的URL在服务端不存在;
“500”  ; 服务端在处理客户端请求时出现异常;
“501”  ; 服务端未实现客户端请求的方法或内容;
“502”  ; 此为中间代理返回给客户端的出错信息,表明服务端返回给代理时出错;
“503”  ; 服务端由于负载过高或其它错误而无法正常响应客户端请求;
“504”  ; 此为中间代理返回给客户端的出错信息,表明代理连接服务端出现超时。

 

2.7)chunked 传输

   编码使用若干个Chunk组成,由一个标明长度为0的chunk结束,每个Chunk有两部分组成,第一部分是该Chunk的长度(以十六进制表示)和 长度单位(一般不写),第二部分就是指定长度的内容,每个部分用CRLF隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些 没有写的头部内容。另外,在HTTP头里必须含有:” Transfer-Encoding: chunked” 通用头字段。格式如下:

chunked 传输

 

2.8)HTTP 请求方法

GET、POST、HEAD、CONNECT、PUT、DELETE、TRACE、OPTIONS

 

2.9)HTTP 断点续传

a)HTTP 请求头

格式:Range: bytes={range_from}-{range_to}

该头表示从后端 HTTP 服务器取数据,开始偏移位置为 {range_from},结束偏移位置为 {range_to},其中偏移位置下标从 0 开始;如果省略了 {range_to} 则表示从指定的开始位置 {range_from} 至数据结尾。

如:Range: bytes=1024-2048  其表示读取从偏移位置 1024 至 2028 的数据,而 Range: bytes=1024- 则表示读取从偏移位置 1024 至数据结尾的数据。

b)HTTP 响应头

格式:Content-Range: bytes {range_from}-{range_to}/{total_length}

其中 {range_from} 和 {range_to} 分别代表当前从服务端返回的数据的起始偏移位置(下标从 0 开始),这是一个双向闭区间范围,而 total_length 则指定了整个数据的总长度,此时 HTTP 响应头中的 Content-Length 如果存在,则其值表示当前返回的数据块(由 {range_from} 和 {range_to} 指定的数据区间)的长度。该长度内的数据包括 {range_from} 和 {range_to} 两个位置的数据。

 

3.0)举例

a)GET请求

Html代码  收藏代码
  1. GET http://photo.test.com/inc/global.js HTTP/1.1  
  2. Host: photo.test.com  
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0  
  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5  
  5. Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3  
  6. Accept-Encoding: gzip,deflate  
  7. Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7  
  8. Keep-Alive: 300  
  9. Proxy-Connection: keep-alive  
  10. Cookie: ASP.NET_SessionId=ey5drq45lsomio55hoydzc45  
  11. Cache-Control: max-age=0  

 

b)POST请求

Html代码  收藏代码
  1. POST / HTTP/1.1  
  2. Accept: image/gif, image/x-xbitmap, image/jpeg, application/vnd.ms-powerpoint, application/msword, */*  
  3. Accept-Language: zh-cn  
  4. Content-Type: application/x-www-form-urlencoded  
  5. Accept-Encoding: gzip, deflate  
  6. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)  
  7. Host: www.test.com  
  8. Content-Length: 24  
  9. Connection: Keep-Alive  
  10. Cache-Control: no-cache  
  11.   
  12. name=value&submitsubmit=submit  

 

c)通过HTTP代理发送GET请求

Html代码  收藏代码
  1. GET http://mail.test.com/ HTTP/1.1  
  2. Host: mail.test.com  
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0  
  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5  
  5. Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3  
  6. Accept-Encoding: gzip,deflate  
  7. Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7  
  8. Keep-Alive: 300  
  9. Proxy-Connection: keep-alive  

 

d)POST方式上传文件

Html代码  收藏代码
  1. POST http://www.test.comt/upload_attach?uidl=%3C HTTP/1.1  
  2. Host: www.test.com  
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0  
  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5  
  5. Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3  
  6. Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7  
  7. Content-Type: multipart/form-data; boundary=---------------------------5169208281820  
  8. Content-Length: 449  
  9.   
  10. -----------------------------5169208281820  
  11. Content-Disposition: form-data; name="file_1"filename=""  
  12. Content-Type: application/octet-stream  
  13.   
  14.   
  15. -----------------------------5169208281820  
  16. Content-Disposition: form-data; name="file_0"filename="test.txt"  
  17. Content-Type: text/plain  
  18.   
  19. hello world!  
  20.   
  21. -----------------------------5169208281820  
  22. Content-Disposition: form-data; name="oper"  
  23.   
  24. upload  
  25. -----------------------------5169208281820--  

 

e)CONNECT举例

Html代码  收藏代码
  1. CONNECT mail.test.com:80 HTTP/1.1  
  2. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0  
  3. Proxy-Connection: keep-alive  
  4. Host: mail.test.com:80  

 

3.1)在终端以 telnet 方式测试

a)打开回显功能(针对windows)
  Windows 2000:进入DOS模式->输入 telnet->set LOCAL_ECHO->退出:quit->telnet ip 80
  Windows xp:进入DOS模式->输入telnet->set local echo->open ip 80

b) 按HTTP协议格式输入GET请求、HEAD请求、POST请求。



转载地址:http://zsxxsz.iteye.com/blog/568250

超 文本传输协议HTTP)是一种为分布式,合作式,超媒体信息系统。它是一种通用的,无状态(stateless)的协议,除了应用于超文本传输外,它也 可以应用于诸如名称服务器和分布对象管理系统之类的系统,这可以通过扩展它的请求方法,错误代码和报头[47]来实现。HTTP的一个特点是数据表现形式 是可输入的和可协商性的,这就允许系统能被建立而独立于数据传输。 目录 1 引论 1.1 目的 1.2 要求 1.3 术语 1.4 总体操作 2 符号习惯和一般语法 2.1 扩充的BNF(扩充的 巴科斯-诺尔范式) 2.2基本规则 (basic rule) 3 协议参数 3.1 HTTP版本 3.2 统一资源标识符(URI) 3.2.1一般语法 3.2.2 http URL 3.2.3 URI 比较 3.3 日期/时间格式(Date/Time Formats) 3.3.1完整日期 (Full Date) 3.3.2 Delta Seconds 3.4 字符集 3.4.1丢失的字符集(Missing Charset) 3.5 内容编码(Content Codings) 3.6 传输编码 (Transfer Codings) 3.6.1块传输编码(Chunked Transfer Coding) 3.7 媒体类型(Media Type) 3.7.1规范化和文本缺省 (Canonicalization and Text Defaults) 3.7.2多部分类型(Multipart type) 3.8 产品标记 (product Tokens) 3.9 质量值(Quality Values) 3.10 语言标签 (Language Tags) 3.11 实体标签 (Entity Tags) 3.12 范围单位(Range Units) 4 HTTP消息 4.1 消息类型(Message Types) 4.2 消息头 (Message Headers) 4.3 消息主体 (Message Body) 4.4 消息的长度(Message Length) 4.5 常用头域(General Header Fields) 5 请求(Request) 5.1 请求行 (Request-Line) 5.1.1方法 (Method) 5.1.2请求URL(Request-URI) 5.2请求资源 (The Resource Identified by a Request) 5.3请求报头域 (Request Header Fields) 6 响应 (Response) 6.1 状态行 (Status-Line) 6.1.1状态码与原因短语 (Status Code and Reason Phrase) 7 实体(Entity) 7.1 实体报文域(Entity Header Fields) 7.2 实体主体(Entity Body) 7.2.1类型(Type) 7.2.2实体主体长度(Entity Length) 8 连接 8.1 持续连接(Persistent Connection)。 8.1.1目的 8.1.2总体操作 8.1.2.1 协商(Negotiation) 8.1.2.2 流水线(pilelining) 8.1.3代理服务器 (Proxy Servers) 8.1.4实际的考虑 (Practical Considerations) 8.2 消息传送要求(Message Transmission Requirements) 8.2.1持续连接与流量控制 (Persistent Connections and Flow Control) 8.2.2监视连接中出错状态的消息 8.2.3 100状态码的用途 8.2.4服务器过早关闭连接时客户端的行为 9 方法定义(Method Definitions) 9.1 安全和等幂(Idempotent)方法 9.1.1安全方法(Safe Methods) 9.1.2等幂方法(Idempotent Mehtods) 9.2 OPTIONS(选项) 9.3 GET 9.4 HEAD 9.5 POST 9.6 PUT 9.7 DELETE(删除) 9.8 TRACE 9.9 CONNECT(连接) 10.状态码定义 10.1 通知的 1xx 10.1.1 100 继续 (Continue) 10.1.2 101切换协议 (Switching Protocols) 10.2 成功 2xx 10.2.1 200 OK 10.2.2 201 已创建(Created) 10.2.3 202 接受(Accepted) 10.2.4 203 非权威信息(Non-Authoritative information) 10.2.5 204 无内容 (No Content) 10.2.6 205 重置内容(Reset Content) 10.2.7 206 部分内容(Partial Content) 10.3 重新定向 3xx. 10.3.1 300 多个选择.(Multiple Choices) 10.3.2 301 永久移动 (Moved Permanently) 10.3.3 302 发现(Found) 10.3.4 303 见其他(See Other) 10.3.5 304 没有被改变(Not Modified) 10.3.6 305 使用代理服务器 (User Proxy) 10.3.7 306没有使用的(unused) 10.3.8 307临时重发(Temporary Redirect) 10.4 客户错误 4xx 10.4.1 400 坏请求(Bad Request) 10.4.2 401 未授权的 (Unauthorized) 10.4.3 402 必需的支付 (Payment Required) 10.4.4 403 禁用 (Forbidden) 10.4.5 404 没有找到(Not Found) 10.4.6 405 不被允许的方法(Method Not Allowed) 10.4.7 406 不接受的 (Not Acceptable) 10.4.8 407 代理服务器授权所需(Proxy Authentication Required) 10.4.9 408 请求超时(Request Timeout) 10.4.10 409 冲突 (Confilict) 10.4.11 410 不存在(gone) 10.4.12 411 必需的长度 (Length Required) 10.4.13 412 先决条件失败 (Precondition Failed) 10.4.14 413 请求实体太大 10.4.15 414 请求URI太长(Request-URI Too Long) 10.4.16 415 不被支持的媒体类型(Unsupported Media Type) 10.4.17 416 请求范围不满足 (Requested Range Not Satisfiable) 10.4.18 417 期望失败 10.5 服务器错误 5xx (Server Error) 10.5.1 500 服务器内部错误 (Internal Server Error) 10.5.2 501 不能实现 (Not Implemented) 10.5.3 502 坏网关 (Bad Gateway) 10.5.4 503 难以获得的服务.(Service Unavailable) 10.5.5 504 网关超时(Gateway Timeout) 10.5.6 505 HTTP版本不支持 (HTTP version Not Supported) 11.入口验证(Access Authentication) 12.内容协商 (Content Negotiation) 12.1 服务器驱动协商(Server-driven Negotiation) 12.2 代理驱动协商 (Agent-driven Negotiation) 12.3 透明协商(Transparent Negotiation) 13 HTTP中的缓存 13.1.1缓存正确性(Cache Correctness) 13.1.2警告信息(Warnings) 13.1.3缓存控制机制 (Cache-control Mechanism) 13.1.4显示的用户代理警告(Explicit User Agent Warnings) 13.1.5规则和警告的例外情况 13.1.6由客户控制的行为(Client-controlled Behavior) 13.2 过期模型 (Expiration Model) 13.2.1 服务器指定模型(Server-Specified Expiratiion) 13.2.2 启发式过期 13.2.3 年龄(Age)计算 13.2.4 过期计算(Expiration Calculations) 13.2.5澄清过期值(Disambiguation Expiration Values) 13.2.6澄清多个响应(Disambiguating Multiple Response) 13.3 验证模型(Validation Model) 13.3.1最后修改日期 (Last-Modified Dates) 13.3.2 实体标签缓存验证器(Entity Tag Cache Validators) 13.3.3 强,弱验证器 (Weak and Strong Validators) 13.3.4 关于何时使用实体标签和最后修改时间的规则 13.3.5非验证条件(Non-validating Conditionls) 13.4 响应的可缓存性(Response Cacheability) 13.5 从缓存里构造响应 13.5.1End-to-end和Hop-by-hop头域 13.5.2不可更改的头域 (Non-modifiable Headers) 13.5.3联合头域(Combining Headers) 13.5.4联合字节范围(Combing Byte Ranges) 13.6 缓存已经协商过的响应(Caching Negotiated Responses) 13.7 共享和非共享缓存 (Shared and Non-Shared Caches) 13.8 错误和不完全的响应缓存行为 13.9 GET 和 HEAD 的副作用(Side Effects of GET and HEAD) 13.10 在更新或删除后的无效性 13.11 强制写通过( Write-Through Mandatory) 13.12 缓存替换 (Cache Replacement) 13.13 历史列表 (History Lists) 14 头域定义 14.1 Accept 14.2 Accept-Charset 14.3 Accept-Encoding 14.4 Accept-Language 14.5 Accept-Range 14.6 Age 14.7 Allow 14.8 Authorization (授权) 14.9 Cache-Control 14.9.1什么是可缓存的 14.9.2什么能被缓存保存 14.9.3对基本过期机制的改进 14.9.4缓存重验证和加载控制(Cache Revalidation and Reload Controls) 14.9.5 No-Transform缓存控制指令 14.9.6缓存控制扩展(Cache control Extendions) 14.10 Connection 14.11 Content-Encoding 14.12 Content-Language 14.13 Content-Length 14.14 Content-Location 14.15 Content-MD5 14.16 Content-Range 14.17 Content-Type 14.18 Date 14.18.1没有时钟的源服务器运作 14.19 ETag 14.20 Expect 14.21 Expires 14.22 From 14.23 Host 14.24 If-Match 14.25 If-Modified-Since 14.26 If-None-Match 14.27 If-Range 14.28 If-Unmodified-Since 14.29 Last-Modified 14.30 Location 14.31 Max-Forwards 14.32 Pragma 14.33 Proxy-Authenticate 14.34 Proxy-Authorization 14.35 Range 14.35.1字节范围 (Byte Ranges) 14.35.2范围请求(Range Retrieval Requests) 14.36 Referer 14.37 Retry-After 14.38 Server 14.39 TE 14.40 Trailer 14.41 Transfer-Encoding 14.42 Upgrade 14.43 User-Agent 14.44 Vary 14.45 Via 14.46 Warning 14.47 WWW-Authenticate 15.安全考虑 (Security Consideration) 15.1 个人信息 (Personal Information) 15.1.1服务器日志信息的滥用 (Abuse of Server Log Information) 15.1.2敏感信息的传输 (Transfer of Sensitive Inforamtion) 15.1.3 URI中敏感信息的编码(Encoding Sensitive Information in URI’s) 15.1.4连接到Accept头域的隐私问题 15.2 基于文件和路径名称的攻击 15.3 DNS欺骗 15.4 Location头域和欺骗 15.5 Content-Disposition的问题 15.6 授权证书和空闲客户端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值