【有书共读08】《计算机网络》读书笔记08
对于点对点的链路,简单的多的点对点协议PPP是目前使用最广泛的数据链路层协议。
一.PPP协议的特点:
PPP协议是用户计算机和ISP进通信时所使用的数据链路层协议。

二.PPP协议应满足的需求:
IETF认为,在设计PPP协议时必须考虑一下多方面的需求。
1.简单 IETF在设计因特网团体系结构时把其中最复杂的部分放在TCP协议中,而网际协议IP则相对比较简单,他提供的是不可靠的数据报服务。
在这种情况下,数据链路层没有必要提供比IP协议更多的功能。因此,对数据链路层帧,不需要纠错,不需要序号,也不需要流量控制。IETF把简单作为首要
的需求。
简单的设计还使协议在实现时不容易出错,从而使不同厂商在协议的不同实现上其互操作性提高了。我们知道,协议标准化的一个主要目的就是提高了协议的
互操作性。
总之,这种数据链路层的协议非常简单:接收方每收到一个帧,就进行CRC检验。如CRC检验正确,就收下这个帧反之丢弃这个帧,什么都不做。
2.封装成帧 PPP协议必须规定特殊字符作为帧定界符,以便使接收端从收到的比特流中能准确的找出帧的开始和结束位置。
3.透明性 PPP协议必须保证数据传输的透明性。这就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题
4.多种网络层协议
PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(IP和IPX等)的运行。
当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所链接的局域网或路由器上运行的各种网络层协议。
5.多种类型链路
除了要支持多种网络层的协议外,PPP还必须能够在多种链路上运行。
串行的(一次只发送一个比特)
并行的(一次并行地发送多个比特)
同步或异步、低速或高速的、电的或光的、交换的(动态的)或非交换的(静态的)点对点链路。
6.差错检测
PPP协议必须能够对接收端收到的帧进行检测,并舍弃有差错的帧。
7.检测连接状态
必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。
出现故障的链路隔了段时间后重新正常工作时,就特别需要这种及时检测功能。
8.最大传送单元
协议对每一种类型的点对点链路设置最大传送单元MTU(最大接受单元,至少是1500字节)的标准默认值。
MTU是数据链路层的帧可以载荷的数据部分的最大长度,不是帧的总长度。
9.网络层地址协商
协议必须提供一种机制使通信的两个网络层(如两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能在所有的情况下得出协商结果。
10.数据压缩协商
协议必须能够提供方法来协商使用数据压缩算法。但PPP协议不要求将数据压缩算法进行标准化。
2.PPP协议不需要的功能
1.纠错
在TCP/IP协议族中,可靠传输由运输层的TCP协议负责,而数据链路层的PPP协议只进行检错。
因此,PPP是不可靠的。
2.流量控制
在TCP/IP协议族中,端到端的流量控制由TCP负责,因而PPP就不再重复进行流量控制。
3.序号
PPP是不可靠传输协议,不需要使用帧的序号
4.多点线路
不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而支持点对点的链路通信。
5.半双工或单工链路
PPP只支持全双工链路
三.PPP协议的组成
三个组成部分:
1.一个将IP数据报封装到串行链路的方法。
2.一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)。通信的双方可协商一些选项。在RFC1661中定义了11种类型的LCP分组。
3.一套网络控制协议NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及AppleTalk等。
PPP协议的帧格式
1.字段意义
首部中的地址字段A规定为0xFF,控制字段C规定为0x03,这两个字段最初考虑对值进行其他定义,至今也没给出。所以实际上并没有携带PPP帧的信息。
首部的第一个字段和尾部的第二个字段都是标识字段F(Flag)。
首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息部分字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而 0x8021表示这是网络层的控制数据。
信息字段的长度是可变的,不超过1500字节。
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。

2.字节填充
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
PPP异步传输时:它把转义符定义为0x7D,并使用字节填充,RFC 1662规定如下的填充方法:
(1)把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7E,0x5E)
(2)若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成2字节序列(0x7d,0x5d);
(3)若信息字段中出现ASCII码的控制字符(即数值小于0x20)的字符,则在该字节前要加入一个0x7D字节,同时将该字符的编码加以改变。
3.零比特填充
PPP协议用在SONET/SDH链路时,是使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,ppp协议采用零比特填充方法来实现透明传输。


