当前位置: 首页 > article >正文

Java 网络原理 ⑤-DNS || 以太网

这里是Themberfue 

在前面的学习中,我们学习了网络层中 IP 协议的一些知识。现在,我们将进入下一层——数据链路层、物理层的学习~~~ 


以太网 

  • 大家的电脑是怎么联网的呢?是通过网线还是 WIFI ?如果你是通过网线的话,那么你走的就是以太网协议,网线也称为以太网线。不知道大家是否还记得,网络层中活跃的设备是路由器;那么数据链路层和物理层活跃的是什么设备呢?没错,就是交换机;其实这么说并非准确,现在的交换机和路由器的功能都很多了,并非只活跃在某一层中。
  • ✨以太网(Ethernet)是目前最主流的有线局域网(LAN)通信技术,使用 MAC 地址 进行设备识别,并采用 CSMA/CD 访问控制机制(早期使用,现在大多为全双工交换模式)。
  • 以太网的标准为 IEEE 802.3。而 WIFI 的标准则为 IEEE 802.11(现今无线局域网通用的标准),虽然经常将 WIFI 和 IEEE 802.11 混为一谈,但二者并不相同,感兴趣的小伙伴可以去了解一下。
  • 以太网的早期拓扑结构为 总线型(Bus),现在多为 星型(Star),主要依靠交换机(Switch)。其为数据链路层和物理层的协议:以太网数据帧格式。其介质主要为网线,现代网线中有 五类网线(Cat5)、超五类网线(Cat5e)、六类网线(Cat6)、超六类网线(Cat6a).....,以及最为快速的 光纤,快看看你家的网线是哪种类型吧~~~
  • 五类网线只能供百兆网速使用,其传输频率为100MHz,而超五类网线则支持千兆网速,传输频率为 125MHz,如果你家有千兆宽带,但速度就是上不去,可以看看是不是网线的锅。网线通常有不同的传输速率:0 Mbps(10BASE-T)、100 Mbps(Fast Ethernet)、1 Gbps(Gigabit Ethernet)、10 Gbps、40 Gbps、100 Gbps(数据中心)。

以太网帧格式

  • 以太网的数据包称为 帧(Frame),主要包括以下部分:

  • MAC地址:我们可以看到 目的地址和 源地址,这里的地址指的是 MAC地址(物理地址),唯一标识网卡。MAC地址 的大小是 6 字节,也就是 48 位,相比较于 IPv4,其多了 2^16 倍;就目前情况来看,其地址的剩余数还绰绰有余。你电脑上的网卡也不止一个:有线网卡、无线网卡、虚拟网卡.....
  • MAC 地址的格式为:XX-XX-XX-XX-XX-XX。其分配方式:前24位为厂商 OUI(组织唯一标识符),后24位为设备唯一号。MAC 地址可以在局域网内唯一标识设备,交换机可以根据 MAC 地址转发数据。我们可以通过 windows 的 cmd 的 ipconfig /all 来查看自己网卡的 MAC 地址。
  • 既然有了 IP 地址,为何还要 MAC 地址?IP 地址是处在 网络层 的,而 MAC 地址则是处在数据链路层的。IP 地址关心的是这个数据包的起点和终点,关注于整个网络路径的转发传输过程,而 MAC 地址关心的是两个相邻节点的之间的转发,看似一样,其实还是有很大区别的。举个例子:你有个快递:源 IP 是北京,目的 IP 是深圳,通常快递不可能直接到深圳,而是需要经过其他城市进行中转。假设有这么一条路径:北京 - 河北 - 武汉 - 南昌 - 深圳。那么其源 MAC 地址就会从北京变为河北再变为武汉,最后变为南昌,而目的 MAC 地址则会从河北变为武汉再变为南昌,最后变为深圳。相信你已经理解其中的作用了~~~
  • 类型:表示上层协议(IPv4、IPv6、ARP等)。
  • CRC:校验和,检测传输错误。
  • 数据:载荷,封装 IP 数据包。数据字段这里的大小为 1500字节,也就是 1kb 多一点,但是 IP 数据报的最大长度为 64 kb,所以 IP 数据报发送的拆包组包操作大多是数据链路层的限制。
  • PAD:此字段为填充区,填充区占用的字节数根据需要而定。这个区域的功能是确保帧尺寸不少于64字节。当从MAC目的地址到帧校验区整个数据帧尺寸少于64字节时,利用该区域将帧尺寸填充到64字节。因为尺寸小于64字节的帧属于违法帧,在接收端会被自动丢弃。如果帧尺寸已经达到64字节,则该区域占用的字节数应为零;

