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

news2024/9/28 1:37:14

  🔥个人主页: 中草药

🔥专栏:【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值。

MTU对IP协议的影响

数据包分片

  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.coloradmin.cn/o/2167473.html

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

相关文章

【Pytorch图像+序列双输入网络源代码】

Python,Pytorch构建双输入网络,图像序列双输入,进行二分类。 如何基于Pytorch构建双输入的网络是曾经长时间困扰本人的问题,现已弄明白。本程序示例是一端输入图像,一端输入序列。 整体工作如下: 1、加载数…

CSS清除浮动的多种方法

目录 非 VIP 用户可前往公众号回复“css”进行免费阅读 给浮动元素的祖先元素加高度 给 div 写一个 clear:both; 属性(margin 失效) clear:both; 隔墙法 clear:both; 内墙法 父级 div 定义伪类:after 和 zoom(推荐使用) overflow:hidden;(能够让 margin 生效) 非 …

机器学习-KNN分类算法

1.1 KNN分类 KNN分类算法(K-Nearest-Neighbors Classification),又叫K近邻算法。它是概念极其简单,而效果又很优秀的分类算法。1967年由Cover T和Hart P提出。 KNN分类算法的核心思想:如果一个样本在特征空间中的k个最…

【机器学习】——线性回归(自我监督学习)

文章目录 1. 线性回归的定义2. 线性回归的模型3. 线性回归的核心思想4. 线性回归的求解5. 线性回归的假设6. 模型评估7. 线性回归的优缺点8. 线性回归的扩展9. 线性回归的实际应用10. 示例代码(Python实现) 线性回归详细介绍 1. 线性回归的定义 线性回归…

【已解决】Ubuntu 24.04 修改 ssh 连接端口无效

用编辑器打开 /etc/ssh/sshd_config 文件 sudo vim /etc/ssh/sshd_config将 Port 22 改为你想要的端口号(这里演示就设置为4080) 用编辑器打开 /lib/systemd/system/ssh.socket 文件 sudo vim /lib/systemd/system/ssh.socket将 ListenStream22 中的 2…

Windows 10 系统安装 FFmpeg 查看、转换、编辑音频文件

1、FFmpeg官网:FFmpeg 点击下载 可以选择下载full版本 下载之后解压到指定目录,在系统环境变量 Path 里面新增环境变量 打开CMD终端运行 ffmpeg -version 查看是否安装成功。 2、基本命令 查看音频基本信息 ffprobe 1.mp3 ##输出 [mp3 000002ab334405…

Xcode16 iOS18 编译问题适配

问题1:ADClient编译报错问题 报错信息 Undefined symbols for architecture arm64:"_OBJC_CLASS_$_ADClient", referenced from:in ViewController.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit co…

<Java>String类型变量的使用

两边有一个string就是连接,否则做加法 ‘ ’是char,“ ”是string,char能做加法,string只能连接

STM32F407_05

RTC实时时钟 主要特性: 由于RTC实时时钟提供了三种时钟源可供选择(LSI,LSE,HSE) ,一般我们选择低速外部时钟源(32.768KHZ)来作为RTC的时钟源 另外,RTC实时时钟可以由系统主电源供电,但是也可以由备份电源供电(系统主电源不工作时&#xff09…

微电网与大电网主动同步控制

前言 大电网正常运行时,微电网通过大电网得到正常的电压频率参数支撑,大电网故障时,微电网的电压和频率支撑需要通过分布式电源提供,从而保持自身独立运行。分布式电源提供的电压信息会因为自身的下垂特性随本地负荷的改变不断变…

leetcode331. 验证二叉树的前序序列化

序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,…

【含文档】基于Springboot+Vue的高校师资管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

构建高效线上培训体系的知识库策略

在数字化时代,线上培训已成为企业提升员工技能、促进知识传递的重要手段。然而,如何构建一个高效、系统的线上培训体系,确保培训内容的准确性与时效性,是许多企业面临的共同挑战。其中,知识库作为培训资源的核心载体&a…

Arduino中实现定时器中断

1、使用MsTimer2库文件 使用之前需要先添加库 (1)实现功能 (2)代码 /*MsTimer2 is a small and very easy to use library to interface Timer2 withhumans. Its called MsTimer2 because it "hardcodes" a resolutio…

99页PPT | 智慧城市运营大数据平台解决方案

方案内容综述 这是一套综合性的解决方案,旨在通过先进的数据分析和处理技术,提升城市管理的智能化水平。平台基于运营商的运营理论构建,通过整合城市各个层面的数据资源,实现对城市运行状态的全面监测、分析和优化。 城市大数据公…

MySQL的登录、访问、退出

一、登录: 访问MySQL服务器对应的命令:mysql.exe ,位置:C:\Program Files\MySQL\MySQL Server 8.0\bin (mysql.exe需要带参数执行,所以直接在图形界面下执行该命令会自动结束) 执行mysql.exe命令的时候出…

【Linux】进程的标识符、状态(超详解)

目录 进程的概念 进程标识符PID 系统调用创建进程-fork初识 进程状态 R状态(运行状态) S,D状态(休眠状态) T,t状态 Z状态(僵尸进程) 孤儿进程 X状态(死亡状态&a…

深度学习500问——Chapter15:异构计算,GPU和框架选型(1)

文章目录 异构计算,GPU和框架选型指南 15.1 什么是异构计算 15.2 什么是GPU 15.3 GPU架构简介 15.3.1 如何通俗理解GPU的架构 15.3.2 CUDA的核心是什么 15.3.3 为什么要使用GPU 异构计算,GPU和框架选型指南 深度学习训练和推理的过程中,会涉…

塑封芯片多大才需要点胶加固保护?

塑封芯片多大才需要点胶加固保护? 塑封芯片是否需要点胶加固保护,并不完全取决于芯片的大小,而是由多种因素共同决定的。以下是一些影响是否需要点胶加固保护的主要因素: 芯片的应用场景:如果芯片所处的环境较为恶劣&a…

四种msvcp120.dll丢失的解决方法,简单几步将丢失的msvcp120.dll修复

如果你在使用电脑的时候遇到了msvcp120.dll文件丢失的问题应该怎么办呢?如何修复丢失的msvcp120.dll的问题呢?今天那就和大家聊聊msvcp120.dll丢失的解决办法,详细说说msvcp120.dll的解决办法步骤。 修复“msvcp120.dll”丢失问题的详细方法 …