在之前的介绍过的网络层的相关内容中可知,网络层的作用是研究如何将一个数据报由一个网络通过路由器转发至另一个网络。而本文中所说的数据链路层的作用则是研究在同一局域网内,如何将数据帧由一台主机传送至另一台主机。在数据链路层使用的通信信道有两种:点对点的数据通信信道(一对一),广播信道(一对多)。
数据链路层的基本数据单元称为帧。
数据链路层的作用主要是:将发送主机中网络层交付下来的IP数据报封装成帧,然后向下交付给物理层,再通过网络给接收主机;接收主机的物理层从网络中接收到数据帧之后,向上交付给数据链路层,数据链路层检查接收到的帧没有差错时,就向上交付给网络层,否则丢弃该数据帧。数据链路层不考虑物理层是如何实现比特传输该数据帧的。
封装成帧
当发送主机的网络层将IP数据报向下交付给数据链路层时,数据链路层根据相关的协议对该数据报加上首尾部就将其封装成了帧。加首尾部的作用是:可以确定帧的界限(起始位置);可以加上一些必要的控制信息。
差错检验
数据在网络中的传送是通过比特流的方式进行传送的,因此在传送过程中,某个比特位可能会由0变为1,或由1变为0。这就叫做“比特差错”。在数据链路层通过使用CRC检验来实现无比特差错的传输。
在帧传送过程中,每一帧都没有出现比特差错,但可能会出现帧丢失,帧重复,帧失序。这三种情况成为“传输差错”。对于传输差错的问题,要通过提供可靠的传输服务来实现,如确认重传机制等。一般的,对于通信线路良好的有线传输链路来说,由数据链路层提供可靠的传输服务。对于通信质量较差的无线传输链路来说,由传输层的TCP来保证可靠的传输服务。
下面具体介绍以太网上的数据链路层。
以太网
以太网不是一种网络,而是一种技术标准。它既包含了数据链路层的内容,又包含了物理层的内容。例如以太网的网线必须使用双绞线等。与以太网并列的还有令牌环网等。
以太网使用的是一对多的广播通信方式。即在同一局域网内,一个发送主机发送的数据帧,该局域网内的其他主机都可以接收到。然后再判断该数据帧是否是发给自己的进行接受或丢弃。
MAC地址
MAC地址是用来表示数据链路层中相连的各节点。长度为48位。它是固化在网卡中的,在网卡出厂是就已经确定了。MAC地址又称为硬件地址或物理地址。
数据帧在局域网中进行传输时,接收主机根据MAC地址来判断该数据帧是否是发给自己的。
以太网帧格式
如下图:
各字段说明:
目的/源MAC地址:就是固化在网卡中的硬件地址
协议类型:表明该数据帧中的有效数据是由网络层的什么协议交付下来的或者要交付给网络层中的什么协议。包括:IP协议,ARP协议,PARP协议。
数据:由网络层向下交付的有效数据。根据协议类型的不同,对应的数据内容也不同。
CRC:校验码。用于对差错检验来实现无比特差错的传输。
不同的协议类型,对应不同的数据如下:
有关ARP及RARP相关的内容,在之后的文章中介绍。