3、链路层-SLIP-PPP-PPTP-L2TP协议

参考推荐:

SLIP协议和PPP协议_数据链路层slip_清尘大哥的博客-CSDN博客

PPTP协议_轮子学长的博客-CSDN博客

L2TP简介_s枫叶流丹的博客-CSDN博客_l2tp


SLIP协议

SLIP(Serial Line IP)串行线路网际协议(RFC 1055 ,是串行线路上对IP数据报进行封装的简单形式。SLIP不但能够发送和接收IP datagram,还提供了TCP/IP的各种网络应用服务(如Rlogin、Telnet、Ftp、Rtp等)。个人用户可利用SLIP协议拨号上网,行业用户则可通过租用SLIP专线远程传输业务数据。

SLIP提供了两个特殊字符,END(0xc0)和 ESC(0xdb):

SLIP报文的头尾都有一个END字符,头部的END是用来结束之前的噪声,防止数据报到来之前的线路噪声当作数据报内容。这些噪声传到上一层后会被丢弃,尾部END标志当前SLIP报文结束。

  • 若IP报文中某个字符为END,那么就连续传输两个字节oxdb和oxdc来取代(oxdb这个特殊字符被称作SLIP的ESC字符);
  • 若IP报文中某个字符为ESC,那么就连续传输两个字节oxdb和oxdd来取代;

1、SLIP 协议特点

优点:简单,历史悠久

缺点:

1)只能同时运行一个网络协议:数据帧中没有类型字段,这代表若一条串行线路上使用SLIP进行传输数据报,那么其不能使用其他协议。

2)无容错控制:每一段必须知道对方的IP地址且无法把本段的IP地址通知给另一端。

3)无校验和:SLIP没有在数据帧中加入检验和,若SLIP传输的报文发生错误,只能通过上层协议来发现其错误。

2、CSLIP(压缩的SLIP)

由于串行线路的速率通常较低( 19200 b/s 或更低) ,而且通信经常是交互式的(如 Telnet和Rlogin,二者都使用TCP),因此在 SLIP线路上有许多小的 TCP分组进行交换。为了传送 1个字节的数据需要 20个字节的 IP首部和20个字节的TCP首部,每传送一个字节的数据需要传送超过40个字节来表达。于是人们提出一个被称作CSLIP(即压缩 SLIP)的新协议,它在RFC 1144中被详细描述。 CSLIP通过压缩首部来缩短交互相应时间,支持把上层的IP首部和TCP首部的一些一般不会发生变化的字段给去除,减少头部大小(其一般能把上面的 40个字节压缩到 3或5个字节),缩短数据传输时间,提高传输效率。

PPP协议

点对点协议PPP(Point-to-Point Protocol)协议是目前最流行的点对点链路控制协议,是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型中的网络层报文而设计的,它改进了之前的一个点对点协议-SLIP协议的缺陷,这种连接提供了同时的双向的全双工操作,并且假定数据包是按顺序投递的。PPP连接提供了一种广泛的解决办法,方便地将多种多样不同的值作为最大接收单元的值。

1、PPP协议组成

1在串行链路上封装IP数据报的方法:IP数据报在PPP帧中就是信息部分,长度受最大传送单元MTU的限制。PPP支持异步链路(无奇偶校验的8比特数据)和面向比特的同步链路。

2链路控制协议LCP(Link Control Protocol):用于建立配置和测试数据链路的连接。它允许通信双方进行协商,以确定不同的选项。当线路不再需要时,挑出这些线路,测试它们,商议选择,并仔细地再次释放链路控制协议。

3网络控制协议NCPNetwork Control Protocol):网络控制协议支持各种网络协议,用于检测上一层用的是哪一个协议,其中每一个协议支持不同的网络层协议,如IP、OSI的网络层等。

4)认证协议:最常用的包括口令验证协议PAP(Password Authentication Protocol)挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)

2、PPP协议帧格式

1) 首部

标志字段F:1字节,固定为0x7E(01111110),标志一个帧的开始或结束。连续2个帧之间只需要一个标志字段,如果出现连续两个标志字段,表示这是一个空帧。

