数据链路层中的信道一般分为两类:
- 点对点信道
- 广播信道
在数据链路层中协议有很多种,不过它们之间有三个基本的特点,或者是说都必须解决这一层中三个基本的问题:
- 封装成帧
将上层网络层传来的IP数据报封装成为链路中传输的基本单位帧。并且使用SOH开始字符和EOF结束字符作为帧界定字符,表示一个帧的开始和结束。在传输中可以根据SOH是否重复来判断是否重新传输帧。
- 透明传输
透明传输即,无论传输的帧中的数据内容部分是否出现与SOH和EOF相同的字符,都能正常进行传输。可通过在在SOH和EOF字符前面插入转义字符ESC来解决,这种方法又称为字节填充或比特填充。
- 差错检验
在传输过程中我们无法保证信道是稳定的,有可能会发生帧丢失、帧重复、帧失序(后发送的帧反而比先发送的帧先到达)。书中提及了使用CRC循环冗余检验。该方法的要点在于:
- 双方要商定一个除数P(P的位数为n+1)
- 数据后面添加n个0,接着将数据除以除数P
- 采用的是和运算即AND运算(1 and 0=0,1 and 1=1,0 and 0=0,0 and 1=0)
- 首位为0时结果要上零
- 运算次数为数据的位数
- 最后得出的余数为冗余码,直接添加在数据后面进行发送
- (因为懒得放图,所以如果有什么不理的可以在书中P71页看,或者联系我)
CRC在接受方的验证流程为:
- 接受方将数据除以双方商量好的除数P
- 如果最后余数为零,则表示数据正确,接受方收下数据
- 如果最后余数不为零,则表示数据中有错误,接收方将数据丢弃
- 需要注意的是这时的接收方并不知道错误发生在数据的哪一位
书中在讲述差错检验的时候还提及两个概念:
- 无差错接受
我觉得书中讲述那句话特别好所以直接引用在这:"凡是接受端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生错误"所以可以近视的认为"凡是接收端数据链路层接受的帧均无差错"
- 可靠传输
即发生方发送什么,接受方就接受什么
上面讲了这么多关于数据链路层协议的共通之处后,终于轮到我们的主角PPP协议.首先我们要明白两点:
- PPP协议是一种点对点信道间使用的协议
- PPP协议是用户用于与ISP商通信所使用的
PPP协议除了在满足以上数据链路层中协议共通的基本特点外还满足一下的特点:
- 多种网络层协议(个人觉得很重要)
即在链路上能支持各种网络层的协议,屏蔽上层各种协议的特异性,使其统一
- 多种类型链路
这里涉及4个新的概念
串行传输:我们可以想象成一条只有一条车道的马路。在这条马路我们一次只能行驶一辆车。即发送方只能一个一个比特的发送数据,而接受方也只能一个一个比特的接受数据。(或者是想成队列的形式)
并行传输:我们可以想象成一条拥有多车道的马路。在这条马路上我们可以一次行驶多辆车在不同的车道上。即接收方一次能发送多个比特,而接受方一次也能接受多个比特。(多个队列???)
同步传输:这个比较好理解。发送方发送一个数据块(通常是数据块,这样信道使用率比较高),这时只有当接受方回送一个接收到的信号,发送方才会继续发送下一个数据。
异步传输:这个和上面一样比较好理解。同步传输需要等待接受的回送信息,而异步传输不需要。异步传输是无论接受方是否回送确认信息,都继续发送下个信息。PS:想要实现这种传输需要解决几个问题,后面的文章会提及。
- 检测连接状态
在链路建立后,链路双方可随时发送回送请求帧LCP和回送回答帧LCP来确认链路是否还存在,是否有一方已经断开了链路
- 最大传送单元MTU
如果高层协议发送的分组长度超过MTU的长度,PPP就丢弃此帧,并向上层返回错误
- 网络层地址协议商
建立链路连接时,双方经过协商得出双方的IP地址
- 数据压缩协商
协商得出双方共同使用何种数据压缩的算法
- 透明传输
书中这里特别提及了PPP协议中的透明传输的方法,那我也说一下吧.
- 在PPP协议中EOF与SOH都为(0x7E)
- 如果数据字段中出现0x7E,则转为(0x7D,0x5E),即在前面插入转义字符.
- 如果数据字段中出现0x7D,也就是说出现和转义字符一样的字符是,则转为(0x7D,0x5E)
- 如果数据字段中出现ASCII控制字符(即数值小于0x20)的字符,则在前面插入0x7D,并转换编码
PPP协议在PPPoE中对透明传输的处理又不一样
- 每出现5个连续的1就插入一个0,保证不会出现6个连续的1.而接受方就将连续的5个1后面的0删除
好了,到这里我们就基本把PPP协议中的一些需要解决的问题讲完了.因为,PPP协议中帧的格式书中内容比较详细,而我懒得打出来(- . -)
最后我们简单的来看下PPP协议的工作步骤
- 用户PC通过调制解调器呼叫路由器,建立一条用户PC到ISP的物理连接
- 用户PC向ISP发送一系列LCP的配置请求帧,以选择和响应一些PPP参数
- 协商完成后进入了鉴别状态,使PAP口令鉴别协议和CHAP口令握手鉴别协议(后者更为复杂)来确认用户的身份
- 鉴别成功后,我们就进入了"网络层协议"状态,NCP网络控制协议根据双方不同的网络层协议交换特定的网络层分组,分配IP地址
- 网络层配置完毕后,双方进入"链路打开"状态,这期间需要进行检查连接状态,上面有提及
- 数据传输结束后,由链路的一端发送终止请求LCP来终止链路,并且回收资源,NCP回收IP地址