DNS协议 | NAT技术 | 代理服务器

目录

一、DNS协议

1、DNS背景

2、DNS协议

域名

域名解析

二、NAT技术

1、NAT技术

2、NAPT技术

3、NAT技术的缺陷

三、代理服务器

1、正向代理服务器

2、反向代理服务器


一、DNS协议

域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS协议是用来将域名转换为IP地址的。

1、DNS背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序。但是IP地址不方便记忆且不够形象。于是人们发明了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP地址的关系。最初,通过互连网信息中心(SRI-NIC)来管理这个hosts文件的。如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件。其他计算机也需要定期下载更新新版本的hosts文件才能正常上网。

这样就太麻烦了,于是产生了DNS系统。

2、DNS协议

DNS协议:是一个应用层协议。其作用是将域名和IP地址构建映射关系。

域名

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。

例如,我们平时访问百度网页的时候,都是使用www.baidu.com,而不会使用百度服务器的IP来进行访问。因为使用域名能够直观地让普通用户知道所访问的网页是什么,且方便记忆,利于公司进行商业推广。

com:一级域名。表示这是一个企业域名,同级的还有 "net"(网络提供商),"org"(非盈利组织) 等。
baidu:二级域名。公司名。
www:只是一种习惯用法。之前人们在使用域名时,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议。

域名解析

虽然说普通用户能够通过域名来访问服务器,但是我们知道,真正想要访问服务器必须通过套接字,且需要IP地址。所以,使用域名并不能直接访问服务器,我们需要先将域名转换成对应的服务器IP地址,才能够访问服务器,这就是DNS域名解析服务。域名解析所使用的协议是UDP协议。如下图:

浏览器会先向附近的域名解析服务发起请求解析,如果找不到对应的IP,就会向上级域名解析服务发起解析请求,如果还没有,就一直往上级请求,直到根域名服务器去寻找。 

二、NAT技术

1、NAT技术

之前我们讨论了,IPv4协议中,IP地址数量不充足的问题。NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能。

NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法。很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP。全局IP要求唯一,但是私有IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的。

路由器在将某个数据包由私网转发到公网的时候,会在自身内部维护一个映射表,这个映射表维护的就是地址转化的关系。

那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的,都是路由器WAN口IP。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?这就要用到NAPT技术了。

2、NAPT技术

如上图, 局域网中的主机A和主机B都在访问同一个服务器,并且它们访问服务器时采用的端口号都是1025。

假设主机A发送的数据包先到达路由器,此时路由器将数据包的源IP地址替换成自己的WAN口IP地址,由于路由器用于访问该服务器的1025号端口没有被使用,因此该数据包的源端口号可以不变。

当主机B发来的数据包到达路由器时,路由器同样将数据包的源IP地址替换成自己的WAN口IP地址,但此时路由器用于访问该服务器的1025号端口已经被主机A使用了,因此路由器会重新选定一个端口号对数据包的源端口号进行替换。即必要的时候,IP地址和端口号都要替换了。

这样就得到了如下的转换表。

有了上图的转换表,就可以做到从左到右的一一对应,也可以做到从右到左的一一对应。这样,服务器返回的响应数据包就可以明确去往局域网的哪台主机了。

当服务器发来的响应数据到达路由器时,虽然服务器发给主机A和主机B的数据包对应的目的IP地址是一样的。但路由器是用自己的1025号端口代替主机A进行数据请求的,而用的是1026号端口代替主机B进行数据请求的。 这样路由器可以通过转换表,明确地将对应的响应交给正确的局域网主机。

3、NAT技术的缺陷

由于NAT依赖这个转换表,所以有诸多限制:

无法从NAT外部向内部服务器建立连接。

装换表的生成和销毁都需要额外开销。

通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开。

三、代理服务器

代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。

代理服务器分为正向代理服务器和反向代理服务器。 

1、正向代理服务器

正向代理,是一个位于客户端和目标服务器之间的服务器,客户端并不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端。原理如下图:

比如有的大学为了学生的思想道德素质建设,并且为了防止学生访问一些不良网站,在有的大学校园内部一般都会有自己的服务器,当我们使用学校内网上网时。

我们对外网发起的数据请求,首先会转发到学校里面的代理服务器上,然后由学校的这台服务器代替你对外网进行访问。当学校的服务器收到对应外网的响应数据后,会对数据进行合法性检查,再由学校的这台服务器将数据转发给你。 

