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

2024-06-10 13:12

本文主要是介绍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、反向代理服务器

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

反向代理的好处:

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

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

这篇关于DNS协议 | NAT技术 | 代理服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048253

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