数据链路层属于计算机网络的底层。数据链路层使用的信道主要有以下两种类型:
1.点对点信道
这种信道使用一对一的点对点通信方式。
2.广播信道
这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
使用点对点信道的数据链路层
1.数据链路和帧
所谓链路就是从一个结点到相邻结点的一段物理线段,而中间没有任何其他的交换结点。在进行数据通信时,两个计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
数据链路则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须要有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
点对点信道的数据链路层的协议数据单元–帧。
数据链路层吧网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在因特网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组、包)。
数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:封装成帧、透明传输、差错检测。
封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
所有在因特网上传送的数据都是以分组(即IP数据报)为传送单位的。网络层的IP数据报传送到数据链路层就称为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,就构成一个完整的帧。这样就是数据链路层的数据传送单元。
另外帧的首部和尾部还有一个作用就是帧定界。
透明传输
由于帧的开始和结束的标记是使用专门指明的控制字符。因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以方载这样的帧中传输过去,因此这样的传输就是透明传输。
那么假如传送的字段中有帧定界字符那会不会出错呢?实际上在数据出现的字符“EOT”并非控制字符而仅仅是二进制数据00000100。
透明是一个重要的术语。它表示:某一个实际存在的食物看起来却是好像不存在一样。这句话我的理解就是:不论你要发送什么都是可以发送过去,即使有控制字符但是依旧可以。当然这样的解决方法是利用的转义符,有兴趣可以百度。
差错检测
现实的通信链路不会是理想的。比特在传输的过程中可能会产生差错:1可能会变成0,而0也可能变成1。这就叫做比特差错。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前..在数据链路层广泛使用了循环冗余检测CRC的检错技术。
点对点协议ppp
在通信线路质量较差的年代,在数据链路层使用可靠传输协议曾经是一个好办法。因此,能实现可靠传输的高级数据链路控制HDLC就成为当时比较流行的数据链路层协议。但现在HDLC已很少使用了。对于点对点的链路,简单得多的点对点协议PPP则是目前使用的最广泛的数据链路层协议。
ppp协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
PPPoE是为了宽带上网的主机使用的链路层协议。这个协议吧ppp帧再封装在以太网帧中(在增加一些可以识别用户的功能)。因为宽带上网数据传输快,所以可以让多个连接在以太网上的用户共享一条道ISP的宽带链路。现在即使是只有一个用户利用ADSL进行宽带上网,也是使用PPPoE协议。
适配器
首先计算机如何连接到局域网。
计算机与外界局域网的连接是通过通信适配器。现在个人计算机主板上都嵌入了这种适配器,再适配器上面装有处理器和存储器(包括RAM和ROM)。适配器和局域网之间的通信时通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此适配器一个重要的功能就是要进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。若在主板上插上适配器时,还必须把管理适配器的设备驱动程序安装在操作系统上。
在适配器接受和发送帧的时候不使用计算机的CPU。在接收到错误的帧的时候直接丢弃并不通知计算机,只有收到正确的帧才会终端来通知计算机并交付协议栈中的网络层。
特别的要注意,计算机硬件地址就在适配器的ROM中。而计算机的软件地址–IP地址,则在计算机的存储器中。
CSMA/CD协议
在一个总线上总要有一台计算机在发送数据,总线的传输资源就会被占用。因此,在同一时间只允许一台计算机发送数据。如果有人发言的同时还有人也发言,那么就会发生碰撞,而为了防止这种情况就使用协议CSMA/CD,意思是载波监听多点接入/碰撞检测。
集线器
集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍像一个传统以太网那样运行。也就是说,使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议(其实具体是各站的适配器执行了CSMA/CD协议)。网络中各站还是要在同一时刻只允许一个站发送数据。
集线器有许多接口,因此就像一个多接口的转发器。
集线器工作在物理层,他的每个接口仅仅简单地转发比特–收到几就转发几,不进行碰撞检测。如果发生了两个接口同时有输入,那么所有接口都接收不到正确的帧。
集线器现在都是很智能,有一定的容错能力。比如以太网中一个适配器故障,不断地发送以太网帧,集线器会检测问题然后断开连接。
MAC层的硬件地址
在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中)
在所有计算机系统设计中,标识系统都是一个核心问题。在标识系统中,地址就是为了识别某个系统的一个非常重要的标识符。
名字指出我们所要寻找的那个资源,地址指出那个资源所在,路由告诉我们如何到达该处。
严格的讲名字应该与系统所在地无关,就像我们名字一样。如果在连接的局域网上的终极或路由器安装有多个适配器,那么主机或路由器就有多个地址。准确的说这种地址应该是其接口的标识符。
再生产适配器时,MAC地址已经被固化在适配器的ROM中。
适配器有过滤功能。但是适配器其实是从网络上每接收到一个MAC帧就先用硬件检查MAC帧的目的地址。如果是本站就进行其他处理,夫走就丢弃。
一般发往本站的帧包括:
单播帧(一对一),即受到的帧的MAC地址与本站硬件地址相同。
广播帧(一对全体),即发送给本局域网所有站点的帧。
多播帧(一对多),即发送给本局域网上一部分站点的帧。
以太网适配器还可以设置为一种特殊的工作方式,即混杂方式。工作在混杂方式的适配器只要“听到”有帧在以太网上传输就悄悄接受下来,不管这些帧发往哪里。这样就是“窃听”其他站点的通信而不中断其他站点的通信。网络上的黑客常利用这种方式非法获取网上用户的口令。其中一种很有用的网络工具叫做嗅探器就是用了设置为混杂方式的网络适配器。
在数据链路层扩展以太网要是用网桥。网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发和过滤。
两个以太网通过网桥连接起来后,就成为一个覆盖范围更大的以太网,而原来每个以太网就可以称为一个网段。
网桥依靠转发表来转发帧。
网桥连接后可以自己学习,然后更新转发表。
多接口网桥—以太网交换机
科技总是在不断进步,这个时候将多个网桥组合起来就构成了一个交换机,他拥有更多的优点。
更重要的是,使用以太网交换机可以方便地实现虚拟局域网
虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN。
虚拟局域网其实只是局域网给用户提供的一种服务,并不是一种新型局域网。
在同一个虚拟局域网的用户可以互相发送广播信息,但是不在同一虚拟局域网的用户却收听不到。
计算机网络数据链路层就主要记下来这些知识,感觉看的时候半懵半懂,总是理解的不是很深。即使写博客的时候已经第二遍了还是不太能理解有些地方,就先当做记笔记把知识点记下来,然后等后面理解了慢慢再来看。