目录
一、认识以太网
二、以太网帧格式
三、认识MTU
MTU对IP协议的影响
MTU对UDP协议的影响
MTU对TCP协议的影响
四、ARP协议
ARP协议的作用
ARP协议的工作流程
数据链路层的作用是解决如何正确在链路内找到和传输数据给局域网内的设备。数据链路层有很多种协议,其中比较常见常用的协议就是“以太网协议”。
一、认识以太网
- “以太网”不是一种具体的网络,而是一种技术标准,它用于局域网内内的数据传输;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;
- 例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;
- 以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等;
- 以太网的工作原理基于一种叫做“帧”(frame)的数据单元,这些帧在网络中通过电缆或无线电信号传输,从一个设备发送到另一个设备。
二、以太网帧格式
以太网的帧格式如下:
帧头+载荷+帧尾
补充:
MAC地址,即Media Access Control,是分配给网络接口(如计算机网卡,路由器,交换机,手机等)的一种唯一的物理地址,用于标识网络设备的的硬件物理地址,并确保数据能正确地发送到目标设备。
MAC地址的基本特点:
- 唯一性:每个MAC地址在全球范围内都是唯一的,通常由网络设备制造商为每个设备分配。这确保了在同一网络中,每个设备都有唯一的标识符。
- 硬件地址:MAC地址是在硬件层(数据链路层)使用的地址,与网络协议栈的更高层(如IP地址)不同。MAC地址直接与网络接口设备的硬件相关。
- 不可更改性:通常情况下,MAC地址是硬件烧录在设备的网卡中的,设备启动时自动加载该地址。然而,部分设备允许用户修改MAC地址。
MAC地址的结构:
MAC地址通常由6个字节(48位)组成,通常以16进制形式表示。它的标准表示形式是6组两位的十六进制数字,每组之间用冒号(:)或连字符(-)分分隔。例如:00:1A:2B:3C:4D:5E或00-1A-2B-3C-4D-5E。
MAC地址与IP地址的区别:
回到图中:
- 源地址和目的地址在补充中已经有了;
- 帧协议类型字段有三种值的情况,分别对应IP,ARP,RARP,一个以太网数据帧只能承载一种类型的值;
- 帧末尾是CRC校验码。
三、认识MTU
MTU,Maximum Transmission Unit,最大传输单元,是指网络中某一链路(如以太网、Wi-Fi等)上,能够传输的最大数据报大小。相当于发快递时包裹尺寸的限制,这个限制是由不同的数据链路对应的物理层产生的限制。
- 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据报的长度不够46字节,要在后面补填充位;
- 最大值1500称为以太网的最大传输单位(MTU),不同的网络类型有所不同的MTU;
- 如果一个数据包从以太网路由到拨号链路上,数据报长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
- 不同的数据链路层标准的MTU是不同的。
MTU对IP协议的影响
由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。
- 将较大的IP包分成多个小包,并给每个小包打上标签;
- 每个小包IP协议头的16为标识(id)都是相同的;
- 每个小包的IP协议头的3位标志字段中,第2位置为0,允许分片,第3位来表示结束标记(判断当前是否是最后一个小包,是的话为1,否则为0);
- 到达对端时再将这些小包按顺序重组,拼装一起返回给传输层;
- 一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不负责重新传输数据。
- 第二位置为1,表示于网络层禁止分片,这时候如果到了数据链路层,报文长度超过MTU,IP模块就会丢弃报文。
MTU对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字节变长选项中。
四、ARP协议
这里简单的介绍一下ARP协议,但是,ARP不是一个单纯的数据链路层的协议,而是介于数据链路层和网络层之间的协议。
ARP协议的作用
ARP协议建立了主机IP地址和MAC地址的映射关系。
在网络通信中,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机硬件的MAC地址;
数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据报的硬件地址与本机不符合,则丢弃;
因此在通信前必须获得目的主机硬件的MAC地址。
ARP协议的工作流程
ARP协议的作用是为了获取目的地址的MAC地址。
解释:
- 源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(让同一网段的设备都能收到这个请求)(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF,表示广播)。
- 目的主机接收到广播ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中;
- 每台主机都维护一个ARP缓存表(存储了IP地址和MAC地址的映射关系),可以用arp-a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用这个表项,则表项失败,下次还要发ARP请求来获得目的主机硬件的MAC地址。