ARP

  • ARP(Address Resolution Protocol,地址解析协议),ARP 主要用于通过 IP 地址获取 MAC 地址,工作在 网络层数据链路层 之间。在以太网中,设备之间通过 MAC 地址 进行通信,但应用层、传输层和网络层通常使用 IP 地址。因此,当设备只知道目标 IP 地址时,需要一种方法来找到对应的 MAC 地址,这就是 ARP 的作用。

工作过程

  1. 主机 A 发送 ARP 请求(广播),目标 MAC 地址未知,A 发送一个广播帧,询问:谁的 IP 是 192.168.1.2?请告诉我你的 MAC 地址。与IP的广播地址类似,MAC的广播地址也全为 1, 所以目标 MAC:FF-FF-FF-FF-FF-FF(广播地址)
  2. 主机 B 发送 ARP 响应(单播)目标主机 B 收到 ARP 请求后,检查 IP 地址是否匹配。如果匹配,则 B 发送 ARP 响应(单播)给 A,告诉它:我的 MAC 地址是 00:1A:2B:3C:4D:5E。

  3. 主机 A 记录 MAC 地址,A 记录 IP-MAC 映射 到本地的 ARP 缓存表(超时后删除)。


RARP

  • RARP(Reverse Address Resolution Protocol,逆地址解析协议),RARP 的作用与 ARP 相反,用于 通过 MAC 地址获取 IP 地址。但由于 DHCP 更强大,RARP 已被淘汰。所以我这边就不做过多的讲解了~~~

DNS 

  • 域名,想必大家已经很熟悉了,就是我们平时输入的网址:www.baidu.com,输入这串网址,就可以进入百度的官网。通过之前的学习,我们是通过 IP 地址来定位到一台服务器从而获取其资源的。但现在输入的不是 IP 地址而是网址也可以直接直接进入网站了,这是怎么做到的,这便是 DNS 的作用了~~~
  • ✨DNS(域名系统,Domain Name System),是 将域名转换为 IP 地址 的系统。它类似于 互联网的电话簿,让用户可以使用 人类易读的域名(如 www.google.com)来访问网站,而无需记住复杂的 IP 地址(如 142.250.190.14)。
  • 如果我们还是通过输入 IP 地址进入官网的话,那么多网站你记得住这些毫无规律可言的 IP 地址吗?相反,如果是域名,相对来说还是非常好记的。所以,人类更容易记住 www.example.com,而不是 192.168.1.1。而且,如果服务器更换 IP,但域名不变,用户无需手动更新 IP 地址。再者,一个域名可以解析到多个 IP 地址,分配流量,提高网站可用性。
  • 如果你发现浏览网页感觉好慢加载出资源来,经过排查发现不是网速慢的问题,通常就是 DNS 服务器出了问题,换一个 DNS 服务器或者自动分配就可以解决问题了。

解析流程

当你在浏览器输入 www.example.com 并按下回车时,DNS 解析会经历以下 递归查询过程

  1. 浏览器缓存:先检查本地 DNS 缓存,是否已经解析过该域名。
  2. 操作系统缓存:如果浏览器没有缓存,检查操作系统的 DNS 缓存(ipconfig /displaydns)。
  3. 本地域名服务器(ISP 提供)
    • 若缓存中没有,就向 ISP(互联网服务提供商)的 DNS 服务器查询。
  4. 根 DNS 服务器
    • 若本地服务器没有答案,它会向 根 DNS 服务器 询问。
    • 根服务器不会直接返回 IP 地址,而是告诉客户端去 .com 顶级域名服务器 查询。
  5. 顶级域名(TLD)服务器
    • .com 服务器返回 example.com权威 DNS 服务器 地址。
  6. 权威 DNS 服务器
    • 权威服务器 直接返回 www.example.com 的 IP 地址
  7. 返回给用户
    • ISP 服务器缓存结果,并返回给用户,用户的设备将该 IP 地址存入缓存,以便下次加快解析。
    • 用户拿到 IP 地址后,在根据这个 IP 地址去向目标服务器发送请求等一系列操作。

