Linux之数据链路层

Linux之数据链路层

  • 一.以太网
    • 1.1以太网帧格式
    • 1.2MAC地址
    • 1.3MTU
  • 二.ARP协议
    • 2.1ARP协议工作流程
    • 2.2ARP协议格式
  • 三.NAT技术
  • 四.代理服务
    • 4.1正向代理
    • 4.2反向代理
  • 五.四大层的学习总结

一.以太网

在我们学习完了网络层后我们接下来就要进入数据链路层的学习了,在学习完网络层后我们知道网络层的作用是进行路径选择以及完成路由,但是无论是应用层,传输层还是网络层都没有完成我们数据传输中最重要的一环那就是传输数据,上三层分别提供了数据处理,可靠性保证,路径选择和完成路由而真正的数据传输环节就需要我们现在学的数据链路层来完成了。数据链路层不同于上三层可以由具体的某项协议完成而是由一系列的协议标准来实现的。例如我们今天会仔细说的以太网。我们要了解以太网不是一种具体的网络而是一种技术标准,以太网的内容结合了数据链路层和物理层。以太网是如今应用最广泛的互联网技术与其并列的有令牌环和无线LAN等。

1.1以太网帧格式

首先我们先来了解什么叫做以太网帧:把在数据报首部添加报头尾部添加检验和的新的报文整体叫做以太网帧。所以以太网帧中分为三部分:报头,正文和校验和。
在这里插入图片描述

  • 目的地址和源地址
    其中的地址代表的是网卡的硬件地址也就是MAC地址,占据了六个字节也就是48位。
  • 类型
    这里的类型指的是应用于帧数据字段的协议。类型占据了两个字节即8位
  • 校验和
    这里的校验和就和TCP协议IP协议中的校验和相同即利用CRC算法来检查数据报是否损坏。

对于数据链路层来说传输靠的就不是IP地址了而是MAC地址因为数据报是通过一个一个的子网传输到目的主机的而在一个子网中传输靠的就是MAC地址。

1.2MAC地址

对于MAC地址我们应该不陌生了在讲述协议的时候我们就提到过MAC地址的概念以及它和IP地址的区别,这里我们就来再次认识一下MAC地址。
MAC地址是来识别数据链路层中相连的节点也就是不同的主机或者路由器,MAC地址的长度是48位即6个字节,一般是用16进制以及符号:来进行分割例如:08:00:27:03:fb:19。对于MAC地址来说这是在我们电脑出厂之后就存储在网卡中的并且是唯一的。
对于MAC地址和IP地址的区别我们能理解,我们可以将IP地址当作出去旅游时的起始处和目的地例如我们要从北京到上海去,那么源IP地址就是北京目的IP地址就是上海。而MAC地址则是我们在路上具体是从哪个地方到哪个地方例如从北京到上海,最开始源MAC地址就是北京目的MAC地址是河北,到了河北后源MAC地址就是河北目的MAC地址是河南以此类推直到目的MAC地址是上海。所以IP地址是不变的,MAC地址是一直在发生变化的。
在这里插入图片描述
那么在了解了MAC地址后我们要知道MAC的作用就是完成局域网中的通信也就是完成一个子网中的通信,在局域网中一个主机想要发送数据给另外一个主机就必须通过MAC地址而不是IP地址。那么在这个通信的过程也会产生一些问题,我用图来给大家解释。
在这里插入图片描述
所以在进行局域网通信的时候局域网就相当于是一个"临界资源"因为局域网会被很多的主机来访问,那么我们就需要对这个临界资源进行保护也就是对局域网进行保护以免出现错误,例如如果局域网中同时有两台及以上的主机同时发送数据报那么这些数据报可能就会在碰撞域中发生碰撞从而造成数据报的损坏。
所以对于碰撞域也就是局域网来说任何时刻只允许一台主机向局域网中发送数据报否则就有可能产生碰撞问题。想要解决碰撞问题我们可以采用碰撞检测和碰撞避免以及划分碰撞域的方法。

1.3MTU

在讲述IP协议的分包时我们就提到过MTU即网络的最大传输单元也就相当于我们发快递时的包裹大小限制,MTU的数值是不同的数据链路层对应的物理层产生的。所以这个值是不固定的对于以太网帧来说它规定数据长度的最小值是47个字节最大值是1500个字节如果数据报的长度不够就需要往后面补充字节。MTU不仅会对IP协议产生影响也会对UDP,TCP协议产生影响。