地址字段A:1字节,固定不变,为0xFF(11111111)。

控制字段C:1字节,固定不变,为 0x03(00000011)。

协议:2字节,表示上一层使用的协议,协议字段不同,后面信息部分表示的数据类型不同。

  • 0x0021——信息字段是IP数据报
  • 0xC021——信息字段是链路控制数据LCP
  • 0x8021——信息字段是网络控制数据NCP
  • 0xC023——信息字段是安全性认证PAP
  • 0xC025——信息字段是LQR
  • 0xC223——信息字段是安全性认证CHAP

2) 信息部分:长度不超过1500字节。

字节填充法:

  • 当信息字段中出现0x7E时,将每一个0x7E字节转变成2字节序列(0x7D,0x5E);
  • 若信息字段中出现一个0x7D的字节,则将其转变成2字节序列(0x7D,0x5D);
  • 若信息字段中出现ASCII码的控制字符(即数值小于0X20的字符),则该字符前面需要加入一个0x7D字节,同时将该字符的编码加以改变(+20)。例如,出现0x03,就要把它转为2字节序列(0x7D,0x23) ;

0比特填充法:

PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送),此时使用0比特填充法。

  • 在发送端扫描整个信息字段,当有5个1连续出现时,立即填入一个0,保证信息字段中不会出现6个连续1。
  • 在接收端删除连续5个1后面的0。

3) 尾部:FCS:使用CRC的帧校验序列。

3、PPP协议工作状态

PPP通讯是两个端点之间的通讯,每一端必须首先发送LCP packets数据来设定和测试数据链路,当链路建立后,peer才可以被认证,认证完成后,再通过发送NCP packets来选定网络层协议,这些后续的通讯就可以在网络层进行了。

  1. 建立初始状态;
  2. 建立连接(成功到 3, 否则到 1);
  3. 选项协商(达成到4 , 否则到1);
  4. 身份验证(成功到1, 否则到7);
  5. 配置网络(配置完到6);
  6. 数据传输(传输完到7);
  7. 用完后关闭链路(回到1);

4、PPP协议功能特点

为这些优点付出的代价是在每一帧的首部增加3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

1) 功能简单:在同一条物理链路上进行点对点的数据传输,对数据链路层的帧不进行纠错,不需要序号,不需要流量控制。

2) 差错检测(CRC检验):每一帧都有FCS域用来检测错误循环冗余检验;正确就收下帧,反之丢弃。

3) 多种网络层协议:PPP支持在单根串行线路上运行多种协议(如IP,IPX, DECnet 等);

4) 多种类型链路:链路控制协议可以对多个数据链路选项进行设置,PPP必须能够在多种类型的链路上运行,例如串行或并行链路。

5) 通信双方可以进行IP地址动态协商(使用IP网络控制协议)和其他选项的协商配置;

6)IP地址协商:PPP允许一方作为PPP服务器,在客户端拨入时分配IP地址。在PPP链路终止后,IP地址可被重新使用。

7)选项协商:PPP允许通信双方动态协商某些选项。从某种意义来说,它允许链路一方配置另一方。

8)授权认证:PPP利用两个授权协议PAP和CHAP,可进行链路层授权。这两个协议通过发送和接收口令信息检查对方是否被授权与本机建立链路。

9)与CSLIP类似,对TCP和IP报文首部进行压缩;

10) 封装成帧:加入帧界定符。

11) 数据透明性:字节填充法。

12) 检测连接状态:自动检测链路是否处于正常工作状态。

PPTP协议

点对点隧道协议(PPTP)是建立在PPP(Point to Point)点对点协议上的VPN隧道技术。PPTP 的工作模型:

PPTP协议是点对点隧道协议,其将控制包与数据包分开,控制包采用TCP控制。PPTP将PPP帧封装进IP数据报中,通过IP网络如Internet或其他企业专用Intranet等发送。PPTP client首先同PPTP server建立一条TCP连接,建立的TCP连接只用于PPTP链路控制,PPTP通过TCP控制连接来创建、维护、终止一条隧道,并使用通用路由封装GRE(Generic Routing Encapsulation)对PPP帧(之后的链路控制协议和数据包)进行封装。封装前,PPP帧的有效载荷(即有效传输数据)一般会经过加密、压缩或是两者的混合处理。实际传输过程也是将数据包以PPP协议格式封装,然后在IP协议上传输PPP封装的数据。

