【linux网络(七)】数据链路层详解

news2024/11/16 13:36:41

💓博主CSDN主页:杭电码农-NEO💓

⏩专栏分类:Linux从入门到精通⏪

🚚代码仓库:NEO的学习日记🚚

🌹关注我🫵带你学更多操作系统知识
  🔝🔝


Linux网络

  • 1. 前言
  • 2. 认识MAC地址
  • 3. 认识以太网
  • 4. ARP协议详解
  • 5. DNS技术
  • 6. 总结以及拓展

1. 前言

如果说网络层解决的是数据从A主机发到B主机的问题, 那么数据链路层解决的就是数据从当前路由器转发给下一台路由器的问题.

本章重点:

本篇文章会讲解以太网协议, MTU对上层协议的影响, ARP协议, DNS技术等. 本篇文章结束, 标志着对整个Linux网络的认知学习就结束了


2. 认识MAC地址

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

通俗来讲, 拿唐僧西天取经的例子来说, IP地址代表, 唐僧从东土大唐要到西天去, 东土大唐和西天就是两个IP地址, 而从东土大唐到西天, 途中会经过火焰山, 狮驼岭, 女儿国, 盘丝洞等地方, 从火焰山到狮驼岭, 这其中火焰山和狮驼岭可以理解为MAC地址, 是真实路由时需要经过的地点(网络中对应路由器)

下面的以太网的目的地址, 其实就是下一跳的MAC地址


3. 认识以太网

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

宏观上, 网络的本质就是一个一个局域网构成的

以太网的格式:

在这里插入图片描述

我们注意到, 数据的大小最大只能是1500字节, 是不是很熟悉? 没错, 在网络层讲解IP协议时说过, 数据链路层一次性最大只能带1500字节的数据, 所以上层会有分片操作, 首尾呼应

局域网通信原理:

在这里插入图片描述

在局域网通信中, H1主机向H6主机发送信息时, 会直接将数据扔在局域网中(可以理解为上图的横线), 也就是说在这个局域网中, 不仅仅H6会收到H1发来的数据, H2,3,4,5,甚至是H1自己也会收到, 但是在数据链路层解包后, 发现目的MAC地址并不是本机, 这些机器会自动丢弃这些数据, 所以说最后只有H6的数据会被交付到上层. 不仅如此, 局域网中若多态主机都在发送数据, 数据之间就会发送碰撞, 一旦发送碰撞, 数据就不能再使用了

数据链路层转发过程::

在这里插入图片描述

一旦一份数据的MAC地址不在本局域网, 它会通过路由器被转发到其他局域网, 一直如此, 直到找到目标IP地址机器才会停下. 所以说, 在网络转发中, 目的IP地址不变, 但是每一次转发时的mac帧报头会发送改变, 因为你的下一跳的MAC地址是会一直变化的. 但是任意一台主机都暂时无法得知下一跳的MAC地址, 如果不知道下一跳的MAC地址也就无法封装mac帧(由ARP协议解决)


4. ARP协议详解

先明确一点:
ARP协议建立的主机IP地址和MAC地址的映射关系, 在同一网段中, 需要通过目的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请求来获得目的主机的硬件地址

广播就是在局域网中扔一个数据, 只有特定的机器才会解析此数据, 并且对这个广播做出回应

ARP数据报的格式

在这里插入图片描述

其实聪明的你一定发现了, 当数据从主机A进入到主机B所在的局域网时, 由于局域网通信只看MAC地址, 所以你只知道对方的IP地址是没用的! 所以在通信前, 主机A会先发送一个广播, 得知对方的MAC地址, 之后再进行通信时, 只要数据传输到主机B所在的局域网, 就能直接将数据发给B. 除此之外, ARP协议分为请求和应答, 这个也很好理解, 当一台主机收到一个广播时, 一定会先查看是对方返回的应答(里面存放对方MAC地址),还是有其他机器给你发的请求(代表其他主机想给你发数据)


5. DNS技术