DNS 服务器类型

  1. 根 DNS 服务器(Root DNS Server)

    • 互联网的最高级别 DNS 服务器,全球共有 13 组(A~M),美国就独占 10 台服务器,而中国 1 台都没有。
    • 例如:198.41.0.4 是其中一个根服务器的 IP。
  2. 顶级域名(TLD)服务器

    • 管理 .com.org.cn 这样的顶级域名,例如:
      • .com 服务器:192.5.6.30
      • .cn 服务器:203.119.25.6
  3. 权威 DNS 服务器(Authoritative DNS Server)

    • 负责管理特定域名(如 google.com)。
    • 例如 ns1.google.com 可能是 google.com 的权威服务器。
  4. 递归解析 DNS 服务器(Recursive Resolver)

    • 负责为客户端执行完整的 DNS 解析过程,通常由 ISP(中国电信、移动、联通)或公共 DNS(如 Google、Cloudflare)提供。
    • 例如:
      • Google DNS:8.8.8.8
      • Cloudflare DNS:1.1.1.1
      • OpenDNS:208.67.222.222

DNS 问题

DNS 污染(DNS 投毒)

  • 攻击者 伪造 DNS 响应,返回错误的 IP 地址,使用户访问到假网站(如钓鱼网站)。
  • 常见于公共 WiFi、黑客攻击、部分国家的网络管制
  • 解决方案
    • 使用 加密 DNS(DoH/DoT),防止篡改。
    • 使用 可信任的 DNS 服务器(如 Google 8.8.8.8)。

DNS 劫持

  • ISP 或黑客劫持 DNS 查询请求,重定向用户到广告页面或恶意网站。
  • 解决方案
    • 手动指定 可靠的 DNS(如 Cloudflare 1.1.1.1)。
    • 使用 VPN,绕过 ISP 劫持。

DNS 缓存污染

  • 某些恶意软件修改本地 DNS 缓存,使用户访问错误网站。
  • 解决方案
    • 清空本地 DNS 缓存:
      ipconfig /flushdns  # Windows
      sudo systemd-resolve --flush-caches  # Linux
    • 重新配置 可信的 DNS 服务器

  • 网络的部分到这就完结了,下节我们将进入 JVM 的学习~~~
  • 毕竟不知后事如何,且听下回分解 
  • ❤️❤️❤️❤️❤️❤️❤️


http://www.kler.cn/a/539196.html

相关文章:

  • Win11下搭建Kafka环境
  • AD域控粗略了解
  • jupyterLab插件开发
  • VSCode 下载与使用教程:附百度网盘地址
  • Docker从入门到精通- 容器化技术全解析
  • python实现情绪识别模块,并将模块封装成可执行文件
  • 【RocketMQ 存储】- 异步刷盘服务 FlushRealTimeService
  • Python 报错分析:IndexError: list index out of range
  • Node.js 中模块化
  • 什么是Prompt工程?
  • 蓝耘智算平台与DeepSeek R1模型:推动深度学习发展
  • 企业如何利用DeepSeek提升网络安全管理水平
  • 【JAVAFX】textarea插入数据后滚动条自动到底部
  • 量化交易数据获取:xtquant库的高效应用
  • Transformer中的嵌入位置编码
  • Golang:Go 1.23 版本新特性介绍
  • 小程序实现消息订阅通知完整实践及踩坑记录
  • AI绘画:开启艺术与科技融合的未来之门(10/10)
  • Unity3D仿星露谷物语开发28之切换场景
  • 【神经网络框架】非局部神经网络
  • [LeetCode]day18 202.快乐数
  • Redis的数据过期策略和数据淘汰策略
  • 【计算机视觉】多分辨率金字塔全解析 ✨
  • 机试题——D路通信
  • Sparse4D v3:推进端到端3D检测和跟踪
  • Android系统SELinux详解