1、PPTP原理

  1. 首先,PPTP客户机使用动态分配的TCP端口号,与PPTP服务器使用的保留TCP端口号1723建立控制连接。
  2. 其次,客户端与服务器通过控制连接来创建、维护、终止一条隧道。
  3. 然后,PPP帧的有效载荷经过加密、压缩或是两者的混合处理。
  4. 接着,使用通用路由封装GRE对PPP帧进行封装。
  5. 再者,将PPP帧封装进IP数据报文中。通过IP网络如Internet或其他企业准用INTRANET灯发送给PPTP服务器。
  6. 最后,服务器接收到PPTP数据包后进行常规处理。

2、虚拟专用网?PPTP的功能

当远程用户要访问公司专用网时,可采用PPTP网络接入方式,用户先拨号到PPTP Server建立PPP连接,PPTP Client和Server之间建立TCP连接,然后通过PPTP协商建立一条用户到服务器的隧道,然后通过PPP协议的NCP协商,为用户分配一个网段内IP,用户可以使用分配到的IP进行局域网(实际上只是逻辑上的局域网, 有可能地理位置跨越很大)内的通信,从而为远程接入虚拟专用网提供一条在公共网络上创建安全连接的途径。

NAS: Network Access Server,网络访问服务器。

PAC: PPTP Access Concentrator,PPTP网络集中器,隶属于一个或多个PSTN或ISDN线路的能够允许你个PPP和处理PPP协议的设备。PAC仅需执行TCP/IP传输业务到一个或者多个PNS上,也能够为非IP协议开辟隧道。

PNS: PPTP Network Server,PPTP网络服务器

NAS功能:

1) 到PTSN、ISDN的固有物理接口和外部modem、终端适配器的控制

2) 作为PPP的LCP会话的终端

3) 参与PPP认证协议

4) 对PPP多链路协议进行通道汇聚和绑定管理

5) 作为各种PPP网络控制协议(NCP)的逻辑终端

6) NAS接口之间的多协议路由和桥

PPTP允许采用Client-Server模型分解现存的网络访问服务器(NAS)的功能。PPTP协议将以上NAS的功能分给了PAC和PNS。 PAC负责1和2, 有可能还需要负责3;PNS负责4、5、6,有可能还要负责3。PPTP协议仅有PAC和PNS执行,其他任何系统都无需知道PPTP。拨号网络可以在不知道PPTP的情况下连接到了一个PAC。

3、PPTP报文

PPTP报文分为两种:

PPTP控制报文:用于创建、维护、终止PPTP连接。

PPTP数据报文:用来传送PPP数据包,PPP数据包封装在GRE(通用路由封装)里进行传送。

对于数据报文,PPTP Server和PPTP Client都使用到了两个IP地址。一个是公网IP地址,用于连接Internet; 另一个是通过PPTP拨号分配的内网IP。(PPTP Server可能是手动配置的私网地址,PPTP Client的私网地址是从PPTPServer上获取到的)

4、PPTP协议原理

PPTP有两个并行的组成部分:

1)PPTP链路控制: 基于TCP的PAC-PNS对操作的控制连接,在PAC和PNS之间的PPP隧道建立之前, 它们之间必须建立控制连接。控制层的主要功能包括:

  • 彼此交换基本信息;
  • 负责创建、维护、删除Session;
  • 负责创建、维护、删除Tunnel;
  • 更新通信参数;(Set-Link-Info)
  • 维护控制层自身的连接状态。(Echo-Request、Echo-Reply)

控制连接是标准的TCP会话, PPTP呼叫控制和管理信息就可以通过TCP传送。控制层连接是基于TCP建立的,PPTP Server监听TCP1723端口,等待Client的连接请求。