正向代理的好处:正向代理最大的一个好处就是可以加速资源访问。比如公司中大量员工都要访问外网的同一个资源,那么正向代理服务器就可以将对应的资源缓存到本地,此时当其他人要访问该资源时,直接在正向代理服务器就可以获取,而不需要再次进行外网访问。

2、反向代理服务器

反向代理服务器,也是一个位于客户端和目标服务器之间的服务器,客户端向抖音服务器发起数据请求时,由反向代理服务器将客户端的数据请求收集起来,再由其推送给真正的后端目标服务器进行处理,数据处理完毕后抖音服务器再将数据结果直接返回给客户端。

反向代理的好处:

反向代理可以起到负载均衡的作用。比如不设置反向代理服务器,那么用户在访问抖音时,就会随机访问到字节内部的某台服务器,此时就可能导致某些服务器压力太大,而某些服务器却处于闲置状态。而设置了反向代理服务器后,我们就能够通过某些算法让用户的数据请求较为平均的落到每台服务器上。

反向代理还能起到安全防护的作用。有了方向代理服务器后,我们不需要直接将提供服务的服务器对应的信息暴露出去。当有非法请求到反向代理服务器时,反向代理服务器就相当于一层软件屏障,让这些非法请求在反向代理服务器这里就被过滤掉,而不会影响内部实际提供服务的服务器。

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

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

相关文章

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题 2024/6/5 13:53 rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh --help rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh lun…

【学术小白成长之路】02三方演化博弈(基于复制动态方程)期望与复制动态方程

从本专栏开始,笔者正式研究演化博弈分析,其中涉及到双方演化博弈分析,三方演化博弈分析,复杂网络博弈分析等等。 先阅读了大量相关的博弈分析的文献,总结了现有的研究常用的研究流程,针对每个流程进行拆解。…

快速搭建rtsp server(Ubuntu)

在现代视频监控和实时视频流媒体应用中,实时流协议(RTSP)服务器扮演着至关重要的角色。无论是家庭安防系统、企业级监控还是流媒体服务,RTSP服务器都能提供高效、稳定的解决方案。然而,对于许多初学者或开发者来说&…

数学建模笔记

数学建模 定义角度 数学模型是针对参照某种事物系统的特征或数量依存关系,采用数学语言,概括地或近似地表述出的一种数学结构,这种数学结构是借助于数学符号刻画出来的某种系统的纯关系结构。从广义理解,数学模型包括数学中的各…

高考分数查询结果自动推送至微信(卷II)

祝各位端午节安康!只要心中无结,每天都是节,开心最重要! 在上一篇文章高考分数查询结果自动推送至微信(卷Ⅰ)-CSDN博客中谈了思路,今天具体实现。文中将敏感信息已做处理,读者根据自…

【大学物理】波动光学:光的衍射

23.2 单缝的夫琅禾费衍射_哔哩哔哩_bilibili 1 光的衍射和惠更斯-菲涅尔原理 干涉vs衍射:干涉研究的是两个分立的子光源,衍射研究的是连续的子光源。 两位科学家用分解的思想,一个解决了方向一个解决了光强。 2 单缝的夫琅禾费衍射 夫琅禾…

【SpringBoot + Vue 尚庭公寓实战】项目初始化准备(二)

【尚庭公寓SpringBoot Vue 项目实战】项目初始化准备(二) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】项目初始化准备(二)1、导入数据库2、创建工程3、项目初始配置3.1、SpringBoot依赖配置3.2、创建application.yml文件3.3、…

基于Java+SpringBoot制作一个景区导览小程序

基于Java+SpringBoot制作一个景区导览小程序。其中系统前端功能包括注册登录、景区采风、旅游导览、地图导航、发布采风、门票预订、修改个人信息;系统后台功能包括用户管理、景区管理、采风管理等模块。 摘要一、小程序1. 创建小程序2. 首页3. 景区采风页4. 旅游导览页5. 发布…

vmware-17虚拟机安装教程,安装linux centos系统

下载VMware 1.进入VMware官网:https://www.vmware.com/sg/products/workstation-pro.html 2.向下翻找到,如下界面并点击“现在安装” 因官网更新页面出现误差,现提供vmware17安装包网盘链接如下: 链接:https://pan.b…

