微信第二层支付是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信第二层支付是啥相关的知识,希望对你有一定的参考价值。
微信第二层支付是微信支付旗下一项新型跨境支付服务,它可以用于跨境外币支付,通过微信支付的技术将不同地区的不同货币汇集到一个公共账户内,实现跨境支付的目的。 参考技术A 微信第二层支付是微信支付的一种模式,也叫做分账支付。它允许支付方在一次支付的过程中,将一笔总金额分割为多个账户各自收取的金额。这样,可以让多方参与到支付的过程,并保证收款方及时收到款项。 参考技术B 微信第二层支付是微信公众号支付方式,用户可以通过微信公众号内实现即时支付,扫描海报、收藏文章等方式购买商品,提升用户体验和用户购买率。RS复习之:二层技术----PPP
点对点连接是最常见的一种 WAN 连接。点对点连接用于将 LAN 连接到服务提供商 WAN 以及将企业网络内部的各个 LAN 段互连在一起。LAN 到 WAN 的点对点连接也称为串行连接或租用线路连接,因为这些线路是从电信公司(通常是电话公司)租用的,并且专供租用该线路的公司使用。公司为两个远程站点之间的持续连接支付费用,该线路将持续活动,始终可用。了解点对点通信链路如何提供 WAN 接入对整体理解 WAN 的作用非常重要。
点对点协议 (PPP) 提供同时处理 TCP/IP、IPX 和 AppleTalk 的多协议 LAN 到 WAN 连接。它可用于双绞线、光纤线路和卫星传输链路上。PPP 可在 ATM、帧中继、ISDN 和光纤链路上传输。在现代网络中,安全性是关键的考虑因素。PPP 允许您使用口令验证协议 (PAP) 或更有效的挑战握手验证协议 (CHAP)。
大多数 PC 都有串行和并行端口,and then,电的传播速度是固定的。在导线上的传送速度更快的方法之一就是压缩数据,这样一来,传送数量少了,在导线上传送所需的时间也就少了,或者同时传送这些s数据。计算机在内部元件之间使用相对短的并行连接,但对于大多数外部通信则采用串行总线转换信号。
下面是串行和并行通信的对比。
利用串行连接,信息通过一条导线发送时,每次发送一个位。大多数 PC 上的 9 针串行连接器使用两个环路进行数据通信,每个方向一个环路,其它导线则用于控制信息的流动。在任意指定的方向上,数据都只在一根导线上流动。
并行连接则通过多根导线同时传输多个位。对于 PC 上的 25 针并行端口,有 8 根数据传输线同时传输 8 个数据位。由于有 8 根导线传输数据,因此,理论上,并行链路的数据传输速度是串行连接的 8 倍。根据这个理论,并行连接发送一个字节的时间内串行连接才发送一个位。
这个解释有几个问题。理论上的更快是指什么?如果并行比串行更快,那是否意味着并行更适合连接 WAN?实际上,经常是串行链路的时钟频率远高于并行链路,因此它们可以实现更高的数据传输速率,因为有两个因素限制了并行通信的速率:时滞和串扰的干扰。
在并行连接中,不要以为发送方同时发出的 8 位数据会同时到达接收方。而是,某些位先到,某些位后到。这称为时滞。要解决时滞问题并不容易。接收端自身必须与发射方同步,然后等待直到所有位抵达接收方。读取、等待、锁存、等待时钟信号和传输 8 位数据的过程会增加传输的时间。在并行通信中,锁存器是一种以顺序逻辑体系存储信息的数据存储系统。您使用的导线越多,连接的距离越长,就越容易出现问题并导致延迟增加。由于需要同步信号,因此并行传输的性能远低于理论预期。
采用串行链路就无需考虑此问题,因为大多数串行链路都不需要同步信号。串行连接所需的导线和电缆更少。它们占用的空间更少,可以更好地隔离来自其它导线和电缆的干扰。
并行导线在物理上并排捆成并行电缆,因此信号会相互干扰。导线之间的串扰需要更多的处理资源,尤其是在频率较高时。计算机上的串行总线(包括路由器)可以在传输位之前对串扰进行补偿。由于串行电缆的导线数更少,因此串扰更小,网络设备传输串行通信的频率和效率也就更高。
在大多数情况下,串行通信的架设成本要低很多。串行通信使用的导线数更少,电缆更便宜,连接器的针数也更少。
so,结合上面的问题,所有长距离通信和大多数计算机网络都使用串行连接,因为电缆的成本和同步的难度让并行连接方案不切实际。串行通信最大的优势是布线简单。此外,串行电缆可以比并行电缆更长,因为电缆中导体之间的干扰(串扰)要低很多。
数据根据发送路由器使用的通信协议进行封装。封装的帧通过物理介质 (physical medium) 发送到 WAN。数据在 WAN 上的传输方式很多,但接收方路由器在数据到达时会采用相同的通信协议将帧解封。
串行通信标准有许多种,每种标准使用的信号传输方法各不相同。影响 LAN 到 WAN 连接的串行通信标准主要有以下三种:
RS-232 — 个人计算机上的大多数串行端口都符合 RS-232C 或更新的 RS-422 和 RS-423 标准。这些标准都使用 9 针和 25 针连接器。串行端口是一种通用接口,几乎可用于连接任何类型的设备,包括调制解调器、鼠标和打印机。许多网络设备使用的 RJ-45 连接器也符合 RS-232 标准。图中显示的是 RS-232 连接器示例。
V.35 — 通常用于调制解调器到复用器的通信,此 ITU 标准可以同时利用多个电话电路的带宽,适合高速同步数据交换。在美国,V.35 是大多数路由器和 DSU 连接到 T1 载波线路所使用的接口标准。V.35 电缆是高速串行部件,设计用于支持更高的数据传输速率和支持通过数字线路连接 DTE 和 DCE。本节后面将详细介绍 DTE 和 DCE。
HSSI — 高速串行接口 (HSSI) 支持最高 52 Mb/s 的传输速率。工程师使用 HSSI 将 LAN 上的路由器连接到诸如 T3 线路之类的高速 WAN 线路。工程师还通过 HSSI 提供了采用令牌环或以太网的 LAN 之间的高速互连。HSSI 是由 Cisco Systems 和 T3plus Networking 联合开发的 DTE/DCE 接口,用于满足在 WAN 链路上实现高速通信的需求。
为了最大限度地提高介质传输的语音流量,贝尔实验室发明了时分复用 (TDM)。在时分复用技术出现之前,每个电话呼叫都需要有自己的物理链路。这种方案非常昂贵,而且无法扩展。TDM 将一个链路的带宽分割为若干独立的通道或时隙。通过为每个通道分配不同的传输时间间隔(时隙),TDM 可在同一链路上以两个或多个通道同时传输数据。实际上,这些通道是轮流使用链路。
TDM 是一个物理层概念。它与输出通道上进行多路复用的信息本身的特性无关。TDM 与输入通道所用的第 2 层协议无关。
我们可以将 TDM 比作高速公路上的车流。要将四条公路上的车流输送到另一个城市,您可以让所有的车流都通过一个主车道驶达,假设每条道路上的车流都保持同步并且享受同等的服务。那么,如果每条道路每四秒钟即有一辆汽车进入主干高速公路,则高速公路上的车流速率为每秒一辆。只要所有汽车的速度完全相同,汽车之间就不会产生冲突。到达目的地后,整个过程颠倒过来,汽车将按照相同的同步方式驶离高速公路并进入通往各地的公路。
这就是在链路上发送数据所用的同步 TDM 原理。TDM 可以增加传输链路的容量,其原理是将时间分为若干个更小的时间间隔,这样链路可以同时传输多个输入源的位,从而有效地提高每秒传输的位数。利用 TDM,发射器和接收器都能够准确地知道正在发送的是哪个信号。
在本例中,发射器的复用器 (MUX) 可以接受三个独立的信号。MUX 可将每个信号分割成多个数据段。MUX 通过将每个数据段插入到时隙中为每个数据段各分配了一个通道。
接收端的 MUX 仅根据每个位的到达时间将 TDM 流重新组装成三个独立的数据流。一种称为位交错的技术可以跟踪每次传输的位数和位序,这样在接收时可以快速有效地将这些位重新组装成原始的格式。字节交错的功能与位交错相同,但由于每个字节有八位,因此该流程需要更大或更长的时隙。
再打个比喻,可以将 TDM 比作一列带有 32 节车厢的列车。每节车厢分别属于不同的物流公司,每天该列车发车时都带有这 32 节车厢。如果某个公司需要发货,则对应的车厢将会装货。如果该公司不需要发货,则其车厢为空,但仍留在列车上。空车行驶显然效率不高。当流量时断时续时,TDM 也会存在这种低效的问题,因为即使不需要传输任何数据,还是会分配时隙。
统计时分复用 (STDM) 的开发目的就是解决低效的问题。STDM 采用可变的时隙长度,让通道可以竞争任何空闲的时隙空间。在流量高峰时段,STDM 使用缓冲区内存临时存储数据。采用这种方案后,STDM 不会因为非活动通道而浪费高速线路的时间。STDM 要求每个传输都带有身份信息(通道标识符)。
DTE-DCE
从 WAN 连接的角度来看,串行连接的一端连接的是 DTE 设备,另一端连接的是 DCE 设备。两个 DCE 设备之间的连接是 WAN 服务提供商传输网络。在这种情况下:
CPE 通常是路由器,也就是 DTE。如果 DTE 直接连接到服务提供商网络,那么 DTE 也可以是终端、计算机、打印机或传真机。
DCE 通常是调制解调器或 CSU/DSU,DCE 设备用于将来自 DTE 的用户数据转换为 WAN 服务提供商传输链路所能接受的格式。此信号由远程 DCE 接收,远程 DCE 将信号解码为位序列。然后,远程 DCE 将该序列传送到远程 DTE。
电子工业联盟 (EIA) 和国际电信联盟电信标准局 (ITU-T) 一直积极开发允许 DTE 与 DCE 通信的标准。EIA 将 DCE 称为数据通信设备,而 ITU-T 将 DCE 称为数据电路终端设备。
WAN 封装协议
在每个 WAN 连接上,数据在通过 WAN 链路传输之前都会封装成帧。要确保使用正确的协议,需要配置适当的第 2 层封装类型。协议的选择取决于 WAN 技术和通信设备。 WAN 协议及其适用场合,随后是简短的说明:
HDLC — 当链路两端均为 Cisco 设备时,点对点连接、专用链路和交换电路连接上的默认封装类型。HDLC 现在是同步 PPP 的基础,许多服务器使用同步 PPP 连接到 WAN(最常见的是连接到 Internet)。
PPP — 通过同步电路和异步电路提供路由器到路由器和主机到网络的连接。PPP 可以和多种网络层协议协同工作,例如 IP 和 互联网分组交换 (IPX)。PPP 还具有内置安全机制,例如 PAP 和 CHAP。本章主要介绍 PPP。
串行线路 Internet 协议 (SLIP) — 使用 TCP/IP 实现点对点串行连接的标准协议。在很大程度上,SLIP 已被 PPP 取代。
X.25/平衡式链路接入协议 (LAPB) — ITU-T 标准,它定义了如何为公共数据网络中的远程终端访问和计算机通信维持 DTE 与 DCE 之间的连接。X.25 指定 LAPB,LAPB 是一种数据链路层协议。X.25 是帧中继的前身。
帧中继 — 行业标准,是处理多个虚电路的交换数据链路层协议。帧中继是 X.25 之后的下一代协议。帧中继消除了 X.25 中使用的某些耗时的过程(例如纠错和流控制)。下一章专门介绍帧中继。
ATM — 信元中继的国际标准,在此标准下,设备以固定长度(53 字节)的信元发送多种类型的服务(例如语音、视频或数据)。固定长度的信元可通过硬件处理,从而减少了传输延迟。ATM 使用高速传输介质 (media),例如 E3、SONET 和 T3。
(我操,终于到了大PPP协议出场的时候啦,感谢思科大神的教材,在思科网院里面可以下载到,内容很不错,配有动画)
好吧,继续扯
PPP 封装的设计非常谨慎,保留了对大多数常用支持硬件的兼容性。PPP 对数据帧进行封装以便在第 2 层物理链路上传输。PPP 使用串行电缆、电话线、中继 (trunk) 线、手机、专用无线链路或光缆链路建立直接连接。PPP 具有许多优点,它不是专用协议便是其中之一。更重要的是,它包含 HDLC 中没有的许多功能:
链路质量管理功能监视链路的质量。如果检测到过多的错误,PPP 会关闭链路。
PPP 支持 PAP 和 CHAP 身份验证。后面的章节中将会介绍并练习此功能。
PPP 包含三个主要组件:
用于在点对点链路上封装数据报的 HDLC 协议。
用于建立、配置和测试数据链路连接的可扩展链路控制协议 (LCP)。
用于建立和配置各种网络层协议的一系列网络控制协议 (NCP)。PPP 允许同时使用多个网络层协议。较常见的 NCP 有 Internet 协议控制协议、Appletalk 控制协议、Novell IPX 控制协议、Cisco 系统控制协议、SNA 控制协议和压缩控制协议。
分层体系结构是一种协助互连层之间相互通信的逻辑模型、设计或蓝图。该图描绘了 PPP 的分层体系结构与开放式系统互联 (OSI) 模型的对应关系。PPP 和 OSI 有相同的物理层,但 PPP 将 LCP 和 NCP 功能分开设计。
在物理层,可在一系列接口上配置 PPP,这些接口包括:
异步串行
同步串行
HSSI
ISDN
PPP 可在任何 DTE/DCE 接口(RS-232-C、RS-422、RS-423 或 V.35)上运行。PPP 唯一的必要条件是要有可在异步或同步位串行模式下运行、对 PPP 链路层帧透明的双工电路(专用电路或交换电路)。除非正在使用的 DTE/DCE 接口对传输速率有限制,PPP 本身对传输速率没有任何强制性的限制。
PPP 的大部分工作都在数据链路层和网络层由 LCP 和 NCP 执行。LCP 设置 PPP 连接及其参数,NCP 处理更高层的协议配置,LCP 切断 PPP 连接。
LCP 是 PPP 中实际工作的部分。LCP 位于物理层的上方,其职责是建立、配置和测试数据链路连接。LCP 建立点对点链路。LCP 还负责协商和设置 WAN 数据链路上的控制选项,这些选项由 NCP 处理。
LCP 自动配置链路两端的接口,包括:
处理对数据包大小的不同限制
检测常见的配置错误
切断链路
确定链路何时运行正常或者何时发生故障
一旦建立了链路,PPP 还会采用 LCP 自动批准封装格式(身份验证、压缩、错误检测)。
当前网络协议存在的许多问题在点对点链路中会更加突出。举个例子,IP 地址的分配与管理即使在 LAN 中都不容易,在电路交换点对点链路(例如拨号调制解调器服务器)上则更为困难。PPP 使用 NCP 解决这些问题。
PPP 允许多个网络层协议在同一通信链路上运行。对于所使用的每个网络层协议,PPP 都分别使用独立的 NCP。例如,IP 使用 IP 控制协议 (IPCP),IPX 使用 Novell IPX 控制协议 (IPXCP)。
NCP 包含了功能字段,功能字段中包含的标准化代码(图中显示的 PPP 协议字段编号)用于指示 PPP 封装的网络层协议。每个 NCP 负责满足各自网络层协议的特定需求。各个 NCP 组件共同封装和协商多网络层协议选项。本章后面将介绍并练习如何使用 NCP 配置各种网络层协议。
好啦,看完PPP里面比较重要的两个层次后,来看看PPP的封装
PPP报文格式
PPP的基本构架
PPP协议处于TCP/IP协议栈的数据链路层,主要用在支持全双工的同异步链路上,进行点到点之间的数据传输。
PPP主要由三类协议族组成:
链路控制协议族(Link Control Protocol),主要用来建立、拆除和监控PPP数据链路。
网络层控制协议族(Network Control Protocol),主要用来协商在该数据链路上所传输的数据包的格式与类型。
扩展协议族CHAP(Challenge-Handshake Authentication Protocol)和PAP(Password Authentication Protocol),主要用于网络安全方面的验证。
PPP报文封装的帧格式
PPP报文封装格式如图2所示。
各字段的含义如下:
Flag域
Flag域标识一个物理帧的起始和结束,该字节为0x7E。
Address域
Address域可以唯一标识对端。PPP协议是被运用在点对点的链路上,因此,使用PPP协议互连的两个通信设备无须知道对方的数据链路层地址。按照协议的规定将该字节填充为全1的广播地址,对于PPP协议来说,该字段无实际意义。
Control域
该字段默认值为0x03,表明为无序号帧,PPP默认没有采用序列号和确认应答来实现可靠传输。
Address和Control域一起标识此报文为PPP报文,即PPP报文头为FF03。
Protocol域
Protocol域可用来区分PPP数据帧中信息域所承载的数据包类型。
Protocol域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也就是要求最低有效字节的最低有效位为“1”。
如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,接收端则会认为此数据帧是不可识别的。接收端向发送端发送一个Protocol-Reject报文,在该报文尾部将填充被拒绝报文的协议号。
Information域
Information域最大长度是1500字节,其中包括填充域的内容。Information域的最大长度称为最大接收单元MRU(Maximum Receive Unit)。MRU的缺省值为1500字节,在实际应用当中可根据实际需要进行MRU的协商。
如果Information域长度不足,可被填充,但不是必须的。如果填充则需通信双方的两端能辨认出填充信息和真正需要传送的信息,方可正常通信。
FCS域
FCS域的功能主要对PPP数据帧传输的正确性进行检测。
在数据帧中引入了一些传输的保证机制,会引入更多的开销,这样可能会增加应用层交互的延迟
LCP报文封装的帧格式
LCP报文封装格式请参见图2。
在链路建立阶段,PPP协议通过LCP报文进行链路的建立和协商。此时LCP报文作为PPP的净载荷被封装在PPP数据帧的Information域中,PPP数据帧的协议域的值固定填充0xC021。
在链路建立阶段的整个过程中信息域的内容是变化的,它包括很多种类型的报文,所以这些报文也要通过相应的字段来区分。
Code域
Code域的长度为一个字节,主要是用来标识LCP数据报文的类型。
在链路建立阶段,接收方接收到LCP数据报文。当其Code域的值无效时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。
Identifier域
Identifier域为1个字节,用来匹配请求和响应,当Identifier域值为非法时,该报文将被丢弃。
通常一个配置请求报文的ID是从0x01开始逐步加1的。当对端接收到该配置请求报文后,无论使用何种报文回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致。
Length域
Length域的值就是该LCP报文的总字节数据。它是Code域、Identifier域、Length域和Data域四个域长度的总和。
Length域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。
Data域
Data域所包含的是协商报文的内容,这个内容包含以下字段。
Type为协商选项类型。
Length为协商选项长度,它是指Data域的总长度,也就是包含Type、Length和Data。
Data为协商选项的详细信息
报文始终是最烦的。。。。但是多少还是要懂点。。。。
看看PPP的工作过程吧
PPP的建链过程
下图是PPP协议整个链路过程需经历阶段的状态转移图:
图1 PPP链路建立过程
PPP运行的过程简单描述如下:
通信双方开始建立PPP链路时,先进入到Establish阶段。
在Establish阶段,PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU(Maximum Receive Unit)、验证方式和魔术字(magic number)等选项。LCP协商成功后进入Opened状态,表示底层链路已经建立。
如果配置了验证,将进入Authenticate阶段,开始CHAP或PAP验证。如果没有配置验证,则直接进入Network阶段。
在Authenticate阶段,如果验证失败,进入Terminate阶段,拆除链路,LCP状态转为Down。如果验证成功,进入Network阶段,此时LCP状态仍为Opened。
在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。
NCP协商包括IPCP(IP Control Protocol)、MPLSCP(MPLS Control Protocol)等协商。IPCP协商内容主要包括双方的IP地址。
NCP协商成功后,PPP链路将一直保持通信。PPP运行过程中,可以随时中断连接,物理链路断开、认证失败、超时定时器时间到、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。
在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接,开始新的PPP链路建立。
下面具体介绍PPP协商阶段。
Dead阶段(链路不可用阶段)
Dead阶段也称为物理层不可用阶段。PPP链路都需从这个阶段开始和结束。
当通信双方的两端检测到物理线路激活(通常是检测到链路上有载波信号)时,就会从Dead阶段跃迁至Establish阶段,即链路建立阶段。
链路被断开后也同样会返回到链路不可用阶段。
Establish阶段(链路建立阶段)
在Establish阶段,PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU、验证方式和魔术字(magic number)等选项。当完成配置报文的交换后,则会继续向下一个阶段跃迁。
在链路建立阶段,LCP的状态机会发生如下改变。
当链路处于不可用阶段时,此时LCP的状态机处于初始化Initial状态或准备启动Starting状态。当检测到链路可用时,则物理层会向链路层发送一个Up事件。链路层收到该事件后,会将LCP的状态机从当前状态改变为Request-Sent(请求发送)状态,根据此时的状态机LCP会进行相应的动作,也就是开始发送Configure-Request报文来配置数据链路。
如果本端设备先收到Configure-Ack报文,则LCP的状态机从Request-Sent状态改变为Ack-Received状态,本端向对端发送Configure-Ack报文以后,LCP的状态机从Ack-Received状态改变为Opened状态。
如果本端设备先向对端发送Configure-Ack报文,则LCP的状态机从Request-Sent状态改变为Ack-Sent状态,本端收到对端发送的Configure-Ack报文以后,LCP的状态机从Ack-Sent状态改变为Opened状态。
LCP状态机变为Open状态以后就完成当前阶段的协商,并向下一个阶段跃迁。
下一个阶段既可能是验证阶段,也可能是网络层协商阶段。下一阶段的选择是依据链路两端的设备配置的,通常由用户来配置。
Authenticate阶段(验证阶段)
缺省情况下,PPP链路不进行验证。如果要求验证,在链路建立阶段必须指定验证协议。
PPP验证主要是用于主机和设备之间,通过PPP网络服务器交换电路或拨号接入连接的链路,偶尔也用于专用线路。
PPP提供密码验证协议PAP(Password Authentication Protocol)和质询握手验证协议CHAP(Challenge-Handshake Authentication Protocol)两种验证方式。
单向验证是指一端作为验证方,另一端作为被验证方。双向验证是单向验证的简单叠加,即两端都是既作为验证方又作为被验证方。在实际应用中一般只采用单向验证。
PAP验证过程
PAP验证协议为两次握手验证,口令为明文。
PAP验证的过程如图2所示。
图2 PAP认证过程
被验证方把本地用户名和口令发送到验证方。
验证方根据本地用户表查看是否有被验证方的用户名
若有,则查看口令是否正确,若口令正确,则认证通过;若口令不正确,则认证失败。
若没有,则认证失败。
CHAP验证过程
CHAP验证协议为三次握手验证协议。它只在网络上传输用户名,而并不传输用户密码,因此安全性要比PAP高。
CHAP的验证过程如图3所示。
图3 CHAP的验证过程
CHAP单向验证过程分为两种情况:验证方配置了用户名和验证方没有配置用户名。推荐使用验证方配置用户名的方式,这样可以对验证方的用户名进行确认。
验证方配置了用户名的验证过程
验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge),并同时将本端的用户名附带上一起发送给被验证方。
被验证方接到验证方的验证请求后,先检查本端接口上是否配置了ppp chap password命令,如果配置了该命令,则被验证方用报文ID、命令中配置的用户密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response)。如果接口上未配置ppp chap password命令,则根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,用报文ID、此用户的密钥(密码)和MD5算法对该随机报文进行加密,将生成的密文和被验证方自己的用户名发回验证方(Response)。
验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,若比较结果一致,认证通过,若比较结果不一致,认证失败。
验证方没有配置用户名的验证过程
验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge)。
被验证方接到验证方的验证请求后,利用报文ID、ppp chap password命令配置的CHAP密码和MD5算法对该随机报文进行加密,将生成的密文和自己的用户名发回验证方(Response)。
验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,若比较结果一致,认证通过,若比较结果不一致,认证失败。
CHAP与PAP验证过程对比
PAP认证中,口令以明文方式在链路上发送,完成PPP链路建立后,被验证方会不停地在链路上反复发送用户名和口令,直到身份验证过程结束,所以安全性不高。当实际应用过程中,对安全性要求不高时,可以采用PAP认证建立PPP连接。
CHAP认证中,验证协议为三次握手验证协议。它只在网络上传输用户名,而并不传输用户密码,因此安全性比PAP认证高。当实际应用过程中,对安全性要求较高时,可以采用CHAP认证建立PPP连接。
Network阶段(网络层协商阶段)
PPP完成了前面几个阶段,通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。每个NCP协议可在任何时间打开和关闭,当一个NCP的状态机变成Opened状态时,则PPP就可以开始在链路上承载网络层数据传输。
Terminate阶段(网络终止阶段)
PPP能在任何时候终止链路。当载波丢失、认证失败或管理员人为关闭链路等情况均会导致链路终止。
我操,理论终于讲(复制)完了,开始动手吧
PPP最重要的,华为、思科在考试或者面试中最喜欢考察的地方只有一个:NCP的工作、PAP或者CHAP的认证,下面我们来做做实验,实验top是这样的
地址规划您随意,为啥?因为NCP会自动协商,在上篇博文里面有说到,在以太网传输过程中,必须要封装源、目地址的MAC、双方IP,而PPP却不需要,来看看双方IP
see,R1、R2的互联IP地址是不相同的,在以太网情况下,想通信怎么办?没办法?答案是否定的,办法肯定有,各位想想以太网封装,只要有源目地址的MAC、有IP就能封装,跨三层需要路由支持,那么想想有办法了吗?自己动手做做吧!
而在PPP链路中,我们来看看NCP怎么工作的,我修改R1的串口地址为1.1.1.1后,看看发生了什么
看,IPCP协议看是工作,把本地地址的改动通告给对方,同时R2的路由表就发生了变化
so,u see,在PPP链路上,我们可以这样理解,PPP是点到点的连接,无所谓在以太网链路上的广播链路,所以,对于PPP链路上来说,我仅仅需要知道对方IP+出接口的形式就能完成通信,同时,我们可以看看PPP的封装
look,非常简洁,wirshark抓出来少了个字段,在标准的ppp帧内容应该还包含Information字段,所以你看,没有MAC的干扰,因为MAC就是以太网的概念,这是在之前学习NA阶段最大的困惑,PPP、FR、HDLC上面都是没有MAC的概念的。
同时,需要注意的是,作为路由器封装,既然是基于TCP\IP,那么IP是肯定需要的,但是仅仅有IP地址是不足以进行寻址的,比如以太网需要MAC、PPP需要接口、FR需要DLCI,这些都是方便物理层转发时找到所需接口的。
狗淫昂,来看看PPP的认证
首先要说明一点,华为和思科在实现PPP认证上有点点区别:当华为在接口下未配置用户名时,是不会封装任何用户名的,但思科会默认使用路由器名。在了解这个前提情况下,来继续下面的实验。
继续这个TOP,R1作为认证方、R2作为被认证方,分一下几个情况
华为:
1、认证方发送challenge时不携带用户名:
R1:
[R1]aaa
[R1-aaa]local-user HCIE password cipher HCIE
#
interface Serial1/0/0
link-protocol ppp
ppp authentication-mode chap
ip address 12.1.1.1 255.255.255.0
R2:
interface Serial1/0/1
link-protocol ppp
ppp chap user HCIE
ppp chap password simple HCIE
ip address 12.1.1.2 255.255.255.0
认证方方先发起一个挑战,并且携带一个随机数,被认证方收到后,讲携带自己接口下的用户名
look,在chap里面,password是被加密了的,有兴趣的童鞋可以看看pap,密码可是白彤彤的摆在那里,so,这就是为啥更多使用chap的原因,更安全!同时,这里演示的是单向认证
思科:
1、认证方发送challenge时不携带用户名:
R1
username CCIE password CCIE
interface Serial1/0
ip address 1.1.1.1 255.255.255.0
encapsulation ppp
serial restart-delay 0
ppp authentication chap
R2
interface Serial1/1
ip address 12.1.1.2 255.255.255.0
encapsulation ppp
serial restart-delay 0
ppp chap hostname CCIE
ppp chap password 0 CCIE
发现没有,思科设备在进行挑战时,就携带了R1的hostname,这个设定在单向认证时不会出现什么问题,毕竟单向认证,接口下肯定是需要配置用户名的,但是在双向认证的时候就不同了,双向认证时,是可以不在接口下配置用户名和密码的,于是,思科默认使用全局hostname来进行挑战,那么问题来了,比如R1使用了R1这个hostname进行挑战,而R2的全局用户名列表里面,没有R1这个用户名时,就会认证失败,当年CCIE V4 TS的一个坑点,坑了多少善良的孩子们。。。。这个我们后面做实验继续聊
2、认证方发送challenge时携带用户名密码,被认证方接口配置用户名密码
华为:
R1:
interface Serial1/0/0
link-protocol ppp
ppp authentication-mode chap
ppp chap user CCIE #注意此处配置用户名和对端发送用户名并不同
ip address 12.1.1.1 255.255.255.0
R2:
interface Serial1/0/1
link-protocol ppp
ppp chap user HCIE
ppp chap password simple HCIE
ip address 12.1.1.2 255.255.255.0
look,挑战方用上面用户名来挑战是OK的,无所谓,重要的是被挑战方发送过来的用户名,是否在挑战方的数据库中,所以,这里也可以验证下上面的实验,思科默认使用了hostname来进行挑战,为何也是OK的,因为用户名不会被添加到MD5计算范围内
用户名是没有被hash的。
这个top在思科方面是没有任何区别的,因为思科默认就是用hostname来进行挑战的。
3、认证方发送challenge时携带用户名密码,被认证方接口不配置密码
华为:
R1:
interface Serial1/0/0
link-protocol ppp
ppp authentication-mode chap
ppp chap user CCIE
ip address 12.1.1.1 255.255.255.0
R2:
interface Serial1/0/1
link-protocol ppp
ppp chap user HCIE
ip address 12.1.1.2 255.255.255.0
同时R2数据库中建立用户CCIE 密码 CCIE
[R2]aaa
[R2-aaa]local-user CCIE password cipher CCIE
挑战失败咯
思科:
在R2上配置R1默认使用的用户名
R2(config)#username R1 password CCIE
同时在R2接口下去掉CHAP密码
interface Serial1/1
ip address 12.1.1.2 255.255.255.0
encapsulation ppp
serial restart-delay 0
ppp chap hostname CCIE
end
look,认证成功,不知道有没有细心的同学看出点问题,为啥认证成功,不是因为思科和华为在协议实现上的细节,而是因为双方数据库里面配置的密码是相同的!R1数据库中配置的密码为CCIE,R2配置的密码也为CCIE,即使所使用的用户名为R1和CCIE,只要密码相同就行了,为啥?因为用户名不会被hash!用户名不会被hash!用户名不会被hash!重要的事情要说三遍!
最后的实验验证下上面的结论:
4、认证方发送challenge时携带用户名密码,被认证方接口不配置密码,同时配置数据库中CCIE密码和R1中HCIE用户密码相同
R1:
interface Serial1/0/0
link-protocol ppp
ppp authentication-mode chap
ppp chap user CCIE
ip address 12.1.1.1 255.255.255.0
R2:
interface Serial1/0/0
link-protocol ppp
ppp chap user HCIE
ip address 12.1.1.2 255.255.255.0
[R2]aaa
[R2-aaa]local-user CCIE password cipher HCIE
认证时成功的
so,总结下
1、优先使用接口配置的password与报文序列号进行MD5计算
2、如果认证方发送challenge接口如果配置了用户名,则被认证方首先使用接口用户名+password回应;如果没有配置password,则使用challenge信息中的用户名,比对数据库中的用户名,找到对应选项后,将该用户名下的password进行MD5计算,而后与接口配置的用户名一同发送给认证方。
3、认证方收到该消息后,首先查看用户名,比对数据库中的用户名,找到对应选项后,将该用户名下的password进行MD5计算,而后与接口收到的MD5进行对比,如果相同,则认证成功,如果不相同,则认证失败。
本文出自 “鲜血与荣耀!” 博客,请务必保留此出处http://65191212.blog.51cto.com/5376954/1739475
以上是关于微信第二层支付是啥的主要内容,如果未能解决你的问题,请参考以下文章