PPTP链接控制连接过程与隧道维护:

  1. TCP连接的建立阶段
  2. PPTP控制层连接的建立阶段
  3. PPP会话阶段(包括LCP协商、身份认证、NCP协商等)
  4. PPTP隧道中数据包的交互(这是实际通信流量、通信的packages是经过GRE封装过的PPP包)
  5. PPTP链接的维护
  6. PPTP链接的终止

2)PPTP数据传输:一个在相同的PAC-PNS对之间的IP隧道操作。 该操作用来传送封装好的PPP包的GRE(Generic Routing Encapsulation,即通用路由封装协议),为PAC-PNS对之间的用户提供服务。

数据的发送--封包过程:

在发送端,要把一个数据包发出去,需要首先把packet发到VPN的虚拟网卡,虚拟网卡把它变成GRE frame,然后发往IP层再次进行路由。数据包这次会被发往物理网络,并最终抵达PPTP Server端。

封包的关键在网络层和链路层:

PPP帧的封装:IP层从传输层接收到数据包后,传输给链路层的VPN虚拟网卡,添加PPP报头,封装成PPP帧。

GRE报文的封装:经过VPN网卡封装后的数据包重新交回网络层,由网络层的GRE协议添加GRE报头,形成GRE报文

IP再封装: GRE报文交给同属于网络层的IP协议,进行IP头在封装,二次添加IP首部,形成新的IP数据报

在经过二次IP封装的IP数据报就传给链路层的Ethernet处理程序进行正常传输,经网卡传输到因特网。

数据的接收--解包过程:

在接收端,从物理网卡上收到frame之后交给IP层,IP对其解包之后转发给VPN虚拟网卡,虚拟网卡再解包把它变成普通IP packet再次发往IP层,这次IP层知道是VPN对端发来的数据,直接交给TCP/UDP并最终抵达应用层。

PPTP隧道数据的接收过程与发送过程刚好相反。

L2TP协议

第二层隧道协议(L2TP,Layer Two Tunneling Protocol)是一种虚拟隧道协议,通常用于虚拟专用网。L2TP通过在公共网络(如Internet)上建立点到点的L2TP隧道,将PPP数据帧封装后通过L2TP隧道传输,使得远端用户(如企业驻外机构和出差人员)利用PPP接入公共网络后,能够通过L2TP隧道与企业内部网络通信,访问企业内部网络资源,从而为远端用户接入私有的企业网络提供了一种安全、经济且有效的方式。

L2TP协议自身不提供加密与可靠性验证的功能,可以和安全协议搭配使用,从而实现数据的加密传输。经常与L2TP协议搭配的加密协议是IPsec,当这两个协议搭配使用时,通常合称L2TP/IPsec。

L2TP支持包括IP、ATM、帧中继、X.25在内的多种网络。在IP网络中,L2TP协议使用注册端口UDP 1701。因此,在某种意义上,尽管L2TP协议的确是一个数据链路层协议,但在IP网络中,它又的确是一个会话层协议

1、L2TP协议结构

L2TP的协议结构如表所示:

L2TP协议中相关字段的含义如下:

  • T--T位表示信息类型。若是数据信息,该值为0;若是控制信息,该值为1。
  • L--当设置该字段时,说明Length字段存在,表示接收数据包的总长。对于控制信息,必须设置该值。
  • X--X位为将来扩展预留使用。在导出信息中所有预留位被设置为0,导入信息中该值忽路。
  • S--如果设置S位,那么Nr字段和Ns字段都存在。对于控制信息,S位必须设置。
  • O--当设置该字段时,表示在有效负载信息中存在Offct Size字段。对于控制信息,该字段值设为0。
  • P--如果P(Priority)位值为1,表示该数据信息在其本地排队和传输中将会得到优先处理。
  • 版本(Ver)--Ver位的值总为002。它表示一个版本L2TP信息。
  • 长度(Length)--信息总长,包括头、信息类型AVP以及另外的与特定控制信息类型相关的AVPs。
  • 隧道ID(Tunnel ID)--识别控制信息应用的隧道。如果对等结构还没有接收到分配的Tunnel ID,那么TunnelID必须设置为0。一旦接收到分配的TunnelID,所有更远的数据包必须和Tunnel ID一起被发送。
  • 会话ID(Call ID)--识别控制信息应用的隧道中的用户会话。如果控制信息在隧道中不应用单用户会话(例如,一个Stop-Control-Connection-Notification 信息),Call ID必须设置为0。
  • Nr--期望在下一个控制信息中接收到的序列号。
  • Ns--数据或控制信息的序列号。
  • 偏移量大小和填充(Ofset Size&Pad)--该字段规定通过L2F协议头的字节数,协议头是有效负载数据起始位置。Offset Padding中的实际数据并没有定义。如果Offset字段当前存在,那么L2TP头Offset Padding的最后8位字节后结束。

