功能
用于两个设备(同一种数据链路节点)之间进行传递
对比理解“数据链路层”和“网络层”
链路层是为网络层提供数据传送服务的,这种服务要依靠本层具备的功能来实现,如下:
① 链路连接的建立,拆除,分离.
② 帧定界和帧同步.链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界.
③ 顺序控制,指对帧的收发顺序的控制.
④ 差错检测和恢复。还有链路标识,流量控制等等.差错检测多用方阵码校验和循环码校验来检测信道上数据的误码,而帧丢失等用序号检测.各种错误的恢复则常靠反馈重发技术来完成.
网络层向运输层提供服务,主要任务是为从终端点到终端点的信息传送作( 网桥或路由器)。
数据链路层将本质上不可靠的传输媒体变成可靠的传输通路提供给网络层。
认识以太网
- “以太网”不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;
- 例如以太网中的网线必须使用双绞线;
以太网帧格式
- 源地址和目的地址是指网卡的硬件地址(也叫mac地址)
- 帧协议类型字段有三种值,分别对应ip、arp、rarp
- 帧末尾是crc校验码
对比理解mac地址和ip地址
- mac地址用来识别数据链路层中相连的节点
- 长度为48位,及6个字节。一般用16进制数字加上上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).
认识mtu
mtu(最大传送单位)相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。
我们来回答几个问题:
如何将报头与有效载荷分离?
报头是定长的,剩下的都是有效载荷
如何将有效载荷交付给上层?
帧类型。
如果帧类型是0800,交给ip
如果帧类型是0806,交给arp
mtu对udp协议的影响
让我们回顾一下udp协议:
- 一旦udp携带的数据超过1472(1500 - 20(ip首部) - 8(udp首部)), 那么就会在网络层分成多个ip数据报.
- 这多个ip数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果udp数据报在 网络层被分片, 整个数据被丢失的概率就大大增加了.
mtu对于tcp协议的影响
- tcp的一个数据报也不能无限大, 还是受制于mtu. tcp的单个数据报的大消息长度, 称为mss(max segment size);
- tcp在建立连接的过程中, 通信双方会进行mss协商.
- 理想的情况下, mss的值正好是在ip不会被分片处理的大长度(这个长度仍然是受制于数据链路层的 mtu).
- 双方在发送syn的时候会在tcp头部写入自己能支持的mss值.
- 然后双方得知对方的mss值之后, 选择较小的作为终mss.
- mss的值就是在tcp首部的40字节变长选项中(kind=2)