【JavaEE】数据链路层协议和DNS

embedded/2024/9/25 19:00:21/

  🔥个人主页: 中草药

🔥专栏:【Java】登神长阶 史诗般的Java成神之路


👜一.以太网

        以太网(Ethernet)是一种局域网技术,它定义了开放系统互连(OSI)模型中的物理层和数据链路的规范。以太网是目前最广泛使用的有线网络技术之一,支持不同类型的计算机和其他设备之间的通信。

工作原理

  • CSMA/CD(载波侦听多路访问/冲突检测):这是原始以太网的核心机制,允许所有设备共享同一物理媒介。当一个设备想要发送数据时,它会先监听信道是否空闲;如果空闲,则开始发送。如果有两个或更多设备同时尝试发送,就会发生碰撞,这些设备随后会在随机等待一段时间后重新尝试发送。
  • 帧结构:数据是以帧的形式进行封装的,每个帧包含源地址、目的地址、类型/长度字段、实际数据以及校验序列(如CRC)来确保数据完整性。

帧格式

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

👔二.MAC地址

        MAC地址(Media Access Control Address)是一种用于标识网络设备硬件的唯一地址。它在数据链路层(OSI模型中的第二层)上工作,主要用于局域网通信。每个网络接口卡(NIC)或任何其他具有网络功能的设备都有一个唯一的MAC地址。

结构

        一个标准的MAC地址由6个字节(48位)组成,通常以十六进制表示,(IP地址4个字节)并用冒号或连字符分隔每两个十六进制数字。例如:00:1A:2B:3C:4D:5E00-1A-2B-3C-4D-5E。MAC地址还可以作为设备的身份标识

  • 前24位(OUI, Organizationally Unique Identifier):这部分是组织唯一标识符,由IEEE分配给各个制造商。这使得可以根据MAC地址的前三个字节识别出设备是由哪家公司生产的。
  • 后24位:这部分由设备制造商自行分配,确保了即使是同一制造商生产的所有设备之间,MAC地址也是唯一的。

作用

  • 寻址:在局域网中,MAC地址用于直接寻址和识别通信双方。
  • 过滤网络设备如交换机可以利用MAC地址进行流量控制和安全过滤,比如基于MAC地址的访问控制列表(ACL)。
  • 转发:在交换式网络中,交换机会学习每个端口上连接设备的MAC地址,并据此构建转发表来决定如何转发数据帧。

静态与动态MAC地址

  • 静态MAC地址:大多数情况下,MAC地址是在制造过程中烧录到设备中的ROM里,不可更改,被称为静态MAC地址。
  • 动态MAC地址:某些高级网络设备支持配置临时的、可更改的MAC地址,这类地址通常存储在RAM中,重启后会丢失。

总之,MAC地址对于保证网络通信的有效性和安全性至关重要,它是网络基础设施的一个基本组成部分。

MAC地址使用在数据链路层,用来实现两个相邻设备的数据转发---微观

IP地址使用在网络层,立足于整个转发流程,进行路径规划---宏观

👕三.MTU

        MTU(Maximum Transmission Unit,最大传输单元)是指网络中可以传输的最大数据包大小,单位通常是字节。MTU的概念主要应用于网络层和数据链路,特别是在IP网络中,它影响着数据如何被分割成更小的部分以适应不同网络路径的限制。

MTU直接和硬件相关,不同的硬件设备,对应了不同的数据链路层协议,对应了不同的MTU 

作用

  1. 避免分片:当一个较大的数据包需要通过具有较小MTU值的网络时,该数据包会被分割成几个较小的数据包(称为分片)。接收端必须重新组装这些分片才能得到原始数据。这个过程会增加处理开销并可能导致性能下降。因此,设置合适的MTU有助于减少不必要的分片。

  2. 提高效率:适当调整MTU可以优化网络性能。如果MTU太小,会导致过多的小数据包在网络上传输,增加了头部信息的比例,从而降低了有效载荷的比例。而如果MTU太大,则可能会导致频繁的分片,同样影响性能。

  3. 兼容性:不同的网络技术有不同的默认MTU值。例如,传统的以太网MTU为1500字节,但某些特殊的网络环境如PPPoe、GRE隧道或MPLS可能有更小的MTU

常见的MTU

  • 以太网:通常情况下,标准以太网接口的MTU是1500字节。(1.5KB 算是非常小)
  • PPP (Point-to-Point Protocol):在使用PPP进行拨号连接时,常见的MTU值为576字节。
  • PPPoE (Point-to-Point Protocol over Ethernet):由于额外的封装,实际可用的MTU通常是1492字节。
  • Jumbo Frames:为了提高网络吞吐量,在一些高性能网络环境中,可以配置更大的MTU,如9000字节,这种帧被称为“巨型帧”(Jumbo Frames)。