2、L2TP协议消息类型

L2TP协议定义了两种消息:

1)控制消息:用于L2TP隧道和L2TP会话的建立、维护和拆除。控制消息的传输是可靠的,并且支持流量控制和拥塞控制。

2)数据消息:用于封装PPP帧,其格式如下图所示。数据消息的传输是不可靠的,若数据消息丢失,不予重传。数据消息支持流量控制,即支持对乱序的数据消息进行排序L2TP。控制消息和L2TP数据消息均封装在UDP报文中。

3、L2TP协议工作流程

在一对LNS和LAC之间存在着两种类型的连接,一种是隧道(Tunnel)连接,一对LAC和LNS中可以建立多条L2TP隧道,每条隧道由一条控制连接和至少一个L2TP会话组成;另一种是会话(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。

L2TP是基于连接的协议,建立一条隧道传递PPP会话的过程包括两步:

1)建立一条隧道的控制连接。

控制连接的建立包括对端的身份验证以及对端的L2TP版本号识别、帧类型和硬件承载能力等信息的协商交换。在控制连接的建立过程中,L2TP的隧道验证功能是可选的,如果使用,则在LAC和LNS之间必须存在唯一的共享认证密钥。

2)根据入流/出流呼叫的请求,触发建立一个会话(Session)。

与隧道的建立过程不同,会话连接的建立是有方向性的。LAC请求LNS接受一个对应于“入呼叫”的会话,或者LNS请求LAC接受一个对应于“出呼叫”的请求。会话与呼叫是一一对应的,呼叫状态由LAC和LNS维护。

一条L2TP隧道中可以建立多个会话。会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,该隧道连接将被断开。

L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。

隧道(tunnel)和会话(session)的关系:可以形象的理解为会话是建立在隧道之中的,隧道想成一个有10个车道的高速公路,一台拨号PC的数据流为一个会话,相当于占用了一个车道(告诉公路有多少车道是设备规定好的),这个车道只能跑这个运载这个PC的报文的卡车。(比如某型号设备每条隧道最多支持1000个会话)。

4、L2TP协议隧道的呼叫建立

L2TP隧道的呼叫建立流程过程为:

1) 远端系统Host发起呼叫连接请求;

2) Host和LAC端(RouterA)进行PPP LCP协商;

3) LAC对Host提供的用户信息进行PAP或CHAP认证;

4) LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证;

5) RADIUS服务器认证该用户,如果认证通过,LAC准备发起Tunnel连接请求;

6) LAC端向指定LNS发起Tunnel连接请求;

7) 在需要对隧道进行认证的情况下,LAC端向指定LNS发送CHAP challenge信息,LNS回送该challenge响应消息CHAP response,并发送LNS侧的CHAP challenge,LAC返回该challenge的响应消息CHAP response;

8) 隧道验证通过;

9) LAC端将用户CHAP response、response identifier和PPP协商参数传送给LNS;

10) LNS将接入请求信息发送给RADIUS服务器进行认证;

11) RADIUS服务器认证该请求信息,如果认证通过则返回响应信息;

12) 若用户在LNS侧配置强制本端CHAP认证,则LNS对用户进行认证,发送CHAP challenge,用户侧回应CHAP response;

13) LNS再次将接入请求信息发送给RADIUS服务器进行认证;

