问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PPP & PPPoE & L2TP & PPTP 一文全介绍

创作时间:
作者:
@小白创作中心

PPP & PPPoE & L2TP & PPTP 一文全介绍

引用
CSDN
1.
https://blog.csdn.net/qingwangheni/article/details/135395231

PPP(Point-to-Point Protocol)、PPPoE(PPP over Ethernet)、PPTP(Point-to-Point Tunneling Protocol)和L2TP(Layer 2 Tunneling Protocol)是网络通信中常用的几种协议。本文将详细介绍这些协议的工作原理、帧格式、报文流程等内容,帮助读者全面了解它们的特点和应用场景。

PPP

1.1 PPP 介绍

PPP协议:

  • 点到点链路数据链路层协议,在SLIP(Serial Line Internet Protocol)基础上发展起来。
  • 可提供用户验证,易扩充,支持全双工同步异步通信。

SLIP:

  • 只支持异步传输、不支持协商(不能协商双方IP地址等网络层属性)、只能承载IP报文等缺陷。SLIP逐步被PPP替代。

PPP可在串行通信线路上传输多种网络层协议,如IP、IPX、AppleTalk。

PPP既支持同步又支持异步,而X.25、FR(Frame Relay)等链路层仅支持同步,SLIP仅支持异步。

点到点直接连接是简单的广域网连接形式,如PPP。

PPP有良好扩展性,如需在以太网上承载PPP协议时,可扩展为PPPoE。

PPP包含:

  1. LCP(Link Control Protocol)协议:
  • 建立、拆除和监控PPP数据链路。
  1. NCP(Network Control Protocol)协议:
  • 协商网络层格式与类型。
  1. CHAP 和 PAP:
  • CHAP:(Challenge-Handshake Authentication Protocol)。
  • PAP:(Password Authentication Protocol)。

1.2 PPP 帧格式

Flag域:

  • 标识一个物理帧的起始和结束,该字节为0x7E。

Address域:

  • 唯一标识对端,点对点链路无须对方链路层地址,0xFF即可。

Control域:

  • 默认为0x03,表明为无序号帧,PPP默认不采用Seq和ACK来实现可靠传输。

Address和Control域一起标识此报文为PPP报文,即PPP报头为FF03。

Protocol域:标识信息域中数据包类型:

  • 0x0021 IP
  • 0xC021 LCP
  • 0x8021 NCP
  • 0xC023 PAP
  • 0xC025 LQR
  • 0xC223 CHAP

Information域:

  • 最大长度MRU默认1500字节,可实际协商。长度不够可填充。

FCS域:

  • 校验。

链路建立过程:
PPP链路建立过程:

  1. Establish阶段:LCP协商
  • 协商内容:SP(Single-link PPP)还是MP(Multilink PPP)、MRU、认证方式、魔术字等选项。
  • LCP协商成功后进入Opened状态,表示底层链路建立。
  1. Authenticate阶段:CHAP或PAP验证,成功后为SUCCESS状态。

  2. Network阶段:NCP协商

  • IPCP(IP Control Protocol)、MPLSCP(MPLS Control Protocol)
  • IPCP会协商双方IP
  • NCP协商后,链路建立成功。

运行过程中,可能随时中断连接,物理链路断开、认证失败、超时等都可能导致链路进入Terminate阶段。

Terminate阶段,所有资源被释放,通信双方回到Dead。

1.3 LCP

LCP报文:

  • Code域:即编码,标识LCP报文类型
  • 0x01 Configure-Request
  • 0x02 Configure-Ack
  • 0x03 Configure-Nak
  • 0x04 Configure-Reject
  • 0x05 Terminate-Request
  • 0x06 Terminate-Ack
  • 0x07 Code-Reject
  • 0x08 Protocol-Reject
  • 0x09 Echo-Request
  • 0x0A Echo-Reply
  • 0x0B Discard-Request

Identifier:即ID,

  • 用来匹配请求和响应。
  • 请求报文的ID从0x01递增。

Length:

  • 即长度,Data域总长度,即Type、Length和Data总长度。

Data字段:

  • 即LCP数据段。
  • type:报文类型
  • 0x01 MRU 最主要
  • 0x02 Async-Control-Character-Map
  • 0x03 Authentication-Protocol (身份验证PAP or CHAP,若无认证则不包含该type)
  • 0x04 Quality-Protocol(协商使用链路检测的方法)
  • 0x05 Magic-Number (防止环路)
  • 0x06 RESERVED
  • 0x07 Protocol-Field-Compression(PPP协议字段的压缩协商)
  • 0x08 Address-and-Control-Field-Compression(链路层地址和控制字段的压缩协商)

Configure-Request:

  • 没收到Configure回复时,每隔3秒重传一次Configure-Request,最多10次。
  • 对应响应有:
  • Configure-Ack:表示协商成功。
  • Configure-Nak:表示参数不能接受,其中只包含不能识别的参数列表。
  • Configure-Reject:表示参数不能识别,其中只包含不能识别的参数列表。

