数据链路层笔记

集线器组网的情况,从一台计算机发出的信号,集线器会传到所有的口上,不做任何过滤,其相当于一个信号扩散的设备,接在集线器上的计算机通过MAC地址来区分传输来的信号是否是给自己的。我们把集线器所处的信道叫广播信道。

集线器上的计算机通信机会都是均等的,如果同一时刻,集线器上有两台以上计算机同时通信,链路上的信号就会出现碰撞,碰撞后的信号会返回来,计算机检测到碰撞信号返回来后知道发送失败,还得继续再发。

其实用集线器连的网,它会检测一下网络中是否有其他计算机在通信,如果有人在通信,那么它就不再发送。他们用的协议是CSMA/CD(带冲突检测的载波侦听多路访问),集线器处在广播信道。

路由器间是点到点信道,使用的协议是PPP协议,不存在冲突检测,相当于一条公路就跑你一辆车。在点到点的信道间传输,先把以太网的帧格式去掉,然后再封装成PPP帧格式。

数据链路层的三个基本问题:不管是广播信道的数据链路层还是点到点的数据链路层,都要考虑下面三个问题。

  1. 封装成帧
  2. 透明传输
  3. 差错检测

链路(link):是指的从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他交换节点。

集线器和网线一样,不能称为交换节点,因此计算机A与路由器1之间算一个链路,

数据链路(Data link)则是另一个概念,它是物理线路+通信协议。

数据链路层把网络层交下来的数据封装成帧发送到链路上,以及把接收到的帧中的数据取出并交给网络层,在因特网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。数据链路层封装的帧,在物理层变成数字信号在链路上传输。

 

封装成帧

MTU(最大传输单元):在以太网中,从网络层到数据链路层是1500字节。需要注意的是这个最大长度并不包括转义字符,算上转义字符可能大于1500字节。

 

透明传输  

插入转义字符是数据链路层做的

差错检验

现实的通信链路都不会是理想的,这就是说,比特在传输过程中可能会产生差错:1可能变成0,而0也肯能变成1,这就叫做比特差错。

为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余CRC(Cyclic Redundancy Check)的差错检验技术。

FCS(Frame Check Sequence)为帧校验序列,俗称帧尾,即计算机网络数据链路层的协议数据单元(帧)的尾部字段,是一段4个字节的循环冗余校验码。源节点发送数据帧时,由帧的帧头和数据部分计算得出FCS,目的节点接收到后,用同样的方式再算一遍FCS,如果与发送的FCS不同,则认为帧在传输过程中发生了错误,从而选择丢弃这个帧。

为了简单起见,假设要传输的数据为101001,我们来计算一下3位的帧校验序列FCS是多少。

被除数是数据部分,FCS需要几位就在被除数后面加几个0,这里我们需要3位帧校验,补三个0即可,除数的值也不是固定的,只要发送端与接收端保持一致即可,这里我们选择的除数是1101。需要注意的是,被除数后面加几个0,除数的位数要比加零的个数多1。例如加3个0,除数就是4位,加4个0,除数的位数就是5位。

运算规则,上下一样为0,不一样为1,补全四位后余数最高位是1才可以商1,最高位是0只能商0,因为除数的最高位为1。最后取三位余数作为FCS。

接收端收到的数据为101001001。按照同样的运算法则,被除数搞好被整除,说明数据完全正确,若中途有数据异常,不能被整除,数据会被丢弃。

 

点到点信道的数据链路

点到点信道是指的一条链路上就一个发送端和接收端的信道,通常用在广域网链路。

广域网中的链路

家里用的ADSL拨号上网

ADSL拨号上网,通过电话线接到交换局。

在这种点到点的链路(就是路由器和路由器直连的链路)上,我们使用PPP协议。(需要注意的是点到点链路不是只有PPP协议,比如还有frame-relay(帧中继)、X25、HDLC等等)

特点:

  1. 出现差错直接扔掉,不提供重传机制,不提供可靠传输。
  2. CRC只是检查有没有错误,有错误就扔掉,没有错误就给网络层。并不是说有错误纠正。PPP协议也一样不提供可靠传输。
  3. 与其他链路层协议一样,也提供封装成帧(首部和尾部,帧开始符、帧结束符,需要注意的是帧开始及结束符不一定使用ASCII里面的开始符及结束符)、透明传输(加转义字符、收到后去掉转义字符)、差错检测(使用CRC算法来计算FCS)。
  4. 支持多种网络层协议(IPv4和IPv6或其他的网络层协议都可以封装在PPP协议里面)。
  5. 支持多种类型的链路(支持光纤、铜线、同步传输、异步传输、串行或并行链路均可)。

 

PPP协议有三个组成部分:高级数据链路控制协议(HDLC)、链路控制协议(NCP)、网络控制协议(NCP)。

