PPP协议、PPPoE协议、L2TP协议的关系
1. 简述
首先对这3中协议做一个简单的描述:
| 协议 | 协议类型 | 描述 |
|---|---|---|
| PPP | 点对点链路层协议 | 应用最广泛的点对点协议,可应用在多种网络,改善了SLIP协议的不足 |
| PPPoE | 点对点链路层协议 | 对PPP协议进行扩展,将PPP用于以太网上 |
| L2TP | 二层隧道协议 | 对PPP协议进行了扩展,可应用在多种网络中,主要将其PPP协议用于互联网上 |
所以,无论PPPoE还是L2TP, 他们都是对PPP协议进行了扩展(PPPoE协议使得PPP协议可以应用在以太网上;L2TP协议使得PPP协议数据在互联网上能够传输),这两个协议都具有PPP协议的各种安全特点:如认证,IP地址分配等。
这里可能引入一个问题:以太网和互联网不一样吗?
实际上真有区别:
- 以太网:更强调是一种局域网硬件技术,如果从网络方面说属于多点访问网络(通过MAC地址区分不同设备),即可以通过该硬件技术访问多个设备(终端、网站);
- 互联网:更强调一种设备相连的技术,将不同的设备互联的技术,互联后的设备统称为互联网。不过现在特指互联全球的大网络(Internet的意译)。
- 因特网:Internet的音译,它是互联网最典型的应用。
2. 对比分析
2.1 串行线路协议SLIP
在学习PPP协议的时候,经常绕不开SLIP协议的一些缺点和不足,如会遇到“PPP协议改善了SLIP协议的缺点”。因此这里不详细介绍SLIP协议内容,只做一个简单介绍,然后说明其协议的缺点和不足。
2.1.1 SLIP协议报文封装

1) IP数据报以一个称作END(0xc0)的特殊字符结束,一般数据报文的开始也有一个END(0xc0),两个END之间为真正的数据报文。
2) 如果IP报文中的某个字符为END, 那么需要连续传输两个字节0xdb和0xdc来代替它
3) 如果IP报文中的某个字符为SLIP中的ESC字符(0xdb),那么需要连续传输两个字节0xdb和0xdd来代替它。
2.1.2 SLIP协议的缺陷
- 在串行链路上对IP报文进行封装的点对点协议,这就要求发送报文的节点需要提前知道对端的IP地址,否则IP报文头部信息是不完整的,即使对端设备收到该报文,但是检测目的IP不是本端IP,协议栈会自动将该报文进行丢弃;
- 数据帧中没有类型字段(类似以太网中的类型字段)。如果一条串行线路使用SLIP协议,那么它就不能同时使用其他的协议, 只能封装IP报文;
- SLIP协议不存在差错检测机制,连最基本的校验和都不具备。
- SLIP协议对于一些交互报文(比较短的分组数据),通常需要封装IP头部和TCP头部40字节,这样导致小分组报文通讯效率很低,因此出现了压缩SLIP协议(CSLIP),它可以将IP头部和TCP头部压缩至3~5个字节。
2.2 点对点协议PPP
PPP协议是目前使用最为广泛的数据链路层协议,可以应用在多种网络中。
- PPP协议不提供数据加密功能,但是在认证用户时可以对用户密码进行加密。
2.2.1 PPP协议的特点
PPP协议修改了SLIP协议的所有缺陷:
- 具备动态分配IP地址的功能(在连接时刻通过NCP进行协商分配的);
- 报文中添加了协议字段,支持同一链路上使用不同协议进行通信;
- 提供差错检验机制(计算FCS校验和)
- 报文压缩
新增功能: - 提供了认证、授权以及监控计费功能
- 允许链路层参数协商,用来建立、维护、测试链路状态(LAC模块)
- 允许网络层参数协商,决定网络层采用的协议(NCP模块)
运营商比较钟情于PPP协议,有个很重要的原因便是PPP协议支持认证的功能,认证功能简单的说就是对用户名和密码进行验证,认证之后可以对特定的用户上网流量进行计费。
2.2.2 PPP协议格式

2.3 PPPoE协议
PPPoE协议是以太网上的点对点协议,是将PPP协议封装在以太网框架中的一种网络隧道协议
2.3.1 PPPoE协议特点
PPPoE协议的目的是为了将以太网的易扩展性和PPP协议的认证、计费、成熟安全(此安全并非加密,而是技术很成熟)等优势相结合,它通过将PPP协议进行PPPoE封装,使其可以应用在以太网上,实现了传统以太网不能提供的身份认证、加密以及压缩等功能。
它可以通过数字用户线(DSL)和调制解调器(modem)给用户提供互联网接入功能,这可以极大的利用现存的通信基础设施(如电话线,光纤等),同时还可以进行认证和计费,因此得到极大的应用。

2.3.2 PPPoE协议格式和阶段