14) RADIUS服务器认证该请求信息,如果认证通过则返回响应信息;

15) 验证通过,LNS端会给远端用户分配一个企业网内部IP地址,用户即可以访问企业内部资源。

5、L2TP协议特点

1)灵活的身份验证机制以及高度的安全性:L2TP协议本身并不提供连接的安全性,但它可依赖于PPP提供的认证(比如CHAP、PAP等),因此具有PPP所具有的所有安全特性。L2TP还可以与IPsec结合起来实现数据安全,使得通过L2TP所传输的数据更难被攻击。L2TP还可根据特定的网络安全要求在L2TP之上采用隧道加密技术、端对端数据加密或应用层数据加密等方案来提高数据的安全性

2)多协议传输:L2TP传输PPP数据包,在PPP数据包内可以封装多种协议。

3)支持RADIUS服务器的认证:LAC和LNS可以将用户名和密码发往RADIUS服务器,由RADIUS服务器对用户身份进行认证。

4)支持内部地址分配:LNS可以对远端系统的地址进行动态的分配和管理,可支持私有地址应用(RFC 1918)。为远端系统分配企业内部的私有地址,可以方便地址的管理并增加安全性。LNS可放置于企业网的防火墙之后,它可以对远端用户的地址进行动态的分配和管理,可支持私有地址应用(RFC 1918)。为远端用户所分配的地址不是Internet地址而是企业内部的私有地址,这样方便了地址的管理并可以增加安全性。

5)网络计费的灵活性:可在LAC和LNS两处同时计费,即ISP处(用于产生帐单)及企业网关(用于付费及审计)。L2TP能够提供数据传输的出/入包数、字节数以及连接的起始、结束时间等计费数据,AAA服务器可根据这些数据方便地进行网络计费。

6)可靠性:L2TP协议支持备份LNS,当主LNS不可达之后,LAC可以与备份LNS建立连接,增加了L2TP服务的可靠性和容错性。

7)支持由RADIUS服务器为LAC下发隧道属性:L2TP隧道采用NAS-Initiated模式时,LAC上的L2TP隧道属性可以通过RADIUS服务器来下发。此时,在LAC上只需开启L2TP服务,并配置采用AAA远程认证方式对PPP用户进行身份验证,无需进行其他L2TP配置。

当L2TP用户拨入LAC时,LAC作为RADIUS客户端将用户的身份信息发送给RADIUS服务器。RADIUS服务器对L2TP用户的身份进行验证。RADIUS服务器将验证结果返回给LAC,并将该用户对应的L2TP隧道属性下发给LAC。LAC根据下发的隧道属性,创建L2TP隧道和会话。

6、L2TP协议功能

1)用来整合多协议拨号服务至现有的Intemet 服务提供商点。PPP定义了多协议跨越第2层点对点链接的一个封装机制。特别地,用户通过使用众多技术之一(如拨号POTS,ISDN,ADSL等)获得第2层连接到网络访问服务器(NAS),然后在此连接上运行PPP。在这样的配置中,第2层终端点和PPP会话终点处于相同的物理设备中(如NAS)。

2)PPP模型,允许第2层和PPP终点处于不同的由包交换网络相互连接的设备中。通过L2TP,用户在第2层连接到一个访问集中器(如调制解调器池、ADSL,DSLAM等),然后这个集中器将单独得的PPP帧隧道到NAS。这样,可以把PPP包的实际处理过程与第2层连接的终点分离开来。

3)L2TP使得PPP会话可以出现在接收会话的物理点之外的位置,它用来使所有的通道出现在单个的NAS上,并允许多链接操作,即使是在物理呼叫分散在不同物理位置的NAS 上的情况下。

4)L2TP使用两种信息类型:控制信息和数据信息。控制信息用于隧道和呼叫的建立、维持和清除。数据信息用于封装隧道所携带的PPP帧。控制信息利用L2TP中的一个可靠控制通道来确保发送。当发生包丢失时,不转发数据信息。

注:

如有错误、侵权,请联系作者更改删除!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三九笔墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值