Ubuntu22.04 下 pybind11 搭建,示例

Pybind11 是一个轻量级的库,用于在 C 中创建 Python 绑定。Ubuntu22下安装pybind11步骤如下: 1. 安装 pybind11 1.1 pip 命令安装 pip3 install pybind11 1.2 源代码安装 安装依赖库: sudo pip install -i https://pypi.tuna.tsinghua.e…

人工智能和物联网如何结合

欢迎来到 Papicatch的博客 目录 ​ 🍉引言 🍉AI与IoT的结合方式 🍈数据处理和分析 🍍实例 🍈边缘计算 🍍实例 🍈自动化和自主操作 🍍实例 🍈安全和隐私保护 &…

Qt窗口与对话框

目录 Qt窗口 1.菜单栏 2.工具栏 3.状态栏 4.滑动窗口 QT对话框 1.基础对话框QDiaog 创建新的ui文件 模态对话框与非模态对话框 2.消息对话框 QMessageBox 3.QColorDialog 4.QFileDialog文件对话框 5.QFontDialog 6.QInputDialog Qt窗口 前言:之前以上…

【JAVASE】JAVA应用案例(下)

一:抢红包 一个大V直播时,发起了抢红包活动,分别有9,666,188,520,99999五个红包。请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完即止,注意:一个红包只能被抽一次,先抽或…

输入偏置电流是什么?

输入失调电流与输入补偿电流概念一样(input offset current):同相减去反相输入端偏置电流的差值。这是由生产工艺导致同相与反相端的电流大小方向都会有所不同。 第一种情况:同相输入端减去反相输入端 第一种情况:同相…

堆和栈(heap and stack)

1、堆:一块内存空间,可以从中分配一个小buffer,用完后再把它放回去。 2、栈:也是一块内存空间,cpu的sp寄存器指向它,它可以用于函数调用、局部变量、多任务系统里保存现场。 PUSH [r3-r6,lr]; #将r3到r6寄…

【OpenHarmony】ArkTS 语法基础 ④ ( ArkTS UI 渲染控制 | if else 条件渲染 | ForEach 循环渲染 )

文章目录 一、ArkTS UI 渲染控制1、if else 条件渲染2、ForEach 循环渲染 二、完整代码示例1、自定义组件代码2、主界面代码3、执行结果 参考文档 : <HarmonyOS第一课>ArkTS开发语言介绍 ForEach 渲染控制文档 : https://developer.huawei.com/consumer/cn/doc/harmonyo…

软件心学格物致知篇(7)软件开发文档写什么

软件心学格物致知篇(7)软件开发文档写什么 前言 当今约束大家生产力的有哪些因素&#xff1f;是编程语言&#xff1f;开发框架&#xff1f;开发IDE&#xff1f;还是自身迫切需要更高水平的技能&#xff1f; 好像上面的每一项技术都在不断发展&#xff0c;也在不断的为我们生…

error while loading shared libraries 找不到动态库问题如何解决

在使用 c 或 c 开发应用时&#xff0c;在启动程序时&#xff0c;有时会遇到这个错误&#xff0c;找不到动态库。这个时候&#xff0c;我们使用 ldd 来查看&#xff0c;发现可执行文件依赖的动态库显示为 not found。 1 实验代码 使用如下 3 个文件做实验。 hello.h 中声明了函…

基于51单片机俄罗斯方块小游戏

基于51单片机俄罗斯方块游戏 &#xff08;仿真&#xff0b;程序&#xff09; 功能介绍 具体功能&#xff1a; 1.用LCD12864显示游戏界面&#xff1b; 2.用四个按键控制游戏&#xff08;左、右移、下移、翻转&#xff09;&#xff1b; 3.游戏规则和平时玩的俄罗斯方块一样&a…

基于vue的音乐播放器的设计与实现(论文+源码)_kaic

摘 要 当下&#xff0c;如果还依然使用纸质文档来记录并且管理相关信息&#xff0c;可能会出现很多问题&#xff0c;比如原始文件的丢失&#xff0c;因为采用纸质文档&#xff0c;很容易受潮或者怕火&#xff0c;不容易备份&#xff0c;需要花费大量的人员和资金来管理用纸质文…