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 ...
随机推荐
- 百度地图API基本使用(一)
本文系作者 chaoCode原创,转载请私信并在文章开头附带作者和原文地址链接. 违者,作者保留追究权利. 前言 由于最近项目有需要,所以最近开始研究百度地图API的使用,简单的介绍一下百度地图Jav ...
- 如何区别php,jsp,asp,aspx随笔
PHP是一种跨平台的服务器端的嵌入式脚本语言.它大量地借用C.Java 和 Perl 语言的语法,并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面.它支持目前绝大多数数据库.还有一点, ...
- PHP-Audit-Labs-Day1 - in_array函数缺陷
函数缺陷原理分析 先看一段简单的源代码 class Challenge{ const UPLOAD_DIRECTORY = './solutions/'; private $file; private ...
- Linux 内核的代码仓库太不一样了,光克隆都让我挠头,克隆后居然还丢文件,你肯定也会遇到!!!
一个肯定能让你节省几个小时的小知识 大家好,我是 小猿来也,一个人称撸(划)码(水)小能手的程序猿. 最近一段时间,每次经过旁边大佬工位,总是发现他在快速的切屏,不知道在搞什么?难道他发现了快乐星球? ...
- JavaGUI输入框事件监听的使用
JavaGUI输入框事件监听的使用 package GUI; import java.awt.*; import java.awt.event.ActionEvent; import java.awt ...
- 修改Linux系统的默认语言编码集
RedHat 今天晚上发现服务器上vi的界面提示变成了乱码,只能将XShell的编码改为GBK才能正常显示,导致consolas字体无法使用,GBK编码下的字体丑陋无比,无法忍受,一轮google之后 ...
- char、signed char、unsigned char的区别总结。
转载地址:http://hi.baidu.com/thewillreigns/blog/item/67e665c4296e69c038db492d.html char 和 unsigned char是 ...
- Python语言系列-06-面向对象1
楔子 #!/usr/bin/env python3 # author:Alnk(李成果) # 人狗大战例子引入面向对象 # 版本1 def hero(name, sex, hp, ce, level= ...
- 【MySQL】自定义数据库连接池和开源数据库连接池的使用
数据库连接池的概念 数据库连接背景 数据库连接是一种关键的.有限的.昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性 ...
- NOIP 模拟 $25\; \rm string$
题解 \(by\;zj\varphi\) 考虑对于母串的每个字符,它在匹配串中有多少前缀,多少后缀. 设 \(f_i\) 表示 \(i\) 位置匹配上的前缀,\(g_i\) 为后缀,那么答案为 \(\ ...