网络原理->DNS协议和NAT协议解
前言
大家好我是小帅,今天我们来了解应用层的DNS协议和NAT技术
个人主页:再无B~U~G
文章目录
- 1.重要应⽤层协议DNS(Domain Name System)
- 1.1 DNS背景
- 2. NAT技术
- 3. 总结
1.重要应⽤层协议DNS(Domain Name System)
DNS是⼀整套从域名映射到IP的系统,也就是域名解析系统。
1.1 DNS背景
TCP/IP中使⽤IP地址和端⼝号来确定⽹络上的⼀台主机的⼀个程序. 但是IP地址不⽅便记忆.
于是⼈们发明了⼀种叫主机名的东西, 是⼀个字符串, 并且使⽤hosts⽂件来描述主机名和IP地址的关系.
使用域名代替IP地址,比如说使用域名访问百度:
使用IP地址访问百度:
DNS域名解析系统作用
主要了解1,2点
- 域名解析:当用户在浏览器中输入一个网址时,计算机会向DNS服务器发送请求来获取与该域名相对应的IP地址。一旦获得正确的IP地址,计算机就可以直接与目标网站的服务器通信。
- 反向解析:除了从域名到IP地址的正向解析外,DNS也支持从IP地址到域名的反向解析。这主要用于安全验证和其他网络管理目的。
- 负载均衡:大型网站可能有多个服务器分布在全球不同的位置。DNS可以通过返回不同服务器的IP地址来帮助分散流量,实现负载均衡,提高访问速度和可用性。
- 缓存:为了提高性能并减少对权威DNS服务器的查询次数,本地DNS服务器会缓存之前查询的结果。这意味着如果同一域名近期已经被解析过,那么后续的查询可以快速地从缓存中得到结果。
过程:
在网上建立了DNS服务器,把-hosts文件放到DNS服务器里面,当主机需要域名解析,就访问DNS服务器,全世界有很多DNS的镜像服务器,每个主机都会就近的访问DNS镜像服务器,如果是查询镜像服务器不用访问根DNS服务器,如果是针对修改/变更需要访问根DNS服务器。
注意点:
- DNS是应⽤层协议
- DNS底层使⽤UDP进⾏解析
- 浏览器会缓存DNS结果
2. NAT技术
技术并不是应用层的技术,而是工作在网络层(在OSI模型中是第3层)和传输层(在OSI模型中是第4层)之间的技术。NAT主要用于在私有网络和公共网络之间进行IP地址的转换。
NAT的主要功能包括:
- IP地址转换:==NAT允许一个私有网络中的多台设备共享一个或几个公网IP地址。当内部设备需要与外部网络通信时,NAT会将内部设备的私有IP地址转换为公网IP地址,反之亦然。
- 端口转发:通过端口映射或端口转发,NAT可以将来自公网的特定服务请求重定向到内部网络中的某个设备上。
- 防火墙功能:NAT提供了一定程度的安全性,因为它隐藏了内部网络的真实IP地址,使得外部网络难以直接访问内部网络的设备。
- 负载均衡:在一些高级的NAT实现中,可以通过不同的策略来分配流量到多个服务器,从而达到负载均衡的效果。
NAT技术背景:
之前我们讨论了, IPv4协议中, IP地址数量不充⾜的问题
NAT技术解决当前IP地址不够⽤的主要⼿段, 是路由器的⼀个重要功能;
NAT IP转换过程:
- NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;
- NAT路由器收到外部的数据时, ⼜会把⽬标IP从202.244.174.37替换回10.0.0.10;
- 在NAT路由器内部, 有⼀张⾃动⽣成的, ⽤于地址转换的表;
- 当 10.0.0.10 第⼀次向 163.221.120.9 发送数据时就会⽣成表中的映射关系;
那么问题来了, 如果局域⽹内, 有多个主机都访问同⼀个外⽹服务器, 那么对于服务器返回的数据中, ⽬的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域⽹的主机?
这时候NAPT来解决这个问题了. 使⽤IP+port来建⽴这个关联关系。
这种关联关系也是由NAT路由器⾃动维护的. 例如在TCP的情况下, 建⽴连接时, 就会⽣成这个表项; 在断开连接后, 就会删除这个表项
NAT 技术的优缺点:
由于NAT依赖这个转换表, 所以有诸多限制:
- ⽆法从NAT外部向内部服务器建⽴连接;
- 装换表的⽣成和销毁都需要额外开销;
- 通信过程中⼀旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开;
但是 NAT 有⼀个最⼤的优点: 不需要更新硬件设备, 只更新软件, 就可以解决 IP 地址不够⽤的问题!
3. 总结
学习复习路:
数据链路层
• 数据链路层的作⽤: 两个设备(同⼀种数据链路节点)之间进⾏传递数据
• 以太⽹是⼀种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物理层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等;
• 以太⽹帧格式
• 理解mac地址
• 理解arp协议
• 理解MTU
⽹络层
• ⽹络层的作⽤: 在复杂的⽹络环境中确定⼀个合适的路径.
• 理解IP地址, 理解IP地址和MAC地址的区别.
• 理解IP协议格式.
• 了解⽹段划分⽅法
• 理解如何解决IP数⽬不⾜的问题, 掌握⽹段划分的两种⽅案. 理解私有IP和公⽹IP
• 理解⽹络层的IP地址路由过程. 理解⼀个数据包如何跨越⽹段到达最终⽬的地.
• 理解IP数据包分包的原因.
• 了解NAT设备的⼯作原理.
传输层
• 传输层的作⽤: 负责数据能够从发送端传输接收端.
• 理解端⼝号的概念.
• 认识UDP协议, 了解UDP协议的特点.
• 认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.
• 掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗⼝, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.
• 理解TCP⾯向字节流, 理解粘包问题和解决⽅案.
• 能够基于UDP实现可靠传输.
• 理解MTU对UDP/TCP的影响.
应⽤层
• 应⽤层的作⽤: 满⾜我们⽇常需求的⽹络程序, 都是在应⽤层
• 能够根据⾃⼰的需求, 设计应⽤层协议.
• 理解DNS的原理和⼯作流程.
今天就到这里了感谢观看。
相关文章:

