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.mfbz.cn/a/695919.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue TypeScript 实战:掌握静态类型编程

title: Vue TypeScript 实战:掌握静态类型编程 date: 2024/6/10 updated: 2024/6/10 excerpt: 这篇文章介绍了如何在TypeScript环境下为Vue.js应用搭建项目结构,包括初始化配置、创建Vue组件、实现状态管理利用Vuex、配置路由以及性能优化的方法&#x…

vue2自定义指令

本节目标 快速入门v-loading 快速入门 指令对比 基本语法 使用: v-指令名"指令值"定义: 通过 directives 局部定义或者全局定义通过事件对象 el 可以拿到指令所在元素通过形参 binding 可以拿到指令的传值通过update钩子, 可以监听指令值的变化,进行更新操作 局部…

2024浙江省三支一扶报名流程!超详细图解!

2024浙江省三支一扶报名流程!超详细图解! 浙江省高校毕业生“三支一扶”报名即将开始,准备报考的同学们做好准备: 🔴重点时间安排: 1、网络报名:6月11日9:00至6月18日17:00 2、资格审核&…

速卖通店铺防关联该怎么做?

大家都知道,想要进行多账号操作必须一再小心,否则会有很大的关联风险,而账号关联所带来的后果是卖家绝对不能轻视的,严重的话会导致封号,这样一来自己前期的辛苦运营就全都打水漂了,因此防关联很重要&#…

C++对象池设计与实现

目录 一、对象池简介 1.1 池化技术 1.2 什么是对象池 1.3 对象池分配策略 二、C new和delete运算符重载 三、实现一个对象池框架 3.1 策略接口 四、实现几种对象池的分配策略 4.1 数组策略 4.2 堆策略 ​编辑 4.3 栈策略 4.4 区块策略 一、对象池简介 1.1 池化技…

【C语言】插入排序(经典算法,建议收藏!!!)

目录 1、原理2、代码展示3、解析代码4、适用场景 1、原理 插入排序(Insertion Sort)是一种简单直观的排序算法,其原理可以简述如下: 1.分已排序区间和未排序区间: 将数组分为已排序区间和未排序区间。初始时,已排序区…

51单片机-独立按键控制灯灯灯

目录 简介: 一. 1个独立按钮控制一个灯例子 二. 在加一个独立按键,控制第二个灯 三. 第一个开关 开灯, 第二个开关关灯 四. 点一下开灯,在点一下关灯 五. 总结 简介: 51 单片机具有强大的控制能力,而独立按键则提供了一种简单的输入方式。 当把独立按键与 …

Vue 2看这篇就够了

Vue 2 技术文档 Vue.js 是一款用于构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。而 Vue.js 2(以下简称 Vue…

Leetcode 力扣113. 路径总和 II (抖音号:708231408)

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…

【设计模式】结构型-桥接模式

当抽象与实现,各自独立, 桥接模式,如彩虹桥,连接两岸。 文章目录 一、类爆炸与代码重复二、桥接模式三、桥接模式的核心组成四、运用桥接模式五、桥接模式的应用场景六、小结推荐阅读 一、类爆炸与代码重复 场景假设&#xff1a…

标量、向量、矩阵、张量是什么?

参考视频:标量、向量、矩阵、张量-机器学习-李文哲AI人工智能培训_哔哩哔哩_bilibili 参考资料:深度学习基础:标量、向量、矩阵、张量_深度学习本质是矩阵-CSDN博客 标量是一个独立存在的数,比如线性代数中的一个实数5就可以被看…

每日一题——Python实现PAT乙级1019 数字黑洞(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 点评代码的优缺点: 时间复杂度: 空间复杂度&#…

DAMA学习笔记(一)-数据管理

1.引言 数据管理(Data Management) 是为了 交付、 控制、 保护 并 提升 数据和信息资产的 价值 , 在其整个生命周期中制订 计划、 制度、 规程和实践 活动, 并 执行 和 监督 的过程。 数据管理专业人员(Data Management Professional) 是指 从事数据管理各方面的工作…

Cinema 4D 2024 软件安装教程、附安装包下载

Cinema 4D 2024 Cinema 4D(C4D)是一款由Maxon开发的三维建模、动画和渲染软件,广泛用于电影制作、广告、游戏开发、视觉效果等领域。Cinema 4D允许用户创建复杂的三维模型,包括角色、场景、物体等。它提供了多种建模工具&#x…

Flink 基于 TDMQ Apache Pulsar 的离线场景使用实践

背景 Apache Flink 是一个开源的流处理和批处理框架,具有高吞吐量、低延迟的流式引擎,支持事件时间处理和状态管理,以及确保在机器故障时的容错性和一次性语义。Flink 的核心是一个分布式流数据处理引擎,支持 Java、Scala、Pytho…

数据库期末设计——图书管理系统

目录 1.前置软件以及开发环境: 2.开发过程讲解 代码环节: 数据库代码 1.BookDao.java 2.BookTypeDao.java 3.UserDao.java 4.Book.java 5.BookType.java 6.User.java 7.DbUtil.java 8.Stringutil.java 9.BookAddInterFrm.java 10.BookMan…

redis 05 复制 ,哨兵

01.redis的复制功能,使用命令slaveof 2. 2.1 2.2 3. 3.1 3.1.1 3.1.2 3.1.3 4 4.1 4.2 例子 5.1 这里是从客户端发出的指令 5.2 套接字就是socket 这里是和redis事件相关的知识 5.3 ping一下

Capture One 23 软件安装教程、附安装包下载

Capture One Capture One 23 是一款功能极为全面的图片处理软件,为用户提供了真正的逼真色彩处理和无缝衔接的编辑体验,以及业界最快的联机拍摄功能,可以满足用户在图像创作上的所有功能,如创作全景拼接大图、高级色彩调整、遮罩…

【Golang】Map 稳定有序遍历的实现与探索:保序遍历之道

【Golang】Map 稳定有序遍历的实现与探索:保序遍历之道 大家好 我是寸铁👊 总结了一篇【Golang】Map 稳定有序遍历的实现与探索:保序遍历之道✨ 喜欢的小伙伴可以点点关注 💝 前言🍎 在计算机科学中,数据结…

GAT1399协议分析(7)--pycharm anaconde3 配置pyside2

一、安装pyside2 pip install pyside2 二、配置qtdesigner File->Settings->Tools->External tools 点击添加,添加QtDesigner, 注意designer.exe路径,需要在虚拟环境下。 三、添加pySide2 File->Settings->Tools->Ext…