我们一起学网络(一)——数据链路层(PPP协议)

来源:互联网 发布:nodejs pm2 windows 编辑:程序博客网 时间:2024/06/10 10:51

开始之前,我们先解决几个问题:

(1)什么是数据链路层?

        答:数据链路层是计算机网络的中的低层(OSI模型中的第二层),可简单的理解为是数据通道。主要作用是为上层(网络层)提供带有差错检测(后面会提)的不可靠传输服务。

 

(2)数据链路和链路有什么区别?

       答:链路是从一个结点到相邻结点的一段物理线路,而中间没有其他的交换结点。说白了,链路就相当于传输数据的载体。

       数据链路=链路+控制数据的通信协议的软/硬件

 

(3)计算机网络中共分几层(计算机网络的体系结构)?

       答:计算机网络主要有OSI模型(七层)和TCP/IP模型(四层),当然,现在OSI已经不用了,我们就讲一下TCP/IP模型。

        为了学习研究方便, 我们把TCP/IP模型分为五层,从上至下分别是【应用层】【运输层】【网络层】【数链路层】【物理层】

 

 (4)数据链路层要解决的问题有哪些?

       答:这是个很重要的问题,数据链路层总共要解决三个大问题:封装成帧、透明传输、差错检测

 ①封装成帧:即把上层网络层传下来的数据分别添加首部和尾部,这样就构成了一个帧。

                             

就像上图这样,【帧首部】和【帧尾部】重要作用是判断帧从哪开始发送,从哪结束,一般用一些特殊的字符代表。

   ② 透明传输:什么叫透明传输?就是,不管你传什么数据,链路层都能给你传。实际存在的数据链路层对数据来说好像不存在一样。这就是透明传输。

      那为了让所有的数据都能通过数据链路层传输,我们该做什么呢?帧的数据部分都是要传输的内容,帧首部和帧尾部用来告诉接收方帧是否传完。那如果数据部分恰好含有帧的首部或者尾部怎么办?假设数据部分含有帧尾部的特殊字符,接收方就会认为这个帧传输结束了。这样就做不到透明传输了。

     解决方法:转义字符。

     封装成帧的时候用转义字符把和【帧首部、尾部、以及转义字符】一样的字符转义成其他字符,传输到接收方的时候再转义回去。比如:帧尾部为7E,转义字符为7D,数据部分封装成帧的过程中,遇到7E,即转变成         (7D,5E),用(7D,5E)来代替7E。接收方接收以后再把(7D,5E)恢复成7E

         这种方法称为 字节填充或字符填充,还有一种方法称为零比特填充(即遇到5个连续的1,就立刻插入1个0,到接收方又把多添0删除)。

 ③ 差错检测:传输过程中,可能会发生0变1,1变0的情况,差错检测就是为了避免这种情况,检测到有问题的比特流,直接丢弃。

     差错检测的方法叫做 循环冗余检测CRC,本质就是用传输的二进制码除以一个发送方和接收方商议好的二进制数。然后双方检验啥的……这个不复杂,请google【循环冗余检测CRC】学习,很简单。

      PS:我们要特别注意的是【差错检测】只是检测的的【比特差错】,不能保证不丢帧,帧不重复,不乱序这样的错误。所以,就像前面说的,数据链路层只是不可靠的传输。

 

了解了这些基本问题,我们就开始吧。数据链路层使用的信道主要有两种类型:(1)点对点信道 (2)广播信道。我们分开介绍。

一、点对点协议PPP

        以前吧,通信质量太差,我们用的可靠传输【高级数据链路控制HDLC协议】(这个是OSI模型的协议)。现在科学技术发达了,通信质量好了,然后我们都用上了更快,更简单PPP协议。具体就是这样,下面我们开始来学习什么是PPP协议。

            PPP协议是用在数据链路层的一种协议,用户计算机和服务器提供商ISP进行通信的所用的协议。比如你们宽带连接的时候不是会提示什么PPPOE连接么,其实就是这个PPP+后面要说的以太网。

       然后,来看看PPP是怎么组成的,总共三部分组成:

(1)将网络层(IP)数据报封装成帧的方法

(2)链路控制协议LCP 主要用来配置一些用户和ISP建立连接的协定

(3)网络控制协议NCP 网络层协议有好多,所以NCP用来支持各种不同的上层(即网络层)协议。

 

        然后,来给大家普及一下【PPP协议的帧格式】的知识,还是看图吧

                                                

     F代表标志字段(其实就是帧开始和结束),在PPP协议中定义为0x7E。A为地质字段,C为控制字段,但是A和C没啥用,很多时候PPP协议中都把他两省去了。FCS是前面提到的CRC检验法的留下的帧检验序列FCS。协议用不同的二进制码代表 PPP协议中不同的协议,如0xC021代表链路控制协议LCP。

     

     在PPP协议的最后,要说的是PPP协议的工作状态,PPP协议总共有6种工作状态。分别是【链路静止】【链路建立】【鉴别】【网络层协议】【链路打开】【链路终止】。PPP链路的起始和终止永远是【链路静止】状态。

     简单说来,PPP协议的工作流程是这样的:

         设备间无链路 → 物理链路 → LCP链路 → 已鉴别的LCP链路 → 已鉴别的LCP链路和NCP链路

     不想画图了……,具体是这样

(1)当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
(2)PC机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
(3)这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
(4)通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。 

      好吧,PPP协议就讲那么多,下面开始讲广播信道。

 

广播信道内容有点多,涉及到局域网,以太网啥的。。。。。要不咱且听下回分解。

 

第一次用CSDN写博客,CSDN的编辑排版好蛋疼…………

原创粉丝点击