Echo-Request、Echo-Reply:

  • 定期发送,用于链路状态检测。

Terminate-Request,Terminate-Ack:

  • 链路关闭。

1.4 认证

LCP协商有两种:

  1. PAP认证:
  • 使用PAP authenticate-request、PAP authenticate-ack报文协商。
  • PAP authenticate-request包含明文用户名和密码。
  1. CHAP认证:
  • 服务器发送CHAP challenge报文,包含ID值及一个随机字符串。
  • 客户端根据hash得到字符串,并在CHAP Response中回复。
  • 服务器hash计算后CHAP Response中hash比较。若一致回复success,否则回复failure。

1.5 NCP

协商IPCP协议, 包括IP地址。

PPPoE

2.1 介绍

PPPoE:主要利用了PPP协议中的访问控制和计费功能。

以太网具有广播属性,通信双方无法验证对方身份,因而通信不安全。PPPoE通过Session ID保障用户安全。

2.2 拓扑

ADSL 和FTTH(光纤到户)的拨号都使用PPPoE协议。

PPPoE不使用ARP,可防止ARP攻击。

2.3 报文格式

PPPoE报文格式:

  1. 以太网头:
  • 目标MAC。
  • 源MAC。
  • 类型:
  • 标识PPPoE报文类型,0x8863(发现阶段),0x8864(PPP会话阶段)。
  1. PPPoE头部:
  • Ver(4 bits): PPPoE协议版本号,值为0x1。
  • Type(4 bits): PPPoE帧类型,值为0x1。
  • Code(1字节): PPPoE报文具体类型。
  • 0x00:会话数据。
  • 0x07:PADO或PADT。
  • 0x09:PADI。
  • 0x19:PADR。
  • 0x65:PADS。
  • Session ID(2字节):标识PPPoE会话,由服务器分配。实际会话ID还结合源目MAC。
  • Length(2字节): PPPoE的Payload长度,不包括以太网头和PPPoE头。
  1. PPP帧:
  • PPP帧被封装在PPPoE报文中,包括:标志字节、地址字节、控制字节、协议字节、信息字段和校验字段等。

2.4 报文流程

发现阶段
Client广播PADI(PPPoE Active Discovery Initiation)。
Server 回应 PADO(PPPoE Active Discovery Offer),包含Access Concentrator Name Tag。
Client 选定合适 Server,并单播回复 PADR(PPPoE Active Discovery Request)。
Server 回复 PADS(PPPoE Active Discovery Session-confirmation),其中包含唯一会话ID
四个报文都包含server name Tag。

2.5 PPP会话阶段

PPPoE Client 和 PPPoE Server 通常在同一局域网。

2.6 BCP

即PPP Bridging Control Protocol,基于PPP链路,桥接双方子网。

BCP 属于 PPP 协议中 LCP 链路配置协商参数。可结合 PPTP 或 L2TP 使用实现大二层组网。

为实现L2TP+BCP,需要的应用:

  • xl2tpd + pppd
  • openl2tp + pppd
  • 还可以 L2TP + BCP + IPsec。

ESP 协议属于 IPsec。

PPTP

PPTP(点对点隧道协议)由微软、3Com等联合开发。

最大特点:

  • 配置简单(只需用户名,密码,服务器IP)。
  • 安全性不如IPSec。

PPTP 是在 PPP 基础上开发增强型安全协议,PPTP 使用用户级 PPP 身份验证,用于 Microsoft 点对点加密 (MPPE)的数据加密。

配置界面

3.1 工作原理

PPTP第一步是建立TCP连接,该TCP连接只用于PPTP控制报文,负责链路控制。而后续数据包不用TCP连接,以PPP协议封装,然后在IP协议上传输。

PAC: 即 PPTP Access Concentrator, PPTP网络集中器。客户端。

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

PPTP 报文分为:

  1. PPTP控制报文:
  • 用于创建、维护、终止PPTP连接。
  1. PPTP数据报文:
  • 用来传送PPP数据包,PPP数据包封装在GRE中。

3.2 报文格式

控制报文和数据报文格式不同。

3.2.1 控制报文

需提前建立TCP连接。

3.2.2 数据报文

PPPoE可算是隧道,PPPoE头类似GRE头。

对于数据报文, Server和Client都使用到两个IP。

  • 一个公网IP,用于连接Internet。
  • 另一个是PPTP 拨号分配的内网IP。

Server 可手动配置的内网 IP,而 Client 的内网地址是从 Server 获取的。

PPP Compressed Datagram 中又包含 IP TCP 应用层数据。