你好不好奇, 为什么在搜索栏输入QQ会跳转到QQ官网? 你并没有输入URL, 怎么做到的?答案是: DNS(Domain Name System),是一整套从域名映射到IP的系统

在这里插入图片描述

  • 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.
  • 如果新计算机接入网络, 将这个信息注册到数据库中;
  • 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.\

计算机上仍然保留了hosts文件. 域名解析过程会优先查找hosts文件的内容.

cat /etc/hosts

在这里插入图片描述


6. 总结以及拓展

其实作为学习后端开发的在校生, 数据链路层的内容了解到这种程度已经很不错了, 对于Linux网络的宏观学习就到此为止了, 其实你要细究网络的细节, 还是有很多值得学习的东西的, 比如说NAT,NAPT技术, 代理服务器, ICMP协议等. 这里就交给大家自己探索了.

还有一点, 面试时经常会问: 浏览器中输入url后, 发生的事情, 这里大家可以自己总结总结. 详情可以参考这篇文章: 浏览器输入URL后发生的事


🔎 下期预告:高级IO讲解 🔍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1884911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++视觉开发 三.缺陷检测

一.距离变换 1.概念和功能 距离变换是一种图像处理技术,用于计算图像中每个像素到最近的零像素(背景像素)的距离。它常用于图像分割、形态学操作和形状分析等领域。它计算图像中每个像素到最近的零像素(背景像素)的距…

CAM350删除铺铜?

CAM350删除铺铜? 1、选择菜单栏Add 2、选择Polygon Void→Line... 3、然点击需要操作的铜箔,使其高亮 4、用鼠标框选需要删除的部分,然后右击 5、删除后如下图所示 The Layer Bar controls are part of the new Navigation Pane and can also…

dledger原理源码分析系列(一)-架构,核心组件和rpc组件

简介 dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的架构,核心组件;rpc组…

MySQL 9.0创新版发布!功能又进化了!

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…

Runway:Gen-3 Alpha 文生视频现已开放

Runway 自 6 月 17 号公布 Gen-3 Alpha 快半个月了, 现在终于对所有人开放了,当然前提是你至少订阅了标准版(12 美刀/月), 传送门:runwayml.com

【CSS in Depth 2 精译】2.3 告别像素思维

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力 2.1.1 响应式设计的兴起 2.2 em 与 rem 2.2.1 使用 em 定义字号2.2.2 使用 rem 设置字号 2.3 告别像素思维 ✔️2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 2.3 告别…

电脑IP地址自动获取:操作指南与优势分析

在数字化时代,网络连接已成为我们日常生活和工作中的重要组成部分。而在建立网络连接的过程中,IP地址的设置无疑是至关重要的一环。IP地址,作为网络设备的唯一标识,其设置方式直接影响到网络的稳定性和安全性。本文将详细介绍如何…

充气膜羽毛球馆投资需要多少钱—轻空间

充气膜羽毛球馆是一种现代化的运动设施,以其灵活的结构设计和高效的能耗管理受到广泛关注。投资建设一个充气膜羽毛球馆,涉及多个方面的成本,包括基础建设、膜材选择、系统配置以及运营维护费用。轻空间将详细分析投资建设充气膜羽毛球馆的成…

如何在OpenEuler 上快速部署一套Zabbix7.0监控系统

如何在OpenEuler 上快速部署一套Zabbix监控系统 一、环境信息 用途机器IP操作系统备注zabbix-server172.22.33.180openeuler 22.03 LTS SP37.0 LTS 版本,容器部署zabbix-agent172.16.10.182openeuler 22.03 LTS SP37.0 源码编译部署 二、Docker 部署 2.1 二进制…

一场前端框架的“武林大会”,三大主流框架之间的性能比较!!!

大家好,我是CodeQi! 在前端开发的江湖中,Vue.js、React 和 Angular 可谓是三大门派,个个身怀绝技,堪称“武林三杰”。 我,作为一名勤奋的代码侠士,决定深入研究这三大门派的奥义,探讨它们在性能方面的表现。且听我细细道来。 什么是 Vue? Vue.js 是由尤雨溪创建的前…

