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

💓博主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.rhkb.cn/news/369057.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从硬件角度看Linux的内存管理

1. 分页机制 分段机制的地址映射颗粒度太大,以整个进程地址空间为单位的分配方式导致内存利用率不高。 分页机制把这个分配机制的单位继续细化为固定大小的页(Page),进程的虚拟地址空间也按照页来分割,这样常用的数据和代码就可以以页为单位…

uniapp中实现跳转链接到游览器(安卓-h5)

uniapp中实现跳转链接到游览器(安卓-h5) 项目中需要做到跳转到外部链接,网上找了很多都不是很符合自己的要求,需要编译成app后是跳转到游览器打开链接,编译成web是在新窗口打开链接。实现的代码如下: 效果&…

某安全公司DDoS攻击防御2024年6月报告

引言: 在2024年6月,网络空间的安全挑战汹涌澎湃。分布式拒绝服务(DDoS)攻击频发,针对云服务、金融科技及在线教育平台的精密打击凸显出当前网络威胁环境的严峻性。 某安全公司作为网络安全防护的中坚力量&#xff0c…

QT5.12环境搭建与源码编译

一、概述 QT版本:QT5.12.10 Qt网址:http://download.qt.io/archive/qt/ 编译平台 ubuntu18.04 二、安装交叉编译工具链 1、获取交叉编译工具链 一般如果是编译系统如果有对应的gcc 就是用这个就可以了 比如rk3128 lin…

Vue 详情实战涉及从项目初始化到功能实现、测试及部署的整个过程

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

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

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

震惊!张宇25版高数18讲发布,656页惹争议!

这个张宇老师在微博已经解释过了! 我觉得张宇老师本意是好的,在考研数学教学创新这方面,他真的有自己的思考。 他为什么要这么做? 其实作为一个考研高数老师,他完全可以像其他老师一样,什么都不做&#x…

武汉免费 【FPGA实战训练】 Vivado入门与设计师资课程

一.背景介绍 当今高度数字化和智能化的工业领域,对高效、灵活且可靠的技术解决方案的需求日益迫切。随着工业 4.0 时代的到来,工业生产过程正经历着前所未有的变革,从传统的机械化、自动化逐步迈向智能化和信息化。在这一背景下&…

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法 0. 引言1. 关于m_track2. 关于m_range_ring3. 关于m_ellipse4. 关于m_windrose5. 结语 0. 引言 本篇介绍下m_map中绘制航迹图函数(m_track)、绘…

Redis深度解析:核心数据类型与键操作全攻略

文章目录 前言redis数据类型string1. 设置单个字符串数据2.设置多个字符串类型的数据3.字符串拼接值4.根据键获取字符串的值5.根据多个键获取多个值6.自增自减7.获取字符串的长度8.比特流操作key操作a.查找键b.设置键值的过期时间c.查看键的有效期d.设置key的有效期e.判断键是否…

AI绘画Stable Diffusion 新手入门教程:万字长文解析Lora模型的使用,快速上手Lora模型!

大家好,我是设计师阿威 今天给大家讲解一下AI绘画Stable Diffusion 中的一个重要模型—Lora模型,如果还有小伙伴没有SD安装包的,可以看我往期入门教程2024最新超强AI绘画Stable Diffusion整合包安装教程,零基础入门必备&#xff…

项目基础知识

1.JDBC编程和MySQL数据库 数据库的连接(以前写qq项目时的代码) package com.wu.Util; import java.sql.*; public class JDBCUtil {private static JDBCUtil jdbcUtil null;private JDBCUtil() {}public static JDBCUtil getJdbcUtil() {if (jdbcUtil…

超融合服务器挂载硬盘--linux系统

项目中需要增加服务器的硬盘容量,通过超融合挂载了硬盘后,还需要添加到指定的路径下,这里记录一下操作步骤。 一:通过管理界面挂载硬盘 这一步都是界面操作,登录超融合控制云台后,找到对应的服务器&#…

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)

文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…

Websocket通信实战项目(图片互传应用)+PyQt界面+python异步编程(async) (上)服务器端python实现

Rqtz : 个人主页 ​​ 共享IT之美,共创机器未来 ​ Sharing the Beauty of IT and Creating the Future of Machines Together 目录 项目背景 ​编辑​专有名词介绍 服务器GUI展示 功能(位置见上图序号) 客户端GUI展示(h5cssjs&#xf…

固相提取铕和铀

固相萃取(Solid Phase Extraction,SPE)是一种常用的化学分离技术,它利用固体吸附剂(固定相)与样品中的目标化合物(流动相)之间的相互作用力,将目标化合物从样品中分离出来…

[Redis]哨兵机制

哨兵机制概念 在传统主从复制机制中,会存在一些问题: 1. 主节点发生故障时,进行主备切换的过程是复杂的,需要人工参与,导致故障恢复时间无法保障。 2. 主节点可以将读压力分散出去,但写压力/存储压力是无法…

python 发布应用程序包

文章目录 发布python包toml配置文件构建发布python包 官方文档参考 将自己的python项目发布成源码包或者wheel二进制包,供其他开发者使用。 方式: 使用py工具; distutils,该工具的使用已过时;setuptools,常用方式;wheel,在setuptools的基础上添加了 bdist_wheel, …

图形的搭建

例一: 输入描述: 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。 输出描述: 针对每行输入,输出用“*”组成的X形图案。 示例一&…

智能合约与企业数字化转型:案例分析与未来展望

随着区块链技术的快速发展,智能合约作为其重要应用之一,正逐渐成为推动企业数字化转型的关键工具。智能合约不仅可以自动执行和验证合同,还能够增强数据安全性、优化业务流程,并提升企业间的信任和透明度。本文将深入探讨智能合约…