【Linux】数据链路层

目录

一、数据链路层

二、认识以太网

[2.1 以太网帧格式](#2.1 以太网帧格式)

[2.2 认识MAC地址](#2.2 认识MAC地址)

[2.3 对比理解MAC地址和IP地址](#2.3 对比理解MAC地址和IP地址)

[2.4 认识MTU](#2.4 认识MTU)

[2.5 MTU对IP协议的影响](#2.5 MTU对IP协议的影响)

[2.6 MTU对UDP协议的影响](#2.6 MTU对UDP协议的影响)

[2.7 MTU对TCP协议的影响](#2.7 MTU对TCP协议的影响)

三、ARP协议

[3.1 ARP协议的作用](#3.1 ARP协议的作用)

[3.2 ARP协议的工作流程](#3.2 ARP协议的工作流程)

[3.3 ARP数据报的格式](#3.3 ARP数据报的格式)


一、数据链路层

用于两个设备(同一种数据链路节点)之间进行传递。

二、认识以太网

  • "以太网"不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等。
  • 例如以太网中的网线必须使用双绞线,传输速率有10M,100M,1000M等。
  • 以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等。

2.1 以太网帧格式

以太网的帧格式如下所示:

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,在网卡出厂时固定的。
  • 帧协议类型字段有三种值,分别对应IP,ARP,RARP。
  • 帧末尾是CRC校验码。

2.2 认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点。
  • 长度为48位,即6个字节。一般用16进制的数字加上冒号来表示(例如:35:00:3c:79:10:3b)
  • 在网卡出厂时就确定了,不能修改。MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户自己配置MAC地址)。

2.3 对比理解MAC地址和IP地址

  • IP地址描述的是路途总体的起点和终点。
  • MAC地址描述的是路途上的每一个区间的起点和终点。

2.4 认识MTU

MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路层对应的物理层,产生的限制。

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。
  • 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同MTU。
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片。
  • 不同的数据链路层标准的MTU是不同。

2.5 MTU对IP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行分片。

  • 将较大的IP包分成多个小包,并给每个小包打上标签。
  • 每个小包IP协议头的 16位标识(id) 都是相同的。
  • 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位表示结束标志(当前是否是最后一个包,是的话置为1,否则置为0)。
  • 到达对端时再将这些小包,按顺序重组,拼装到一起返回给传输层。
  • 一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是IP层不会负责重新传输数据。

2.6 MTU对UDP协议的影响

让我们回顾一下UDP协议:

  • 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。
  • 这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着,如果UDP数据报在网络层被分片,整个数据报被丢失的概率会大大增加。

2.7 MTU对TCP协议的影响

让我们再回顾一下TCP协议:

  • TCP的一个数据报也不能无限大,还是受制于MTU。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size)。
  • TCP在建立连接的过程中,通信双方会进行MSS协商。
  • 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然受制于数据链路层的MTU)。
  • 双方在发送SYN的时候会在TCP头部写入自己能支持MSS值。
  • 然后双方得知对方的MSS值之后,选择较小的作为最终MSS值。
  • MSS的值就是在TCP首部的40字节变长选项中(kind=2)。

MSS和MTU的关系:

查看硬件地址和MTU

使用ifconfig命令,即可查看IP地址,MAC地址和MTU。

三、ARP协议

虽然我们在这里介绍ARP协议,但是需要强调,ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层的协议。

3.1 ARP协议的作用

ARP协议建立了主机IP地址 和 MAC地址的映射关系。

  • 在网络通讯时,源主机的应用程序知道目的主机的IP和端口号,却不知道目的主机的硬件地址。
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。
  • 因此在通讯前必须获得目的主机的硬件地址。

3.2 ARP协议的工作流程

  • 源主机发出ARP请求,询问"IP地址=172.20.1.2的主机的硬件地址是多少",并将这个请求广播到本地网段(以太网帧首部的硬件地址填写FF:FF:FF:FF:FF:FF表示广播)。
  • 目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
  • 每个主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

3.3 ARP数据报的格式

  • 注意到源MAC地址,目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但是如果链路层是其他类型的网络则有可能是必要的。
  • 硬件类型指链路层网络类型,1为以太网。
  • 协议类型指要转换的地址类型,0x0800为IP地址。
  • 硬件地址长度对于以太网地址是6字节。
  • 协议地址长度对于IP地址是4字节。
  • op字段为1表示ARP请求,op字段为2表示ARP应答。
相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush44 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 天前
Linux 11 动态监控指令top
linux