pdf合并工具,pdf合并器,多个pdf合并成一个pdf

你是否有过这样的困扰:手头上有好几个pdfF文档,需要将它们合并成一个单一的文件,但却不知道从何下手?别担心,这篇文章将为你揭秘多个pdf合并成一个pdf的方法,让你轻松实现pdf文档整合的问题! 首…

JDBC1(JDBC相关类与接口 ​连接mysql数据库​ 测试 不同数据库厂商实现-MySQL和Oracle)

目录 一、JDBC 1. JDBC相关类与接口 1.1 DriverManager 1.2 Connection 1.3 Statement 4.ResultSet 2. JDBC工作原理 二、连接mysql数据库 1. 导入jar包 2. 使用DriverManager加载驱动类 3. Connection接口 4. Statement接口 5. ResultSet接口 ​编辑 6. 关闭并…

Drools开源业务规则引擎(一)- 安装与介绍

文章目录 [toc] Drools开源业务规则引擎(一)- 安装与介绍0.何为规则引擎1.Drools介绍1.1.依赖模块1.2.规则引擎 2.Drools安装2.1.依赖导入2.2.规则的输入和输出类型输入类型输出类型 2.3.创建规则文件2.4.构建可执行规则库2.5.执行结果: 3.Dr…

CesiumJS【Basic】- #040 绘制渐变线(Primitive方式)

文章目录 绘制渐变线(Primitive方式)1 目标2 代码2.1 main.ts绘制渐变线(Primitive方式) 1 目标 使用Primitive方式绘制渐变线 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer

【ubuntu18.04】 局域网唤醒 wakeonlan

ai服务器经常因为断电,无法重启,当然可以设置bios 来电启动。 这里使用局域网唤醒配置。 自动开关机设置 工具:ethtool 端口 : enp4s0 Wake-on: d 表示禁用Wake-on: g 激活 ,例如:ethtool -s eth0 wol g 配置/etc/rc.local ,这个文件不存在,自己创建工具下载 tengxun W…

机器学习项目-基于随机森林的航空公司用户满意度分析

摘要 ​ 航空旅行是人们出行的常用方式之一,乘客对于航空公司的服务质量有着较高的要求。满意度是衡量服务质量的重要指标,因此预测航空公司乘客的满意度对于提高服务质量具有重要意义。 ​ 近年来,机器学习在预测领域得到了广泛应用。机器…

机器人入门路线及参考资料(机器人操作方向)

机器人(操作方向)入门路线及参考资料 前言1 数理基础和编程2 机器人学理论3 计算机视觉4 机器人实操5 专攻方向总结Reference: 前言 随着机器人和具身智能时代的到来,机器人越来越受到大家的重视,本文就介绍了机器人(…

基于公有云部署wordpress

云平台选择 腾讯云 阿里云 华为云 项目部署 一、架构讲解 1.1、定义与组成 LNMP是Linux、Nginx、MySQL(或MariaDB)和PHP(或Perl、Python)的首字母缩写,代表在Linux系统下使用Nginx作为Web服务器,MySQL作为…

vue3 elementplus Springboot 商品系统,商城类后台管理案例源码

系统演示 项目获取地址 Springboot vue3 elementplus 商品管理系统 商城后台管理系统案例源码 附带系统演示,环境搭建教程,开发工具 技术栈:SpringBoot Vue3 ElementPlus MybatisPlus 开发工具:idea 后端构建工具:Maven 前端构建工具:vite 运行环境:Windows …

Linux基础IO操作详解

C文件IO相关接口 fopen函数 pathname: 要打开的文件名字符串mode: 访问文件的模式 模式描述含义“r”读文件不存在失败返回null“r”读写文件不存在打开失败返回null,文件存在则从头开始覆盖现有的数据(不会清空数据)“w”写文件不存在创建…