当前位置: 首页 > news >正文

Linux网络 数据链路层

在Linux网络中,数据链路层位于物理层之上,网络层之下,其主要职责是将网络层的IP数据包封装成帧,并通过物理链路发送到目标设备。同时,它还负责接收来自物理层的帧,并将其解封装为数据包,传递给网络层。在Linux网络中,最常见的数据链路层协议是以太网协议(Ethernet)。

以太网

以太网是一种局域网技术,用于在有限范围内(如办公室、校园或企业内部)连接计算机、服务器、打印机等设备。它通过物理介质(如双绞线、光纤)传输数据,并使用特定的协议和帧格式来组织数据传输。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等。

以太网帧格式

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

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

MAC 地址

MAC 地址是网络设备的唯一标识符,用来识别数据链路层中相连的节点。其在网卡出厂时就确定了, 不能修改。其长度为 48 位, 即 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。

以表格展示了MAC地址和IP地址的主要区别:

特性MAC地址IP地址
定义数据链路层的物理地址,用于标识网络设备。网络层的逻辑地址,用于标识设备在网络中的位置。
地址长度48位,通常以12位十六进制数表示如00:1A:2B:3C:4D:5EIPv4:32位(4字节),以点分十进制表示(如192.168.1.1)IPv6:128位,以冒号分隔的八组四位十六进制数表示(如2001:0db8:85a3::8a2e:0370:7334)。
作用范围局域网内(LAN),不会跨越路由器。可跨越局域网、广域网和互联网,通过路由器转发。
分配方式由IEEE分配给制造商,烧录到硬件中,通常不可更改。由网络管理员或自动分配服务(如DHCP)分配,可更改。
传输单位数据帧(Frame),用于同一局域网内的通信。数据包(Packet),用于跨网络的通信。
设备识别用于同一局域网内的设备识别。用于跨网络的设备识别。
IP 地址描述的是路途总体的起点和终点, MAC 地址描述的是路途上的每一个区间的起点和终点。

MTU

MTU(Maximum Transmission Unit,最大传输单元)是指网络中能够传输的单个数据包的最大字节数,它是数据链路层的概念,用于限制链路层一次性转发的数据帧的最大尺寸。

以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,即 MTU 为 1500,ARP 数据包的长度不 够 46 字节,要在后面补填充位。不同的网络类型有不同的 MTU,如无线网络 MTU 为1492,蓝牙 MTU 为672.

由于数据链路层 MTU 的限制, 对于较大的 IP 数据包要进行分包。IP 协议格式如下:

将较大的 IP 包分成多个小包, 并给每个小包打上标签每个小包 IP 协议头的 16 位分片标识都是相同的每个小包的 IP 协议头的 3 位标志字段中, 2 位置为 0, 表示允许分片, 3 位来表示结束标记(当前是否是最后一个小包, 是的话置为 1, 否则置为 0)。

到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是 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.
使用 ifconfig 命令 , 即可查看 ip 地址 , mac 地址 , MTU:

ARP 协议

ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,工作在 数据链路层和网络层之间,用于将IP地址解析为对应的MAC地址。
在网络通讯时, 源主机的应用程序知道目的主机的 IP 地址和端口号 , 却不知道目的主机的硬件地址;
数据包首先是被网卡接收到再去处理上层协议的, 如果接收到的数据包的硬件地址与本机不符, 则直接丢弃。
所以在以太网中,设备需要知道目标设备的MAC地址才能传输数据,而ARP协议通过广播机制实现IP地址到MAC地址的映射。

ARP 数据报的格式

  • 注意到源 MAC 地址、目的 MAC 地址在以太网首部和 ARP 请求中各出现一次, 对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的
  • 硬件类型指链路层网络类型,1 为以太网
  • 协议类型指要转换的地址类型,0800 为 IP 地址,0806为 ARP 协议,0835 为 RARP 协议

  • 硬件地址长度对于以太网地址为 6 字节
  • 协议地址长度对于和 IP 地址为 4 字节
  • op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答

ARP协议的工作原理

ARP协议的工作流程主要包括以下步骤:

步骤操作
1. 查询缓存发送设备(如主机A)首先在本地ARP缓存中查找目标设备(如主机B)的MAC地址。如果找到,则直接使用该MAC地址发送数据。
2. 发送ARP请求如果缓存中没有目标设备的MAC地址,主机A会广播一个ARP请求报文。该报文包含主机A的IP和MAC地址,以及目标设备的IP地址,MAC地址填 FF:FF:FF:FF:FF:FF,op填1。
3. 接收并响应网络中的所有设备都会收到ARP请求,但只有目标设备(主机B)会响应。主机B会发送一个ARP响应报文,包含其MAC地址,op填2。
4. 更新缓存主机A收到ARP响应后,将目标设备的IP和MAC地址映射关系存储到ARP缓存中,以便后续通信。
5. 数据传输主机A使用目标设备的MAC地址将数据封装到以太网帧中,并发送给目标设备。
每台主机都维护一个 ARP 缓存表 , 可以用 arp -a 命令查看。缓存表中的表项有过期时间( 一般为 20 分钟 ), 如果 20 分钟内没有再次使用某个表项 , 则该表项失效 , 下次还要发 ARP 请求来获得目的主机的硬件地址。

相关文章:

  • StableDiffusion打包 项目迁移 项目分发 1
  • 《深度学习实战》第5集:生成对抗网络(GAN)与图像生成
  • 矩阵系列 题解
  • Spring的@Configuration注解:深入解析与实战指南
  • spring--ApplicationContext和BeanFactory的区别(源码)
  • MYSQL数据库创建命令
  • 深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限
  • MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置
  • 电路中如何计算电容容值大小
  • 013作用域
  • php特性
  • c++ 中的容器 vector 与数组 array
  • wzl-django学习
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_buf_t
  • MAVEN的安装和配置指南【超详细】
  • 《Web安全渗透测试实战:DVWA靶场全关卡通关指南(高/中/低/不可能级别)|手把手教你掌握漏洞挖掘与渗透技巧》
  • 图像仿射变换
  • 计算机黑皮书191本分享pdf
  • 卷积神经网络(cnn,类似lenet-1,八)
  • ETL系列-数据抽取(Extract)
  • vps如何做网站步骤/国内网络营销公司排名
  • 住房公积金网站怎么做减员/产品营销
  • 自己做网站能宣传自己的产品吗/建一个自己的网站
  • 安徽华夏网站建设/seo
  • 免费网站建设平台哪个好/网店运营工作内容
  • 中国建设银行公积金网站/baidu com百度一下