路径MTU发现

        路径MTU发现(Path MTU Discovery, PMTUD)是一种机制,用于确定从源到目的地之间的路径上最小的MTU值。这可以帮助发送方正确地设置其数据包大小,避免因中间路由器强制分片而导致的问题。PMTUD通过ICMP(Internet Control Message Protocol)消息来实现,当某个中间路由器发现数据包大于它的出接口MTU时,它会向源主机发送一个ICMP“Packet Too Big”消息,并附带自己的MTU值。

MTUIP协议的影响

数据包分片

  1. 分片必要性

    • 当一个IP数据包从一个具有较大MTU网络发送到另一个具有较小MTU网络时,如果数据包的大小超过了目标网络MTU,那么该数据包必须被分割成更小的数据包,以便能够通过这个网络
    • 这个过程称为分片(fragmentation),每个分片都是原始数据包的一个部分,并且每个分片都有自己的IP头部。
  2. 分片过程

    • IP头部中,有几个字段用于处理分片:标识符(Identification)、标志(Flags)和片段偏移量(Fragment Offset)。
    • 标识符字段是一个16位的数字,它对于所有分片是相同的,这样接收端就可以识别出哪些分片属于同一个原始数据包。
    • 标志字段包含三个比特,其中一个比特表示是否还有更多的分片(More Fragments, MF),另外两个比特通常不使用。
    • 片段偏移量字段指出了当前分片在原始数据包中的位置,单位是8字节。
  3. 分片的影响

    • 分片会增加网络开销,因为每个分片都需要额外的IP头部信息。
    • 如果任何一个分片丢失,整个数据包需要重新发送。
    • 分片后的数据包可能在网络中经历不同的路径,这可能导致到达顺序混乱,接收端需要进行排序和重组。

重组过程

  • 接收方收到所有分片后,会根据标识符、标志和片段偏移量字段将这些分片重新组合成原始数据包。
  • 重组发生在最终目的地或中间路由器上,但通常是目的地设备执行重组以减少中间路由器的负担。

设置MTU

对于大多数用户来说,不需要手动更改MTU值,因为操作系统和网络设备通常已经设置了合理的默认值。但在特定情况下,比如遇到网络性能问题或是配置特殊类型的网络时,可能需要调整MTU

  • 在Windows系统中,可以通过命令行工具netsh来修改MTU
  • 在Linux系统中,可以使用ifconfigip命令来设置接口的MTU
  • 对于网络设备如路由器或交换机,一般可以在设备的管理界面中找到相应的配置选项。

调整MTU时应当谨慎,因为它会影响到整个网络的表现。在进行任何更改之前,最好先进行测试以确保不会引起其他问题。

🧣四.ARP协议

        ARP(Address Resolution Protocol,地址解析协议)是一个在TCP/IP网络中使用的链路层协议,用于将已知的IP地址映射到相应的物理地址(如以太网中的MAC地址)。它可以视为,让当前设备,获取到周围设备 IP 地址和 MAC 地址之间的映射关系

工作原理

  1. 请求过程

    • 当主机A想要向主机B发送数据,但只知道主机B的IP地址而不知道其MAC地址时,主机A会广播一个ARP请求报文。
    • 这个ARP请求包含主机A的MAC地址和IP地址,以及主机B的IP地址,并询问“谁拥有这个IP地址?请告诉我你的MAC地址”。
  2. 响应过程

    • 所有接收到ARP请求的设备都会检查自己的IP地址是否与请求中的目标IP地址匹配。
    • 如果匹配,那么该设备(假设是主机B)就会单播回应一个ARP响应报文给主机A,其中包含了主机B的MAC地址。
    • 如果不匹配,则这些设备不会做出任何响应。
  3. 更新ARP缓存

    • 主机A收到ARP响应后,会将主机B的IP地址和MAC地址对存储在本地的ARP缓存表中,这样下次再发送数据给主机B时就可以直接使用缓存中的信息,而不需要再次发起ARP请求。
  4. ARP缓存超时

    • 为了保持ARP缓存表的时效性,每个条目都有一个生存时间。一旦超过这个时间,对应的条目会被删除或标记为过期,下一次发送数据时又需要重新执行ARP请求。

总的来说,ARP协议虽然简单,但它在网络通信中扮演着至关重要的角色,确保了不同层次之间的正确映射。同时,了解ARP的安全风险并采取适当的保护措施也是网络管理的重要组成部分。

🎒五.DNS协议(应用层协议)

        DNS(Domain Name System,域名系统)是一种分布式数据库系统,用于将人类易于记忆的域名转换为计算机可识别的IP地址。它解决了互联网上主机名和IP地址之间的映射问题,使得用户无需记住复杂的IP地址即可访问网站和其他服务。以下是对DNS协议的简要介绍:

