# 广域网

### 广域网概念

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-2824390d94902f74858d1636ca4c095e2566dbbc%2F%E5%B9%BF%E5%9F%9F%E7%BD%91.png?alt=media)

相距较远的局域网通过路由器与广域网相连接组成一个覆盖范围很广的互联网

### 广域网技术

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-d4ed93510c1628165715f0a667f5b73e74133eec%2F%E5%B9%BF%E5%9F%9F%E7%BD%91%E6%8A%80%E6%9C%AF.png?alt=media)

### PPP协议（点对点协议）

点对点协议（Point-to-Point Protocl, PPP）是因特网上广泛使用的数据链路层协议，用于点对点的链路

PPP设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据。用户使用拨号电话线接入因特网时，一般都是使用PPP协议（PPPOE）

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-5a08924ec0926d88b52ab32e2bfefa9ae46a2485%2FPPP.png?alt=media)

**PPP协议有三个组成部分**

* 一个将IP数据报封装到串行链路的方法
* 链路控制协议 LCP (Link Control Protocol)
* 网络控制协议 NCP (Network Control Protocol)

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-0b1da1ab82a3246c365280ce88d24618c3200d37%2FPPP%E7%BB%84%E6%88%90%E9%83%A8%E5%88%86.png?alt=media)

**PPP协议如何实现数据包的封装**

* 标志字段：表示帧的开始和结束
* 地址字段：由于PPP协议用于点对点通信，不存在寻址的问题
* 控制字段：PPP协议不提供数据传输的可靠性，同时也没有流量控制和差错控制的功能
* 协议字段：PPP帧内可以封装多个协议的数据包，当封装某个协议的数据包时，就填写这个协议的编号
* FCS：帧校验字段，PPP采用CRC校验

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-7f5ab2111ec7830a26f4adb3b0e11942f125b272%2FPPP%E6%95%B0%E6%8D%AE%E5%8C%85%E5%B0%81%E8%A3%85.png?alt=media)

####

#### LCP协议

链路控制协议，数据链路的建立、配置、维护和终止都是由链路控制协议（LCP）来完成的，LCP包封装在PPP帧的数据字段中

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-4cf8115b312aa9b14c4243cf67f1ffcdc26ab3b8%2FLCP.png?alt=media)

#### 认证协议

* 口令认证协议（PAP）：非常简单，用户向系统发送用户名和口令，系统验证用户名和口令，如果正确就接收连接，否则就拒绝连接。认证是通过两次握手实现的
* 挑战握手协议（CHAP）：对PAP协议做了改进，不直接发送用户的密码。取代密码的是hash（哈希值）
  * 首先向用户发送一个CHAP包，数据部分包含一个随机数
  * 用户收到后，使用实现定义好的函数作用于随机数和自己的口令，生产一个值，将这个值和用户名放入CHAP包发给系统
  * 系统收到后，根据其中的用户名查到对应的口令，用同一个函数对查到的口令和查问值进行运算，如果计算结果与用户的值相同，说明是合法用户并且口令正确

#### NCP协议（网络控制协议）

* PPP使用网络控制协议（NCP）来建立两端网络层的连接，协商网络层的选项和传递网络层数据。NCP不是一个协议，而是一组协议，包括IPCP、IP、IPX等
* 互联网协议控制协议（IPCP）主要用来协商网络层选项，设置用户的IP地址。报文在PPP帧中封装

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-a054218ed26e070d32b5aee56d76e3382043fa1d%2FNCP.png?alt=media)

#### PPP协议工作过程

![](https://2457808883-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRxJcEoJGnxpkBfWvFRPw%2Fuploads%2Fgit-blob-983e8348b060b6a83e51d42f639bc1f61e93541f%2FPPP%E5%8D%8F%E8%AE%AE%E5%B7%A5%E4%BD%9C%E8%BF%87%E7%A8%8B.png?alt=media)
