数据链路层概述
数据链路层为计算机网络七层模型中的第二层,同物理层一并构成了TCP/IP协议的四层结构的第一层——网络接口层
数据链路层解决的问题
封装成帧
帧是数据链路层的基本单位
在数据链路层中,发送端会在网络层的一段数据前后添加特性标记变成“帧”,而接收端则会识别出这个“帧”
一般过程如下:
1.数据链路层获得网络层传输的IP数据报,
2.之后,数据链路层把这个数据看成是“帧”的数据,并在首尾添加特定的标记
但是,如果在数据中也有和添加的标记一样的内容,该如何处理呢?
透明传输
这里的透明,可以理解成“虽然存在,但是当做不存在”
数据链路层中,会把原始的数据内部出现的帧标记添加转义字符,使得其与标记区分开(例如编程语言中的\)
差错检测
由于物理层只管传输比特流,而不管传输的对错(例如受到干扰而导致传输出错),因此数据链路层担负起了差错检测的任务
这里的检测包括奇偶校验码以及循环冗余校验码CRC(数据链路层采用的差错检验的方法)两种
奇偶校验码
在比特流的尾部添加一个比特位来检测比特流是否出错
如果比特位全部相加为奇数,末尾加1,偶数加0,这样可以结合奇偶校验码来判断数据的正误
但是,如果数据变化比较巧妙(有偶数位出现错误),也符合奇偶校验码,那就无法检验出错误了
循环冗余校验码CRC
这种方法是根据传输/保存的数据来产生固定位数的校验码,从而检测错误
这里也是生成数字,然后附加到数据后面,不同的数据校验码不同,保证了数据和校验码的一一匹配
最大传输单元MTU
由于数据链路层可以传输的“帧”也不是无限大的,最大值就是最大传输单元(Maximum Transmition Unit)
MTU一方面是受低层物理层影响,另一方面,数据帧的大小影响着传输的效率
以太网的MTU一般为1500字节
路径MTU
在网络传输的过程中,不同路径可能MTU不一样,这时取其中最小值作为路径MTU
以太网协议
以太网协议是数据链路层的一个协议(实际上规定了物理层和数据链路层,也就是网络接口层),一种广泛使用的局域网技术,可以用来完成相邻设备的数据帧传输
MAC地址
即物理地址/硬件地址,全世界所有设备都有自身唯一特有的MAC地址(类似于身份证)
MAC地址有48位,通常用十六进制表示,例如30-B4-9E-4D-55-6A
可以在命令提示符中用ipconfig/all指令查看本机所有物理设备的MAC地址
数据格式
以太网的数据格式分为目的地址(6字节)、源地址(6字节)、类型(2字节)、帧数据(46-1500字节)以及CRC(4字节)
这里的类型指的是帧数据是什么协议的数据(这里的协议指的是网络层的)
MAC地址表
MAC地址表存在于以太网协议中,用来把数据格式最开始的目的地址同一个硬件接口做关联,这样就可以知道哪个数据发往哪里了
但如果路由器中没有存某个硬件接口呢?
路由器就会把数据发往除了发送端以外的所有主机,等待回应,然后根据回应,记录下MAC地址表中没有的硬件端口
但如果要跨设备传输(例如通过路由器,发往下一个路由器连接的主机),则需要利用网络层的协议