您现在的位置是:首页 > 编程 > 

【Linux网络编程】数据链路层

2025-07-23 17:04:23
【Linux网络编程】数据链路层 数据链路层数据链路实现某一区间(一条)内的通信,而IP实现直至最终目标地址的通信(点对点)。跨网络的本质是经历不同的子网,也就是说子网之间的转发。因此跨网络转发先要保证同一个网段(局域网)相互之间先要实现转发。以太网什么是以太网“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构,

【Linux网络编程】数据链路层

数据链路层

数据链路实现某一区间(一条)内的通信,而IP实现直至最终目标地址的通信(点对点)。

跨网络的本质是经历不同的子网,也就是说子网之间的转发。因此跨网络转发先要保证同一个网段(局域网)相互之间先要实现转发。

以太网

什么是以太网

“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等。

以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LA 等。

以太网帧格式

源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址), 长度是 48 位,是在网卡出厂时固化的;

帧协议类型字段有三种值,分别对应 IP、 ARP、 RARP;

帧末尾是 CRC 校验码。

  1. 如何解包 以太网报头是一个固定的,前面14个字节去掉以及最后4个字节去掉就是数据内容
  2. 如何封装 直接加上对应的字段即可
  3. 如何分用 将有效载荷交给上层,以太网帧格式有一个类型字段,0800表示IP数据报,以及0806805

模拟局域网通信

主机A将报文发给主机G:首先主机A将报文发送到局域网中,此时所有的主机都可以接收到报文,以主机B为例,主机B在局域网上接收到主机A的报文,在数据链路层进行分用,读取到到的目的地址是主机G,因此主机B不会在再向上层交付,其余的主机也和主机B相似。

一般只允许一台主机往局域网中发送消息,如果多个主机发送信息,就会使得信息混乱,这个就是局域网中数据碰撞。此时需要执行碰撞避免算法:各自休眠上随机时间,这个时候别的主机可以发送。经过碰撞避免就减少了两个主机同时发送信息的概率。我们认为一个局域网就是一个碰撞域

站在系统角度理解局域网:局域网被每一台主机共享,因此局域网是一个共享资源,任何时刻只保证一个主机在局域网中发送信息,这是临界资源,每一个主机的碰撞避免就保证该主机对临界资源的独占性

一个局域网主机越多好还是越少好?局域网中主机数越多,碰撞的概率会更大,每一个主机发送信息成功的概率就越低了。当一个局域网主机数目变多,就需要引入一个设备交换机

一个主机发送的报文每一个主机都能收到,数据链路层等代码也是公开的,因此就需要在应用层进行加密。

交换机

交换机是一个工作在数据链路层的局域网设备,会把一个局域网划分两个区域。

交换机内部会记录两个区域的主机mac地址信息,这样可以实现一个大的碰撞域划分成两个小的碰撞域。

因此,交换机的作用是划分碰撞域,减少碰撞概率。

ARP协议

ARP 不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议

作用

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

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

ARP协议工作流程

源主机发出 ARP 请求,询问“IP 地址是 192.168.0.1 的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示广播)。

目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中。

每台主机都维护一个 ARP 缓存表,可以用arp -a命令查看。 缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址。

数据报报文格式

  • 硬件类型指链路层网络类型,1 为以太网;
  • 协议类型指要转换的地址类型,0x0800 为 IP 地址;
  • 硬件地址长度对于以太网地址为 6 字节;
  • 协议地址长度对于和 IP 地址为 4 字节;
  • op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-1,如有侵权请联系 cloudcommunity@tencent 删除linuxmac数据网络编程协议

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1179628.html

相关标签:无
上传时间: 2025-07-22 00:25:18
留言与评论(共有 17 条评论)
本站网友 好看的网站
15分钟前 发表
下次还要发 ARP 请求来获得目的主机的硬件地址
本站网友 引领发展的第一动力
0秒前 发表
经过碰撞避免就减少了两个主机同时发送信息的概率
本站网友 什么牌子的dha好
5分钟前 发表
在数据链路层进行分用
本站网友 乳房健康
4分钟前 发表
以太网什么是以太网“以太网” 不是一种具体的网络
本站网友 医疗美容技术专业
18分钟前 发表
前面14个字节去掉以及最后4个字节去掉就是数据内容 如何封装 直接加上对应的字段即可 如何分用 将有效载荷交给上层
本站网友 南昌翻译公司
6分钟前 发表
规定了网络拓扑结构
本站网友 黄岛长途汽车站
7分钟前 发表
一个局域网主机越多好还是越少好?局域网中主机数越多
本站网友 联通首页
6分钟前 发表
也包含了一些物理层的内容. 例如
本站网友 四方坪租房
25分钟前 发表
一个局域网主机越多好还是越少好?局域网中主机数越多
本站网友 购车费用计算
19分钟前 发表
主机B在局域网上接收到主机A的报文
本站网友 验资流程
30分钟前 发表
减少碰撞概率
本站网友 刷屏金箍棒
10分钟前 发表
数据链路层等代码也是公开的
本站网友 十拿九稳
5分钟前 发表
规定了网络拓扑结构
本站网友 白骨精见了孙悟空
2分钟前 发表
缓存表中的表项有过期时间(一般为 20 分钟)
本站网友 宝石公园
3分钟前 发表
因此局域网是一个共享资源
本站网友 jeep男装官网
16分钟前 发表
读取到到的目的地址是主机G