对于UDP协议,我们需要让传输层的数据报的有效载荷不能超过1472因为UDP协议报头是8个字节,IP协议报头是20个字节这样最后刚好达到MTU。如果超过了有效载荷超过了1472那么这个数据报就会在网络层被分片。

对于TCP协议也是相同的,只是我们在讲述TCP协议时提到过TCP的数据报大小不能超过MSS也就是Max((Max Segment Size)所以这个MSS也受制于MTU的大小最好的情况就是MSS刚好是在网络层不会被分片的大小。同时我们知道TCP是有三次握手这个行为的在三次握手中双方会把自己的MSS大小写入到TCP协议的头部中从而进行协商MSS大小,在双方得到两方的MSS大小后会将较小的MSS值当作最终的MSS值。而这个协商的过程MSS大小就是存储在TCP协议那40个字节的选项中的。
如果我们想要查看自己机器的MTU大小我们可以使用ifconfig这个命令。
在这里插入图片描述

二.ARP协议

在知道了MAC地址是用于局域网之间通信的之后我们要思考一个问题了,在我们发送数据报时我们是用IP地址来定位目的主机的也就是说我们并不知道目的主机的MAC地址以至于我们无法完成局域网之间的通信,所以为了解决这个问题我们就要利用ARP协议。
ARP协议是一个存在于网络层和数据链路层之间的一个协议它的作用就是完成IP地址和MAC地址的映射关系从而可以让我们根据目的IP地址转换为目的MAC地址来实现局域网之间的通信。

2.1ARP协议工作流程

对于ARP协议是如何完成IP地址和MAC地址的映射的我们也需要来说道说道我们一样用图来解释
在这里插入图片描述
图中的这些询问以及回答MAC地址的数据报就是ARP请求和ARP响应,所以在进行局域网之间的通信时通信两方会利用ARP请求以及响应来得到双方的MAC地址从而构建出IP地址和MAC地址的映射关系。同时我们也可以从图出看出来一些细节:对于一个局域网中的主机来说它既可以接收ARP请求也可以接收ARP响应并且主机在接收到ARP结果后会将其暂时缓存起来直到超过规定的时间,在超过规定的时间后还想和ARP结果内存储的目的主机进行通信的话就需要再次发送ARP请求。

2.2ARP协议格式

ARP协议和其他协议一样也具有自己的格式,我们现在就来看看它的格式是什么样的。
在这里插入图片描述
对于这个数据报的格式其中很多的字段我们都是见过或者很容易就能理解的,所以我们就大致介绍并且解析其中的一些问题。

  1. 我们发现在以太网的头部以及ARP协议中都存在目的MAC地址和源MAC地址,这是因为以太网不是数据链路层唯一的一种方法,如果数据链路层是以太网的那么这样就是多余的但是如果数据链路层不是以太网的那么这种方法就是必须的了。
  2. 硬件类型是指数据链路层的网络类型,1为以太网
  3. 协议类型是指要转换的地址类型,0x0800为IP地址
  4. 硬件地址长度是数据链路层网络类型的地址长度,对于以太网来说是6字节
  5. 协议地址长度是转换的地址类型的地址长度,对于IP地址来说是4字节
  6. op字段则是标明是ARP请求还是响应,1是请求,2为响应。

三.NAT技术

在之前我们学习网络层的时候我们就提到过NAT技术,NAT技术产生的缘由就是为了解决IPv4数量不足的而NAT技术本身我们可以将其理解成一种互相转换私有IP和公有IP的方法。实现方法简单来说就是在NAT路由器有两个地址一个是私有地址也就是局域网内的IP地址一个是公有地址也就是公网内的IP地址,当局域网里有主机想要访问外网时路由器就会将其数据报中的源IP地址转换为公有IP地址,当外网服务器想要传输数据报到局域网内的主机时就会将数据报里的目的IP地址转换为对应的主机的私有地址。所有在NAT路由器中有着一张表其中存储着局域网内主机的私有IP地址和公有IP地址的映射关系来方便转换,并且这个表也是又路由器自己维护的。
在这里插入图片描述

这个处理逻辑只是最基础的NAT技术我们可以思考一个问题局域网内有多个主机它们的私有IP地址都不同但是路由器只有一个公有IP地址那么在外网的服务器传输数据报回来时路由器怎么知道是传输给哪个主机呢?这就要用到NAPT了也就是使用IP地址+端口号的方式,具体一点就是在路由器的地址转换表中不仅存储了局域网主机的IP地址也存储了对应的端口号。
在这里插入图片描述
NAT技术实实在在的缓解了IPv4地址数量不足的问题但是它也有其限制和弊端:

  1. 无法从NAT外部向内部服务器建立连接
  2. 地址转换表的创建和销毁都需要额外资源
  3. 通信过程中一旦NAT路由器设备出现问题那么所有的TCP连接都会出错

四.代理服务

在国内如果想要访问外网的资源我们需要进行翻墙也就是通过代理来访问外网资源。那么代理服务到底是如何实现的呢?
对于代理服务我们分为正向代理和反向代理,这两种代理方式运用场景以及原理都不同我们需要来一个一个说。

4.1正向代理

正向代理(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标
服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请
求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这
种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问
控制等。
简单来说正向代理就是在客户端和网络之间插入了一个新的代理服务器,客户端会先把请求发送到代理服务器上再由代理服务器将其转发给目的服务器,响应也是先发送到代理服务器上再转发到客户端上。
在这里插入图片描述
正向代理的功能特点:

  • 缓存功能:正向代理服务器可以缓存经常访问的资源,当客户端再次请求这些资
    源时,可以直接从缓存中获取,提高访问速度。
  • 内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、
    阻止恶意网站等。
  • 访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作
    时间访问娱乐网站。
  • 隐藏客户端身份:正向代理可以隐藏客户端的真实 IP 地址,保护客户端的隐私。
  • 负载均衡:在多个目标服务器之间分配客户端请求,提高系统的可扩展性和可靠
    性。

应用场景:

  • 企业网络管理:企业可以通过正向代理实现对员工网络访问的管理和控制,确保员工
    在工作时间内专注于工作,避免访问不良网站或泄露公司机密。
  • 公共网络环境:在公共场所如图书馆、学校等提供的网络环境中,通过正向代理可以
    实现对网络资源的合理分配和管理,确保网络使用的公平性和安全性。
  • 内容过滤与保护:家长可以通过设置正向代理来过滤不良内容,保护孩子免受网络上
    的不良信息影响。
  • 提高访问速度:对于经常访问的网站或资源,正向代理可以通过缓存机制提高访问速
    度,减少网络延迟。
  • 跨境电商与海外访问:对于跨境电商或需要访问海外资源的企业和个人,正向代理可
    以帮助他们突破网络限制,顺畅地访问海外网站和资源。

4.2反向代理

反向代理服务器是一种网络架构模式,其作为 Web 服务器的前置服务器,接收
来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回
给客户端。这种架构模式可以提升网站性能、安全性和可维护性等。
同样简单来说反向代理是在目的服务器和网络之间插入了一个新的服务器,当我们使用客户端向目的服务器传输数据时我们无法直接访问目的服务器而是要将数据先发送到反向代理服务器中再由它将数据转发到目的服务器中,响应也是先由目的服务器传输到反向代理服务器上再传输给客户端。听着好像和正向代理服务相似都是插入一个中间服务器但是其中的功效则完全不同,正向服务是为了保护客户端而反向服务则是为了保护服务器。
在这里插入图片描述
功能特点:

  • 负载均衡:反向代理服务器可以根据配置的负载均衡策略,将客户端的请求分发
    到多个后端服务器上,以实现负载均衡。这有助于提升网站的整体性能和响应速度,
    特别是在高并发场景下。
  • 安全保护:反向代理服务器可以隐藏后端 Web 服务器的真实 IP 地址,降低其被
    直接攻击的风险。同时,它还可以配置防火墙、访问控制列表(ACL)等安全策略,
    对客户端的请求进行过滤和限制,以保护后端服务器的安全。
    -缓存加速:反向代理服务器可以缓存后端 Web 服务器的响应内容,对于重复的
    请求,它可以直接从缓存中返回响应,而无需再次向后端服务器发起请求。这可以大
    大减少后端服务器的负载,提升网站的响应速度。
  • 内容过滤和重写:反向代理服务器可以根据配置的规则对客户端的请求进行过滤
    和重写,例如添加或删除请求头、修改请求路径等。这有助于实现一些特定的业务需
    求,如 URL 重写、用户认证等。
  • 动静分离:在大型网站中,通常需要将静态资源和动态资源分开处理。通过将静
    态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应,
    而无需再次向后端服务器发起请求。这可以大大提升静态资源的访问速度。
    应用场景:
  • CDN(Content Delivery Network,内容分发网络)就是采用了反向代理的原理

五.四大层的学习总结

  1. 应用层
  • 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
  • 能够根据自己的需求, 设计应用层协议
  • 了解 HTTP 协议
  • 理解 DNS 的原理和工作流程
  1. 传输层
  • 传输层的作用: 负责数据能够从发送端传输接收端.
  • 理解端口号的概念.
  • 认识 UDP 协议, 了解 UDP 协议的特点.
  • 认识 TCP 协议, 理解 TCP 协议的可靠性. 理解 TCP 协议的状态转化.
  • 掌握 TCP 的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延
    迟应答, 捎带应答特性.
  • 理解 TCP 面向字节流, 理解粘包问题和解决方案.
  • 能够基于 UDP 实现可靠传输.
  • 理解 MTU 对 UDP/TCP 的影响
  1. 网络层
  • 网络层的作用: 在复杂的网络环境中确定一个合适的路径.
  • 理解 IP 地址, 理解 IP 地址和 MAC 地址的区别.
  • 理解 IP 协议格式.
  • 了解网段划分方法
  • 理解如何解决 IP 数目不足的问题, 掌握网段划分的两种方案. 理解私有 IP 和公
    网 IP
  • 理解网络层的 IP 地址路由过程. 理解一个数据包如何跨越网段到达最终目的地.
  • 理解 IP 数据包分包的原因. • 了解 ICMP 协议. • 了解 NAT 设备的工作原理.
  1. 数据链路层
  • 数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
  • 以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内
    容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
  • 以太网帧格式
  • 理解 mac 地址
  • 理解 arp 协议
  • 理解 MTU

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

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

相关文章

MySQL的基础语法2(函数-字符串函数、数值函数、日期函数和流程函数 )

目录 一、字符串函数 1.常见字符串函数 ​编辑 2.字符串函数的基本使用 3.字符串函数的数据库案例演示 二、数值函数 1.常见数值函数(如下): 2.数值函数的基本使用 3.数值函数的数据库案例演示 三、日期函数 1.常见的日期函数 2.日…

全新版租赁商城小程序源码系统 源码开源支持二开+图文搭建教程

在互联网商业的浪潮中,租赁业务凭借其独特的优势,正逐渐成为市场的新宠。对于开发者而言,快速搭建一个功能完备的租赁商城小程序,不仅能满足市场需求,还能为自己的业务拓展带来新的机遇。分享一款全新版租赁商城小程序…

Cent OS7+Docker+Dify

由于我之前安装了Dify v1.0.0,出现了一些问题:无法删除,包括:知识库中的文件、应用、智能体、工作流,都无法删除。现在把服务器初始化,一步步重新安装,从0到有。 目录 1、服务器重装系统和配置…

OSI 七层模型和四层模型(TCP/IP 模型)

文章目录 前言一、OSI 七层模型二、TCP/IP 四层模型三、运行协议及设备1. OSI 七层模型2. TCP/IP 四层模型3. 运行协议4. 各类设备的作用 总结 前言 OSI 七层模型和四层模型(TCP/IP 模型)是两种常见的网络协议分层架构,它们的主要区别如下&a…

AI的未来:机遇、挑战与发展方向

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 人工智能(AI)已经成为当今世界最具革命性的技术之一,它正在深刻改变各个行业&#x…

javascript实现一个函数,将字符串中的指定子串全部替换为另一个字符串的原理,以及多种方法实现。

大白话javascript实现一个函数,将字符串中的指定子串全部替换为另一个字符串的原理,以及多种方法实现。 在JavaScript里,要是你想把字符串里的指定子串都替换成另外一个字符串,有不少方法可以实现。下面我会详细介绍实现的原理&a…

硬件基础--16_公式梳理

公式梳理 欧姆定律: IU/R 1.欧姆定律有局限性,仅适用于纯电阻电路(或者说纯电阻元器件,纯电阻设备) 2.纯电阻电路:消耗的电能仅转化为热能,没有其他形式的能量转换。 功率计算:PUI 1.导出公式:PU2 /R 2.导出公式:PI2 R 焦耳定律:QI2 Rt 1.导…

npm i 出现的网络问题

npm i 出现的网络问题 解决方案: npm config list 查看.npmrc文件中是否配置了proxy删除.npmrc文件中的proxy,保存。重新执行npm i命令。 顺便说说解决这个问题的心里路程 每次安装vue的环境的时候,经常遇到npm安装一些插件或者是依赖的时…

使用vue cli 5.0 在vscode中运行vue命令报错

1、运行 vue -- version 报错 2、在cmd 命令行 执行 vue --version 正常 3、在终端中输入 get-ExecutionPolicy,查看当前权限 4、执行 set-executionpolicy remotesigned 命令设置为可用模式,但是报错 5、使用管理员打开power shell 执行 G…

瑞芯微 RKrga接口 wrapbuffer_virtualaddr 使用笔记

一、源码 官方在librga中给了很多 demo 以供参考&#xff0c;例如 imresize 操作&#xff1a; /** Copyright (C) 2022 Rockchip Electronics Co., Ltd.* Authors:* YuQiaowei <cerf.yurock-chips.com>** Licensed under the Apache License, Version 2.0 (the &qu…

Spring MVC:从历史演变到实战入门

1. Java Web的发展历史与MVC模式 1.1 Model I与Model II的演进 Model I&#xff08;JSPJavaBean&#xff09; 作为早期Java Web开发的主流模式&#xff0c;其核心架构如下&#xff1a; graph LR A[客户端] --> B[JSP页面] B --> C{业务逻辑} C --> D[JavaBean] D -…

AI赋能,防御无界:群联云防护如何颠覆传统DDoS防御格局?

一、AI驱动的动态防御体系 智能流量调度 群联云防护通过AI算法实时分析流量特征&#xff0c;动态分配清洗节点。当检测到攻击时&#xff0c;系统能在秒级内将流量切换至备用节点&#xff0c;避免单点过载。相较传统高防IP依赖静态规则&#xff0c;群联的调度策略可减少50%的误封…

R --- Error in library(***) : there is no package called ‘***’ (服务器非root用户)

步骤 步骤一&#xff1a;在自己目录下创建R包安装路径步骤二&#xff1a;配置用户本地的R库路径步骤三&#xff1a;安装缺失的包&#xff08;在终端&#xff09;步骤四&#xff1a;验证安装 步骤一&#xff1a;在自己目录下创建R包安装路径 mkdir -p ~/R_libs步骤二&#xff1…

HarmonyOS NEXT状态管理实践

在HarmonyOS NEXT开发中&#xff0c;状态管理是构建高效、响应式应用的核心。本文深入探讨状态管理的最佳实践&#xff0c;结合代码示例与案例分析&#xff0c;帮助开发者掌握这一关键技能。 一、状态管理装饰器的合理使用 HarmonyOS NEXT提供多种状态管理装饰器&#xff0c;…

excel 时间戳 转日期

在Excel中&#xff0c;将时间戳转换为日期格式&#xff0c;可以使用以下步骤和方法&#xff1a; 一、了解时间戳 时间戳&#xff08;Timestamp&#xff09;通常是从1970年1月1日&#xff08;UTC时间&#xff09;开始的秒数或毫秒数。这个时间点被称为“Unix纪元”或“Unix时间…

Python CSV 数据分析:问题排查与解决全记录

Python CSV 数据分析&#xff1a;问题排查与解决全记录 前段时间&#xff0c;我接到一个任务&#xff0c;需要对公司的销售数据进行分析。这些数据存储在 CSV 文件里&#xff0c;本想着用 Python 处理起来会很轻松&#xff0c;结果却状况百出。下面&#xff0c;就跟大家讲讲我…

一些常用开发软件下载地址

1. Matlab官方下载地址 MATLAB Runtime 是运行由 MATLAB 编译的应用程序&#xff08;如 .exe、.jar 或 .dll&#xff09;所必需的组件&#xff0c;无需安装完整 MATLAB。 &#x1f517; MathWorks 官方下载页面&#xff1a; https://www.mathworks.com/products/compiler/mat…

06-SpringBoot3入门-常见注解(简介)

1、Controller ResponseBody Controller是Spring MVC 中的注解&#xff0c;负责处理 HTTP 请求。 ResponseBody是Spring MVC 中的注解&#xff0c;用于直接将方法的返回值作为 HTTP 响应体。 2、RestController RestController Controller ResponseBody 3、RequestMappin…

ubuntu24.04.2 NVIDIA GeForce RTX 4060笔记本安装驱动

https://www.nvidia.cn/drivers/details/242281/ 上面是下载地址 sudo chmod x NVIDIA-Linux-x86_64-570.133.07.run # 赋予执行权限把下载的驱动复制到家目录下&#xff0c;基本工具准备&#xff0c;如下 sudo apt update sudo apt install build-essential libglvnd-dev …

【数据库相关MySql、Redis、MongoDB】

一、三种数据库的对比 MongoDB、MySQL 和 Redis 是三种不同类型的数据库系统&#xff0c;它们在数据模型、存储方式、性能特点、适用场景等方面存在显著区别。以下是它们的详细对比&#xff1a; 1. 数据模型 MySQL 类型&#xff1a;RDBMS&#xff08;关系型数据库&#xff0…