网络原理->DNS协议和NAT协议解
前言 大家好我是小帅,今天我们来了解应用层的DNS协议和NAT技术 个人主页:再无B~U~G 文章目录 1.重要应⽤层协议DNS(Domain Name System)1.1 DNS背景 2. NAT技术3. 总结 1.重要应⽤层协议DNS(Domain Name System) DNS是⼀整套从域…...

基于yolov8、yolov5的100种中药材检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型: yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 , 直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU࿰…...
RuoYi排序
RuoYi框架提供了多种实现排序的方法,以满足不同场景下的需求。这里简要介绍几种常见的排序实现方式: 1. 后端排序 1.1 使用startPagePlus方法 RuoYi框架中,可以通过对BaseController进行扩展来实现更灵活的分页与排序功能。例如࿰…...

Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)
我们在做数据之前要知道几个问题 1、在代码层面怎么来数据驱动 2、yaml文件是什么 3、怎么用yaml文件实现对应的数据驱动 我们用的是pytest框架所以相对来说是简单的,我们通过pytest框架来实现,而框架中要数据驱动用到我们装饰器就好啦pytest.mark.p…...

BASLER工业相机维修不能触发拍照如何处理解决这个问题
BASLER工业相机维修不能触发拍照如何处理解决这个问题?最近遇到挺多工业相机维修咨询这个不能触发拍照的案例,所以今天优米佳维修的技术就抽空整理了这篇关于BASLER相机不能触发拍照的处理方法分享给大家。 当碰到巴斯勒工业相机不能触发拍照的问题&…...

Could not locate device support files.
报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…...
linux系统中常用文件日常使用命令记录
我们办公机是Ubuntu系统; 记录下工作中经常使用的几个文件或命令或一些零碎的知识点: (该文档会持续更新) 查看系统信息: uname -a cat /etc/product-info cat /etc/os-version 存放系统启停脚本 /etc/init.d/ 存放源…...

【C++打怪之路Lv16】-- map set
🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…...
TPU-MLIR 项目源码结构分析
TPU-MLIR 项目源码结构分析 本文用作学习记录和交流分享,主要内容为 TPU-MLIR 的源码框架分析和构建流程分析。源码地址:https://github.com/sophgo/tpu-mlir 文件结构 从最外层开始分析 envsetup.sh 该脚本用于配置和初始化开发环境,其中…...

IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“
参考文章:https://blog.csdn.net/yueeryuanyi/article/details/14211090 问题:IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“编译都没问题 解决思路 – >【清除缓存】 1. 强制刷新Maven缓存 选择 Maven 标签,Exe…...
Sourcetree:一款强大的Git客户端
Sourcetree:一款强大的Git客户端 Sourcetree是一款由Atlassian开发的免费Git客户端,它提供了一个直观的图形界面,让用户能够轻松地管理他们的版本控制系统。无论是初学者还是有经验的开发者,Sourcetree都能提供方便快捷的Git操作…...
Linux环境变量与本地变量
文章目录 Linux环境变量与本地变量什么是环境变量查看环境变量设置环境变量本地变量命令行参数 Linux环境变量与本地变量 什么是环境变量 操作系统或运行时环境中存储的一些变量,用来存储与进程或系统相关的配置信息。这些变量在进程启动时由操作系统或Shell读取&…...

ChatGPT的应用场景:开启无限可能的大门
ChatGPT的应用场景:开启无限可能的大门 随着人工智能技术的快速发展,自然语言处理领域迎来了前所未有的突破。其中,ChatGPT作为一款基于Transformer架构的语言模型,凭借其强大的语言理解和生成能力,在多个行业和场景中展现出了广泛的应用潜力。以下是ChatGPT八个最具代表…...

QT按下两次按钮,保存这期间内变换的QtextEdit控件内的数据
这个功能在项目中很常见,对界面里某个控件的数据进行记录,我这个是每秒记录5次,实际就是每200ms触发一次定时器,来满足需求。 .h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtSerialPort> …...
daos源码编译
1. 前言 本文详细介绍如何在almalinux8.9上编译daos.2.0.0源码。系统环境如下: daos: 2.0.0 linux os: almalinux 8.9 linux kernel: 4.18.0-513.5.1.el8_9.x86_64之所以选择2.0.0版本,是因为daos从2.0.0开始是一个全新的架构设计&a…...

HTML飞舞的爱心
目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色…...

C++中智能指针的使用及其原理 -- RAII,内存泄漏,shared_ptr,unique_ptr,weak_ptr
目录 1.智能指针的使用场景分析 2.RAII和智能指针的设计思路 3.C标准库智能指针的使用 4.智能指针的原理以及模拟实现 5.shared_ptr循环引用问题和weak_ptr 5.1shared_ptr循环引用问题 5.2weak_ptr的原理和部分接口 5.3weak_ptr的简单模拟实现 6. shared_ptr的线程安…...

Linux服务器安装mongodb
因为项目需要做评论功能,领导要求使用mongodb,所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo (默认拉取最新的镜像) 如果你想指定版本可以这样 docker pull mongo:4.4&#…...

Android11修改摄像头前后置方法,触觉智能RK3568开发板演示
本文介绍在Android11系统下,修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统&#…...
leetcode 212. 单词搜索 II
给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。 单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...