工作流程

  1. 查询过程

    • 用户输入一个域名(如www.example.com)后,浏览器或操作系统会向本地DNS客户端发送一个DNS查询请求。
    • 本地DNS客户端首先查找本地缓存,看是否有对应记录。如果有,就直接返回结果。
    • 如果没有,客户端会向DNS服务器发出查询请求。
  2. 递归查询

    • 如果本地DNS客户端没有找到答案,它会向DNS服务器发送一个递归查询,要求服务器提供完整的解答。
    • DNS服务器会尝试从根域名服务器开始,逐级向下查询,直到找到正确的权威名称服务器为止。
  3. 权威名称服务器

    • 权威名称服务器负责维护特定域名下的所有记录,如A记录(将域名映射到IP地址)、MX记录(邮件服务器)等。
    • 当查询到达权威名称服务器时,它会返回正确的IP地址或其他相关信息。
  4. 回答过程

    • DNS服务器将查询结果返回给本地客户端,然后本地客户端将其保存在缓存中,以备后续查询使用。

相关概念

  • DNS缓存:本地客户端和DNS服务器都可能有自己的缓存,以加速查询速度。
  • DNS轮询:多个DNS服务器可以同时提供服务,客户端可以随机选择一个进行查询。
  • DNS负载均衡:通过将域名映射到多个IP地址,可以实现流量分散和故障转移。

DNS服务器类型

  • 根域名服务器:顶级域名的权威服务器,如com、org等。
  • 顶级域名服务器:负责特定顶级域名的服务器,如.com服务器。
  • 权威名称服务器:负责特定域名的服务器,如example.com服务器。
  • 递归DNS服务器:为用户提供全面查询服务的服务器,常见于ISP或企业内部。

DNS缓存

  • 本地缓存:存在于客户端和DNS服务器中,用于加快查询速度。
  • 缓存污染:当缓存中的信息过期或被非法修改时,可能导致错误的结果。

        总的来说,DNS协议是互联网的关键组件之一,它使得用户可以方便地访问网络资源,同时也为网络管理员提供了管理和优化网络流量的方法。理解DNS的工作原理和相关安全问题对于保障网络稳定和安全非常重要。


成功的秘诀,在永不改变既定的目的。——卢梭 

🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀

以上,就是本期的全部内容啦,若有错误疏忽希望各位大佬及时指出💐

  制作不易,希望能对各位提供微小的帮助,可否留下你免费的赞呢🌸


http://www.ppmy.cn/embedded/116774.html

相关文章

从零开始学习Python

目录 从零开始学习Python 引言 环境搭建 安装Python解释器 选择IDE 基础语法 注释 变量和数据类型 变量命名规则 数据类型 运算符 算术运算符 比较运算符 逻辑运算符 输入和输出 控制流 条件语句 循环语句 for循环 while循环 循环控制语句 函数和模块 定…

智谱清影 - CogVideoX-2b-部署与使用

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 体验地址:[丹摩DAMODEL官网](https://www.damodel.com/console/overview) CogVideoX 简介本篇将详细介绍使用丹摩服务器部…

通过 OBD Demo 体验 OceanBase 4.3 社区版

本文作者:马顺华 引言 OceanBase 4.3 是一个专为实时分析 AP 业务设计的重大更新版本。它基于LSM-Tree架构,引入了列存引擎,实现了行存与列存数据存储的无缝整合。这一版本不仅显著提升了AP场景的查询性能,同时也确保了TP业务场景…

Python基础 | 在虚拟环境中安装并在指定文件夹中打开Jupyter notebook

在虚拟环境中安装并在指定文件夹中打开Jupyter notebook 前言一、在虚拟环境下安装Jupyter notebook二、在指定路径下打开Jupyter notebook 前言 Jupyter Notebook 是一个基于 Web 的交互式计算环境,主要功能是将代码、文本、数学方程式、可视化和其他相关元素组合…

前端和后端的相对路径和绝对路径

1. 相对路径访问图片 test.html 位于 web/a/b/c/ 目录中&#xff1a; 若要访问 static/img/ 文件夹中的图片&#xff08;假设图片名为 image.png&#xff09;&#xff0c;相对路径应该是&#xff1a; <img src"../../../static/img/image.png" alt"Image&quo…

HarmonyOS鸿蒙开发实战(5.0)自定义全局弹窗实践

鸿蒙HarmonyOS开发实战往期文章必看&#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; 非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&am…

PostgreSQL 基础操作

PostgreSQL&#xff08;简称pgsql&#xff09;的基础命令行操作涉及多个方面&#xff0c;包括数据库和表的管理、数据操作以及系统信息的查询等。以下是一些常用的PostgreSQL基础命令行操作&#xff1a; 1. 数据库管理 创建数据库&#xff1a; CREATE DATABASE 数据库名;例如…

harmonyos面试题

你在项目中用过线程通信吗&#xff0c;线程是怎么进行通信的? 页面的生命周期有哪些? UAbility的生命周期呢? 你在项目中使用首选项主要用来数什么 组件通信的方式有息些 弹室UI是怎么在页面UI中使用的 常用的修饰符有愿些介绍一下 缓冲区是什么与16进制和数组有什么关…