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

NAT技术和代理服务器

NAT IP原理

之前我们讨论了, IPv4协议中, IP地址数量不充足的问题

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

NAT IP转换过程

主机A向主机R发起请求,发送过去了,主机R发送响应回来,但是这个目的IP是私有IP,不具有唯一性,会导致很多局域网的主机收到这个响应,怎么办呢?NAT技术 

  • 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 发送数据时就会生成表中的映射关系; 

NAPT

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项 

NAT技术的缺陷

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

  • 阻碍内网互通:无法从NAT外部向内部服务器建立连接,NAT技术通常只实现了一个方向的地址转换,即内部网络到外部网络的转换。因此,外部网络设备无法主动发起连接到内部私网中的设备,除非内部设备已经建立了到外部网络的连接。这限制了内部网络之间的直接互通能力
  • 装换表的生成和销毁都需要额外开销
  • 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开

内网穿透

由于IPv4的公网地址数量有限,无法为每一台接入互联网的设备分配一个公网IP,因此大量设备只能分配到私有IP地址。在一个公司或家庭内部,可以借助私有IP搭建内网用于相互通讯。然而,当内网中的设备需要被外网访问时,就需要借助NAT技术将私有IP转换为公有IP。但NAT技术的一个问题是,它自动屏蔽了非内网主机主动发起的连接,即从外网发往内网的数据包将被NAT设备丢弃,这使得位于不同NAT设备之后的主机之间无法直接交换信息。这就需要内网穿透技术来解决这个问题

内网穿透的实现原理

内网穿透的实质是利用路由器上的NAT系统,使具有特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。具体来说,内网穿透技术通过以下步骤实现:

  1. 中间服务器转发:内网穿透技术利用中间服务器作为桥梁,将来自公共网络的连接请求转发到私有网络中的目标设备。这个中间服务器可以是任何具有公网IP地址的服务器,它负责接收外部网络的连接请求,并将其转发到内网中的目标设备。
  2. 端口映射:端口映射是将本地计算机的端口映射到公网上,从而实现外网访问本地计算机的技术。通过端口映射,可以将内网计算机的服务暴露在公网上,使得外网用户可以通过公网的地址和端口访问内网的服务。
  3. 协议转换与数据传输:在内网穿透过程中,可能需要对协议进行转换,以确保数据在传输过程中的兼容性和安全性。例如,可以使用TCP/IP协议的三次握手机制,在内网和外网之间建立一条虚拟通道,将内网计算机和外网访问者之间的TCP连接进行转发。同时,也可以使用UDP协议进行数据传输,但UDP不需要建立连接,而是直接将内网计算机发送的UDP数据包通过中间服务器转发到外网。

代理服务器

定义与功能

代理服务器(Proxy Server)是一种位于客户端和服务器之间的网络实体。它可以接收客户端的请求,并代表客户端向服务器发起请求,然后将服务器返回的数据转发给客户端。通过这种方式,代理服务器充当了客户端和服务器之间的中介,为客户端提供了访问服务器的间接途径。

工作原理

代理服务器的工作原理主要基于网络协议(如HTTP、HTTPS、FTP等)的转发机制。具体过程如下:

  1. 请求转发:当客户端发起请求时,请求首先被发送到代理服务器。代理服务器接收请求后,会对请求进行解析和处理,识别出目标服务器的地址和端口。
  2. 地址替换:代理服务器会将客户端请求中的源IP地址替换为自己的IP地址,并向目标服务器发出请求。这样,目标服务器在接收到请求时,会认为请求来自代理服务器,而不是客户端。
  3. 响应接收:目标服务器在接收到请求后,会将数据返回给代理服务器。代理服务器接收响应后,会对响应进行解析和处理。
  4. 响应转发:代理服务器将响应中的目标IP地址替换为自己的IP地址,并将响应发送给客户端。这样,客户端就能收到来自目标服务器的数据。

应用场景与功能扩展

  1. 隐私保护:代理服务器可以隐藏客户端的真实IP地址,使得客户端在访问网络时不易被追踪和识别。这有助于保护客户端的隐私。
  2. 访问控制:代理服务器可以对客户端的请求进行过滤和控制,从而限制对特定资源的访问。这有助于维护网络的安全性和稳定性。
  3. 缓存加速:代理服务器通常具有缓存功能,可以存储经常访问的数据,实现负载均衡。当客户端再次请求这些数据时,代理服务器可以直接从缓存中提供数据,从而提高访问速度和效率。
  4. 突破访问限制:代理服务器可以帮助客户端突破某些网络访问限制,如访问被屏蔽的网站或服务。例如翻墙。

代理服务器分类

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

  1. 正向代理:正向代理位于客户端和目标服务器之间。客户端将请求发送给代理服务器,代理服务器再将请求转发给目标服务器,并将目标服务器的响应返回给客户端。
  2. 反向代理:反向代理位于目标服务器(通常是内部服务器或服务器集群)和客户端之间。客户端直接与反向代理服务器通信,而反向代理服务器再将请求转发给内部服务器,并将内部服务器的响应返回给客户端。

应用场景

  1. 正向代理:主要应用于需要访问外部资源且存在访问限制的场景,如公司网络访问外网资源、突破地域限制访问特定服务等。
  2. 反向代理:主要应用于需要保护内部服务器、实现负载均衡、提高安全性和性能的场景,如Web服务器集群、CDN(内容分发网络)等。

NAT和代理服务器的区别

  1. 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
  2. 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.
  3. 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
  4. 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.

http://www.kler.cn/news/368385.html

相关文章:

  • git命令笔记(速查速查)
  • STM32实现毫秒级时间同步
  • 【WPF】中Dispatcher的DispatcherPriority参数使用
  • 开源竞争-1024程序员开幕式(湖南)
  • 【LeetCode:264. 丑数 II + 小根堆】
  • 解码专业术语——应用系统开发项目中的专业词汇解读
  • Docker 下备份恢复oracle
  • FineReport 分栏报表
  • uniapp使用uni-push模拟推送
  • MySQL 【正则表达式】函数大全
  • 如何用Jmeter做性能测试
  • 构建ECMAScript标准
  • 论文略读Fewer Truncations Improve Language Modeling
  • 玩转springboot之springboot属性绑定原理
  • ESP32-S3-DevKitC-1开发记录帖(2)——与MPU6050一起部署动作识别神经网络
  • 单链表总结
  • Zig 语言通用代码生成器:逻辑,冒烟测试版发布二
  • 学习qmake
  • 配置smaba (Linux与windows通信)
  • GPT打数模——电商品类货量预测及品类分仓规划
  • LeetCode9:回文数
  • golang将指针传给cgo后还能被回收吗?
  • 15-4连续子串和的整除问题
  • Android Studio历史版本下载
  • 开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用
  • jsp网上招标系统+lw视频讲解