2.4 链路层隧道协议L2TP
2.4.1 L2TP简介
L2TP协议也是对PPP协议的扩展,或者说是基于PPP协议。它为在非点对点的网络上(如以太网)建立点对点的PPP会话连接,协议本地不提供加密功能,如果需要加密需要结合IPsec,但提供认证功能(PPP协议提供的特性)。它可以扩展PPP模型(允许二层链路端点和PPP会话点驻留在不同设备上),如果在以太网上则扩展了PPPoE的连接范围。最常见用途是公司分支机构或出差人员通过公网访问总部公司内部网络,如下图所示:
本来用户通过PPPoE拨号将PPP会话连接到运营商的RouterA(NAS)上,现在使用L2TP隧道技术可以将PPP会话端点延伸到公司总部的RouterB上,从而实现访问公司内网的功能。
2.4.2 L2TP报文格式


3. 总结
- PPP:可以应用在多种网络,提供认证、计费等功能
- PPPoE: 将PPP协议应用在以太网上,可以充分利用其认证和计费功能,方便运营商收取费用
- L2TP: 提供一种带认证的隧道技术,将PPP会话的端点扩展至互联网上的其他网络中。
PPP协议、PPPoE协议、L2TP协议的关系的更多相关文章
- L2TP协议简介
传送门:L2TP代码实现 1. L2TP 概述 L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是 VPDN(Virtual Private Dial-up Networ ...
- L2tp协议简单解析
1.L2TP简介 L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是VPDN(Virtual PrivateDial-up Network,虚拟私有拨号网)隧道协议的一种 ...
- L2TP协议
L2TP协议 L2TP(Layer 2 Tunneling Protocol) 第二层隧道协议.该协议是工业标准的Internet隧道协议. L2TP实现的两种方式 LAC (L2TP Access ...
- VPN 隧道协议PPTP、L2TP、IPSec和SSLVPN的区别
最近软矿频繁地介绍了各种VPN,有免费的PacketiX.NET和Hotspot Shield,有付费的Astrill VPN,iVPN和PureVPN.在介绍这些VPN的时候,常常会说到PPTP.L ...
- http协议,tcp协议,ip协议,dns服务之前的关系和区别
长期以来都有一个问题,大家都在说http协议,tcp协议,ip协议,他们之间到底什么区别,有什么用,没人告诉我,最近看了这本<图解http>明白了一些,以下图片摘自这本书 一.理解一个传输 ...
- 两张图说明http协议,tcp协议,ip协议,dns服务之间的关系和区别
一.理解一个传输流再去扩展 用http举例来说,首先作为发送端的客户端在应用层(http协议)发出一个想看某个web页面的http请求. 接着,为了传输方便,在传输层(tcp协议)把从应用层处收到的数 ...
- OSPF协议原理及配置3-邻居关系的建立
OSPF协议原理及配置3-邻居关系的建立 OSPF协议的邻居关系是通过交换Hello报文建立的,所以我们先对OSPF的报文的种类,及Hello报文的结构做一了解. 1 OSPF协议有5种协议报文( ...
- OSPF协议原理及配置4-邻接关系的建立和LSDB同步
OSPF协议原理及配置4-邻接关系的建立和LSDB同步 进入ExStart状态后,广播和NBMA型网络要等待4倍的Hello时间,确定DR和BDR.然后建立邻接关系,并交互链路状态通告,以使用LS ...
- TCP协议总结--停止等待协议,连续ARQ协议,滑动窗口协议
前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 先来看看我的问题: 这是用tcp ...
随机推荐
- cs派生msf shell
msf5 > use exploit/multi/handler [*] Using configured payload windows/meterpreter/reverse_http ms ...
- 深入理解jvm-2Edition-Java内存区域
1.运行时数据区域 Java虚拟机会将内存区域划分为几个区域,每个区域储存不同类型的数据或承担不同的功能. PC,堆-Java堆,栈-虚拟机栈.本地方法栈,方法区.直接内存. 当类被实例化或stati ...
- Java Swing 盒布局管理器
Swing 盒布局管理器 因为项目的原因,重新看看swing的东西,在想要将两个横向的容器纵向表示的时候,发现用盒布局 话不多说,直接代码 package ui; import javax.swing ...
- SQL 练习19
统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] SELECT Course.CId,Course.Cname ,t.[0-60],t.[6 ...
- SpringBoot监听redis订阅监听和发布订阅
前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...
- Json 文件 : 出现 Expected value at 1:0 问题的解决
只要找一个json在线解析,验证你的json文件格式的正确性,错误可以忽略. 如要消除红叉,关闭Json Validation即可,如下操作:
- 六:使用Cookie进行会话管理
1.存储客户端的状态 因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器 记住客户端状态 2.会话技术 ...
- Linux下用gdb 调试、查看代码堆栈
Linux中用gdb 查看代码堆栈的信息 core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的. 调试的话输入: gd ...
- git cherry-pick 教程
转自:http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html 对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求. 这时分两 ...
- mzy对于反射的复习
反射其实就是指在超脱规则的束缚,从强引用到弱相关,在上帝视角做事情,对于写配置文件,和一些框架的源码,得到调用上至关重要,java带有解释器的语法特性,使得泛型一类的语法糖和反射配合之后更如鱼得水! ...