概述
数据链路层是物理层的上层,物理层是把电脑连接起来的物理手段,它主要规定了网络的一些电气属性,其作用是负责传送0和1的电信号。数据链路层位于物理层的上层,简单的阐述它的作用就是确定0和1的分组方式。
下面我们就详细的介绍数据链路层。
上面是TCP/IP协议族中不同层次的协议,这个系列我们将从下往上来介绍这个TCP/IP协议。
从上可以看出,链路层主要有三个目的
- 为IP模块发送和接收IP数据报;
- 为ARP模块发送ARP请求和接收ARP应答;
- 为RARP发送RARP请求和接收RARP应答。
更形象的表示:
接收方中的物理层接受信息单元并将其传送至数据链路层,然后其链路层读取包含在发送方的数据链路层预先添加在协议头中的控制信息,接下来去除协议头和协议尾,剩余部分被传送至网络层,协议栈向上层层过滤,去除对应该层的首部后,最后到达应用层,发送方的数据就被传输到接收方的应用程序。
无论在多么复杂的网络中,从逻辑意义上讲,真正的数据传输通道就是数据链路层中所定义的数据链路。
数据链路层肩负着上接网络层,下连物理层的中介作用,还需要处理其间的数据传输故障等。事实上,数据链路层在不可靠的物理介质上提供可靠的传输,该层的作用包括:物理地址寻址、数据的成帧、流量控制,数据的检错,重发等。
物理地址寻址:
通信当然得知道发送者的地址和接受者的地址,这是最基础的。以太网规定,所有连入网络的设备,都必须具有“网卡”接口。然后数据包是从一块网卡,传输到另一块网卡的。网卡的地址,就是数据包的发送地址和接收地址,叫做MAC地址,也叫物理地址,这是最底层的地址。每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。有了这个地址,我们可以定位网卡和数据包的路径了。
那么在实际通信时,我们怎么知道对方的MAC地址呢?这里我们是通过ARP协议(地址解析协议),就是根据IP地址(网络层)获取MAC地址的一个TCP/IP协议。上面有说到,发送者从上至下,就需要在已知IP地址的情况下,获取MAC地址发送给接收者,自然地,接收方从下往上时,需要逐步添加对方的地址信息,需要已知MAC地址的情况下,RARP协议(逆地址解析协议)获得对方的IP地址。
那么知道了对方的MAC地址,连接是如何建立的呢?
这里简单的说下广播方式(目的端为给定网络上的所有主机),系统将数据包(包含MAC地址)向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。
上图,1号计算机向2号机算机发送一个数据包,同一个子网络的计算机都会收到这个包。它们读取这个包的首部,找到接受方的MAC地址,同自身的MAC地址相比较,如果两者相同,就接收这个包,作进一步处理,否则就丢弃。
事实上还有其余方式如单播和多播这里就不说明了。
数据帧封装:
封装简单说就是事先对数据包进行拆分和打包,在所发送的数据包上附加上目标地址,本地地址,以及一些用于纠错的字节等。对数据包进行处理时通信双方所遵循和协商好的规则就是协议。
前面说到,数据链路层位于物理层和网络层之间。在发送端,数据链路层是接收来自网络层的数据分组,而在接收端它是接受来自物理层的比特流,所以数据链路层的成帧功能就包含两层含义:一是将来自物理层的一个个比特流组装成数据帧(成为帧同步),二是将来自网络层的数据分组封装成数据帧。
在发送端数据链路层中的帧到达物理层后就会以比特位为单位进行传输,而不是以帧为单位进行传输,在物理线路上数据的传输单位是比特位。发送端以比特位方式一位位地传输到接收端的物理层,然后接收端的物理层把比特流向数据链路层传输,达到后又要将比特流封装成数据帧,添加的首部信息是通过读取对方这就是数据链路层的帧组装方式。
帧同步的目的就是要使接收端的数据链路层对从物理层传输而来的一串串比特流以帧为单位进行区分,根据帧头和帧尾来区分一个完整帧。
以太网和IEEE 802封装
各个字段的详细说明:
目的地址(Destination Address,DA)和源地址(Source Address,SA):两种帧都采用6字节的目的地址和源地址(802.3允许16bit),也就是MAC地址,只有网络接口才能识别。
长度(Length)或类型(Type):从网络层来的数据包,大小可以在46—1500字节之间变化。
帧校验序列(Frame Check Sequence,FCS):FCS是位于帧尾的字段,它用来存放循环冗余校验(CRC)。
数据链路层除了数据的封装成帧之外,还需要保证数据在该层的“透明”传输,即使在数据链路层上所传输的数据在内容、格式及编码上都没有限制,也要保证数据从发送端无差错地在数据链路上传输到目的接收端。
最后
以上就是缥缈电话为你收集整理的【计算机网络】数据链路层(一):数据帧和物理寻址的全部内容,希望文章能够帮你解决【计算机网络】数据链路层(一):数据帧和物理寻址所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复