高级数据链路控制协议的作用:把网络层传下来的数据封装成能够在串行 链路上发送的格式。广域网通常用串行通信。

链路控制协议(LCP)的作用:用来点到点通信建立连接参数。比如说密码对不对等。

网络控制协议的作用:PPP协议可以封装的网络层协议有多种(比如说IP、IPX、AppleTalk、IPv4、IPv6等),网络控制协议就是用来标识上层多种网络层协议的。

点到点信道的数据链路层

PPP协议的帧格式

点到点的链路上的路由器要使用同一种协议才能通。比如大家都使用PPP协议。

地址字段0xFF:这个地址既不是源地址也不是目标地址,什么都不是,形同虚设。用一个字节来表示。

控制字段0x03:用一个字节表示,目前没有实际意义。

协议字段:用来指明里面是什么网络协议,这里0x0021表示IPv4,用两个字节来表示。

抓包工具抓不到帧的开始标记7E,结束标记7E,以及校验序列。

 

透明传输 帧开始字符 帧结束标记

如果被传输的数据里面有帧开始字符和帧结束字符,要想办法破坏,要么加转义字符,要么加点别的。这就叫填充方法(字符填充,0比特填充)

补充知识:

广域网的这种串行通信有两种方式:同步传输,异步传输

同步传输:同步传输(Synchronous Transmission)以数据帧为单位传输数据,可采用字符形式或位组合形式的帧同步信号,在短距离的高速传输中,改时钟信号可由专门的时钟线路传输,由发送端或接收端提供专用于同步的时钟信号。计算机网络采用同步传输方式时,常将时钟同步信号(前同步码)植入数据信号帧中,以实现接收端与发送端的时钟同步。

异步传输

异步传输(Asynchronous Transmission)以字符为单位传输数据,发送端和接收端具有相互独立的时钟(评率相差不能太多),并且两者中任一方都不向对方提供时钟同步信号。

PPP协议透明传输填充方式

同步传输:以帧为单位传输 PPP协议使用0比特填充

在同步传输的链路上,数据传输以帧为单位,PPP协议采用零比特填充方法来实现透明传输。大家把PPP协议帧界定符0X7E写成二进制01111110,也就是可以看到中间有连续的6个1,只要想办法在数据部分不要出现连续的6个1,就肯定不会出现这界定符。具体办法就是“零比特填充法”。

异步传输:字节为单位传输 PPP协议使用字符填充

在异步传输的链路上,数据传输以字节为单位,PPP帧的转义符定义为0X7D,并使用字节填充。

把信息字段中出现的0X7E字节转变成2字节序列(0X7D 0X5E)。

若信息字段中出现一个0X7D的字节(即出现了和转义字符一样的比特组合),则把0X7D转变成为2个字节序列(0X7D 0X5D。

 

广播信道的数据链路层

广播信道上一台计算机发信号,其他的计算机都可以收到信号,必须要有地址来区别信号是给谁的,并且要做冲突检测,这个地址就是MAC地址。广播信道里面每个计算机发数据的机会均等,发送数据之前要先判断线上是否有信号在传输。因为只要有一台计算机发信号,他就会占整个总线,所有的计算机都会收到。另外一台计算机传信号必须要等这个链路空闲才可以。

带冲突检测的载波侦听多路访问技术(CSMA/CD),使用这种机制通信的就称为以太网,不要与局域网混为一谈,局域网从通信范围来定义,以太网是从通信协议来定义的。

广播信道的以太网要使用CSMA/CD协议来通信,而且每个设备都要有MAC地址。

早期的以太网链路采用同轴电缆(同轴电缆组的网两端必须得有电阻,这个电阻用来吸收能量防止信号反射,一单这个链路某个链路断开,相当于没有这个端接电阻,整个链路就没法通信了,这种链路很不稳定。),后来被集线器给替代了

使用集线器组建的局域网也是广播信道,是总线型拓扑。

拔掉一根线不影响其他计算机通信。集线器链路中,一台计算机发出的信号,其他所有的口都可以收到,与同轴电缆一样的。

以太网(Ethernet)是一种计算机局域网组网技术。IEEE制定的IEEE802.3标准给出了以太网的技术标准,即以太网的介质访问控制协议(CSMA/CD)及物理层技术规范(包括物理层的连线、电信号和介质访问协议的内容)。

以太网的几个标准

10指的是10Mbps带宽,Base是基带的意思。网线长度基准单位是100m。以太网如果没有特殊说明指的就是10M以太网,这是最初的以太网,后来才有了百兆、千兆以太网等。T为双绞线,F为光纤

猜你喜欢

转载自blog.csdn.net/taotongning/article/details/82626794