3.3 报文流程

  1. Client向Server的1723端口建立TCP连接。

  2. PPTP链路控制:

  • 2.1 Client 发送 Start Control Connection Request。
  • 2.2 Server 回复 Start Control Connection Reply。
  • 2.3 Client 发送 Outgoing Call Request。创建隧道,包含一个客户端到服务器方向的发送数据的PPTP隧道ID
  • 2.4 Server 回复 Outgoing Call Reply。隧道创建成功。包含一个从服务器到客户端方向的发送数据的PPTP隧道ID。
  • 2.5 Client 发送Set-Link-Info:包含协商PPP选项。
  1. 隧道数据传输
    PPTP 隧道建立后,就可在客户机与服务器之间传送 PPP 数据。

PPTP发送数据包封装过程:

  1. 应用层数据封装成IP包。
  2. 将IP包发送到VPN虚拟接口。
  3. VPN虚拟接口将IP数据包压缩和加密(可选),并添加PPP头。
  4. VPN虚拟接口将PPP帧发送给PPTP驱动。
  5. PPTP驱动在PPP帧外加GRE头。
  6. PPTP驱动将GRE头提交给TCP/IP协议栈。
  7. TCP/IP协议栈为GRE添加IP头。
  8. 最后为IP包进行数据链路层封装,并通过物理网卡发出。

收包解封装过程:

3.4 实现

  1. 加载相关模块:
  • modprobe pptp.ko
  • modprobe ppp_mppe.ko
  1. 运行进程:
  • pppd nodetach nodefaultroute lock usepeerdns user $pptp_user password $pptp_pass
  • plugin pptp.so pptp_server $pptp_srv_ip file /tmp/options.pptp nobcp &

其中 /tmp/options.pptp 内容为:

  • noipdefault
  • noauth
  • nobsdcomp
  • nodeflate
  • novj
  • novjccomp
  • noaccomp
  • maxfail 0
  • mtu 1414
  • mru 1414
  • +mppe-128 or nomppe-stateful # 表示是否加密。

L2TP

4.1 介绍

L2TP(Layer Two Tunneling Protocol):二层隧道协议,扩展了PPP。

适用于用户远程拨号接入企业总部。

LAC(L2TP Access Concentrator):
L2TP 访问集中器,即L2TP客户端。

LNS(L2TP Network Server):
L2TP 网络服务器,即L2TP服务器。

VPDN:基于拨号网络的VPN,如:

  • PPTP L2F L2TP

L2TP 集合PPTP和L2F优点。

4.2 典型组网

远端系统 = dial clients = 企业分支

LAC:L2TP Access Concentrato

三种应用场景:

  1. 拨号用户访问企业内网:
  • 用于用户不经常访问企业总部时,LAC检测用户下线,自动拆除隧道。
  • 需要用于自己登录L2TP账户密码。
  1. LAC自动拨号
  • LAC 与 LNS 间建立一条永久性 L2TP 会话,无需用户 PPP 拨号,只需 IP 连接即可。
  1. 移动办公用户访问企业内网
  • 由用户发起 L2TP 连接。

4.3 配置界面

BCP:

  • 属于PPP协议中LCP链路配置协商参数。
  • 用于在PPP连接的两端协商和管理网络桥接,如配置、状态和参数。
  • 通知对端设备是否启用桥接、桥接的类型、桥接端口等信息。

4.4 数据格式

层二 VPN:可用L2TP + BCP。
报文头格式:ETH + IP + UDP + L2TP + (PPP+BCP) + ETH + IP

层三VPN:不使能PPP的BCP协议。
报文头格式:ETH + IP + UDP + L2TP + PPP + IP

4.5 控制通道和数据通道

在一对 LAC和 LNS 间可建立多条 L2TP 隧道。每个L2TP隧道连接包括:一个控制连接和多个会话连接。

控制通道:隧道的建立、维护和关闭。

数据通道:用于传输用户数据。

L2TP报头包含Tunnel ID和Session ID信息,用来标识不同的隧道和会话。

隧道标识与会话标识是由对端分配,只对接收端有意义,对发送端没有意义。

隧道建立过程:

  • SCCRQ(Start-Control-Connection-Request):
  • 一般由LAC向LNS发起请求。
  • SCCRQ(Start-Control-Connection-Reply):
  • 表示接受对端连接请求。
  • SCCCN(Start-Control-Connection-Connected):
  • 表示隧道建立完成。

会话建立过程:

  • ICRQ(Incoming-Call-Request):
  • 当LAC检测到拨号时,向LNS发送ICRQ,请求在隧道中建立一个会话。
  • ICRP(Incoming-Call-Reply):
  • 表示ICRQ成功,LNS会在ICRP中标识L2TP会话必要参数。
  • ICCN(Incoming-Call-Connected):
  • 表示L2TP会话建立完成。

4.6 PPTP 和 L2TP 比较

PPTP 要求为IP网络。

L2TP 要求面向数据包的点对点连接(支持IP、ATM、帧中继、X.25等网络)。

PPTP只支持单一隧道。

L2TP支持多隧道。

PPTP不支持包头压缩、隧道验证。

L2TP支持包头压缩、隧道验证。

PPTP包头占6个字节。

L2TP压缩包头占4个字节。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号