#读书笔记##笔记#
一.PPP协议的特点:
PPP协议是用户计算机和ISP进通信时所使用的数据链路层协议。
二.PPP协议应满足的需求:
IETF认为,在设计PPP协议时必须考虑一下多方面的需求。
1.简单 IETF在设计因特网团体系结构时把其中最复杂的部分放在TCP协议中,而网际协议IP则相对比较简单,他提供的是不可靠的数据报服务。
在这种情况下,数据链路层没有必要提供比IP协议更多的功能。因此,对数据链路层帧,不需要纠错,不需要序号,也不需要流量控制。IETF把简单作为首要
的需求。
简单的设计还使协议在实现时不容易出错,从而使不同厂商在协议的不同实现上其互操作性提高了。我们知道,协议标准化的一个主要目的就是提高了协议的
互操作性。
总之,这种数据链路层的协议非常简单:接收方每收到一个帧,就进行CRC检验。如CRC检验正确,就收下这个帧反之丢弃这个帧,什么都不做。
2.封装成帧 PPP协议必须规定特殊字符作为帧定界符,以便使接收端从收到的比特流中能准确的找出帧的开始和结束位置。
3.透明性 PPP协议必须保证数据传输的透明性。这就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题
4.多种网络层协议
PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(IP和IPX等)的运行。
当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所链接的局域网或路由器上运行的各种网络层协议。
5.多种类型链路
除了要支持多种网络层的协议外,PPP还必须能够在多种链路上运行。
串行的(一次只发送一个比特)
并行的(一次并行地发送多个比特)
同步或异步、低速或高速的、电的或光的、交换的(动态的)或非交换的(静态的)点对点链路。
6.差错检测
PPP协议必须能够对接收端收到的帧进行检测,并舍弃有差错的帧。
7.检测连接状态
必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。
出现故障的链路隔了段时间后重新正常工作时,就特别需要这种及时检测功能。
8.最大传送单元
协议对每一种类型的点对点链路设置最大传送单元MTU(最大接受单元,至少是1500字节)的标准默认值。
MTU是数据链路层的帧可以载荷的数据部分的最大长度,不是帧的总长度。
9.网络层地址协商
协议必须提供一种机制使通信的两个网络层(如两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能在所有的情况下得出协商结果。
10.数据压缩协商
协议必须能够提供方法来协商使用数据压缩算法。但PPP协议不要求将数据压缩算法进行标准化。
2.PPP协议不需要的功能
1.纠错
在TCP/IP协议族中,可靠传输由运输层的TCP协议负责,而数据链路层的PPP协议只进行检错。
因此,PPP是不可靠的。
2.流量控制
在TCP/IP协议族中,端到端的流量控制由TCP负责,因而PPP就不再重复进行流量控制。
3.序号
PPP是不可靠传输协议,不需要使用帧的序号
4.多点线路
不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而支持点对点的链路通信。
5.半双工或单工链路
PPP只支持全双工链路
三.PPP协议的组成
三个组成部分:
1.一个将IP数据报封装到串行链路的方法。
2.一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)。通信的双方可协商一些选项。在RFC1661中定义了11种类型的LCP分组。
3.一套网络控制协议NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及AppleTalk等。
PPP协议的帧格式
1.字段意义
首部中的地址字段A规定为0xFF,控制字段C规定为0x03,这两个字段最初考虑对值进行其他定义,至今也没给出。所以实际上并没有携带PPP帧的信息。
首部的第一个字段和尾部的第二个字段都是标识字段F(Flag)。
首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息部分字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而 0x8021表示这是网络层的控制数据。
信息字段的长度是可变的,不超过1500字节。
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。
2.字节填充
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
PPP异步传输时:它把转义符定义为0x7D,并使用字节填充,RFC 1662规定如下的填充方法:
(1)把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7E,0x5E)
(2)若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成2字节序列(0x7d,0x5d);
(3)若信息字段中出现ASCII码的控制字符(即数值小于0x20)的字符,则在该字节前要加入一个0x7D字节,同时将该字符的编码加以改变。
3.零比特填充
PPP协议用在SONET/SDH链路时,是使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,ppp协议采用零比特填充方法来实现透明传输。
只要发现有5个连续1,则立即填入一个0。
PPP协议的工作状态
PPP链路的起始状态和终止状态永远是图3-21中的链路禁止状态,这时用户PC和ISP的路由器之间并不存在物理层的连接。
当用户PC通过调制解调器呼叫路由器时,路由器就能够检测到调制解调器发出的载波信号。在双方建立了物理层连接之后,PPP就进入了链路建立状态,其目的是建立链路层的
LCP连接。
这时LCP开始协商一些配置选项,即发送 LCP的配置请求帧。这是个PPP帧,其协议字段置为LCP对应的代码,而信息字段包含特定配置请求。链路的另一端可以发送以下响应的一种:
1.配置确认帧:所有选项都接受。
2.配置否认帧:所有选项都理解但不能接受。
3.配置拒绝帧:选项有的无法识别或者不能接受,需要帮助。
PPP协议的状态图
LCP配管选项包括链路上的最大帧长,所使用的鉴别协的规
约(如果有的话),以及不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定
的,没有任何信息量,可以在PPP帧的首部中省略这两个字节)。
协商结束后双方就建立了LCP链路,接着就进入“鉴别”(Authenicate)状态。在这一状态,
只允许传送LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。若使用口
令鉴别协议PAP (Password Authentication Protocol), 则需要发起通信的方发送身份标识符
和口令。系统可允许用户重试若干次。如果需要有更好的安全性,则可使用更加复杂的口令
握手鉴别协议CHAP (Challenge-Handshake Authentication Protocol)。 若鉴别身份失败,则转
到“链路终止”(Link Terminate)状态。 若鉴别成功,则进入“网络层协议”(Network-Layer
Protocol)状态。
在“网络层协议”状态,PPP 链路的两端的网络控制协议NCP根据网络层的不同协议
互相交换网络层特定的网络控制分组。
这个步骤是很重要的,因为现在的路由器都能够同时
支持多种的网络层协议。总之,PP协议两端的网络层可以运行不同的网络展的议假仍
可使用同一个PPP协议进行通信。
当网络层配置完毕后,链路就进入可进行数据通信的“链路打开”(Link Open)状合。链路的两个PPP端点可以被此向对方发送分组。两个PPP端点还可发送回送请求LCP分组
(Echo-Request)和回送回答LCP分组(Echo-Reply),以检查链路的状态。
数据传输结束后,可以由链路的端发出終 止请求LCP分组(Terminate--Request)请求终止链路连接,在收到对方发来的终止确认LCP分组(Terminate-Ack)后,转到“链路终止”状态。如果链路出现故障,也会从“链路打开”状态转到“链路终止”状态。 当调制解调器的载波停止后,则回到“链路静止”状态。
图3-12的右方的灰色方框给出了对PPP协议的几个状态的说明。从设备之间无链路开始,到先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路,然后才能交换数据。由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。
LCP配管选项包括链路上的最大帧长,所使用的鉴别协的规
约(如果有的话),以及不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定
的,没有任何信息量,可以在PPP帧的首部中省略这两个字节)。
协商结束后双方就建立了LCP链路,接着就进入“鉴别”(Authenicate)状态。在这一状态,
只允许传送LCP 协议的分组、鉴别协议的分组以及监测链路质量的分组。若使用口
令鉴别协议PAP (Password Authentication Protocol), 则需要发起通信的方发送身份标识符
和口令。系统可允许用户重试若干次。如果需要有更好的安全性,则可使用更加复杂的口令
握手鉴别协议CHAP (Challenge-Handshake Authentication Protocol)。 若鉴别身份失败,则转
到“链路终止”(Link Terminate)状态。 若鉴别成功,则进入“网络层协议”(Network-Layer
Protocol)状态。
在“网络层协议”状态,PPP 链路的两端的网络控制协议NCP根据网络层的不同协议
互相交换网络层特定的网络控制分组。
这个步骤是很重要的,因为现在的路由器都能够同时
支持多种的网络层协议。总之,PP协议两端的网络层可以运行不同的网络展的议假仍
可使用同一个PPP协议进行通信。
如果在PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块(如分配IP地址)时就要使用NCP中支持IP的协议一1P 控制协议IPCP (P Control Protocol),
IPCP分组也封装成PPP帧(其中的协议字段为0x8021)在PP链路上传送,在低速链路上运行时,双方还可以协商使用压缩的TCP和IP的首部以减少在链路上发送的比特数。
IPCP分组也封装成PPP帧(其中的协议字段为0x8021)在PP链路上传送,在低速链路上运行时,双方还可以协商使用压缩的TCP和IP的首部以减少在链路上发送的比特数。
(Echo-Request)和回送回答LCP分组(Echo-Reply),以检查链路的状态。
数据传输结束后,可以由链路的端发出終 止请求LCP分组(Terminate--Request)请求终止链路连接,在收到对方发来的终止确认LCP分组(Terminate-Ack)后,转到“链路终止”状态。如果链路出现故障,也会从“链路打开”状态转到“链路终止”状态。 当调制解调器的载波停止后,则回到“链路静止”状态。
图3-12的右方的灰色方框给出了对PPP协议的几个状态的说明。从设备之间无链路开始,到先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后再建立网络控制协议NCP链路,然后才能交换数据。由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。