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