代理和NAT多路转接

news/2025/2/21 10:33:36/

1.NAT技术背景

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

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

2.NAT的三种类型

a.静态地址NAT:静态NAT是一种一对一的地址映射方式,将内部网络中的私有IP地址直接映射到一个固定的公网IP地址,具有每个内部地址都固定映射到一个外部地址且适用于需要从外部网络访问的内部服务器的特点。

b.动态地址NAT:动态NAT通过一个公网IP地址池来动态分配地址,是一种一对多的映射方式,将内部私有IP地址映射到可用的公网IP地址,具有内部地址与外部地址的映射关系是动态分配的的特点。

c.网络地址端口转换NAPT:NAPT(Network Address Port Translation)是一种多对一的地址转换方式,通过转换IP地址和端口号,允许多个内部私有IP地址共享一个公网IP地址,在公网IP地址有限的情况下,NAPT通过端口多路复用技术,为每个内部连接分配一个唯一的端口号。

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

4.NAPT

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

5.NAT和代理服务器

路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程。

代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务 器; 服务器返回结果后, 代理服务器又把结果回传给客户端。

代理服务器分为正向代理和反向代理:正向代理用于请求的转发(例如借助代理绕过反爬虫)常位于客户端和目标服务器之间,客户端通过正向代理服务器向目标服务器发送,此时目标服务器不可见;反向代理往往作为一个缓存,常位于服务器端,客户端发送请求先到反向代理服务器,反向代理服务器转发给服务器,此时反向代理服务器不可见。

NAT和代理服务器的区别:

a.从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比 如通过代理服务器进行翻墙, 另外像UU这样的加速器, 也是使用代理服务器;

b.从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层;

c.从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网;

d.从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上;


http://www.ppmy.cn/news/1573856.html

相关文章

嵌入式0xDEADBEEF

在嵌入式系统中,0xDEADBEEF 是一个常见的“魔数”(magic number),通常用于调试和内存管理。它的含义和用途如下: 1. 调试用途 未初始化内存的标记:在调试时,0xDEADBEEF 常用于标记未初始化或已…

解决 WSL Ubuntu 中 /etc/resolv.conf 自动重置问题

解决 WSL Ubuntu 中 /etc/resolv.conf 自动重置问题 前言问题描述问题原因尝试过的命令及分析解决方案:修改 wsl.conf 禁用自动生成总结 前言 在使用 Windows Subsystem for Linux (WSL) 的 Ubuntu 子系统时,你可能会遇到 /etc/resolv.conf 文件被自动重…

Postman配置环境变量(超详细的)

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Postman是一套比较方便的接口测试工具,但我们在使用过程中,可能会出现创建了API请求,但API的URL会随着服务器IP地址的变化而改…

Python 实现反转、合并链表有啥用?

大家好,我是 V 哥。使用 Python 实现反转链表、合并链表在开发中比较常见,我们先来看看各自的应用场景。先赞再看后评论,腰缠万贯财进门。 2024博客之星年度总评选,感谢给 V 哥投上宝贵的一票 反转链表 比如,在处理…

跳表(Skip List)详解

一、什么是跳表? 跳表是一种基于有序链表的高效数据结构,通过建立多级索引实现快速查询。它在平均情况下支持O(log n)时间复杂度的搜索、插入和删除操作,性能接近平衡树,但实现更为简单。 二、核心原理 1. 层级结构 底层为完整…

JavaScript设计模式 -- 状态模式

在软件开发中,很多对象的行为会随着其内部状态的变化而改变。如果将所有状态逻辑写在一个类中,代码不仅臃肿而且难以维护。**状态模式(State Pattern)**正是为了解决这个问题而设计的。通过将对象的状态封装成独立的状态类&#x…

(萌新入门)如何从起步阶段开始学习STM32 —— 1如何迁移一个开发版的工程

目录 前言 如何迁移一个开发版的工程到其他单片机上? Step 1:明确你单片机的型号 STEP2 确定环境后移植代码 提示:正常而言,我们是使用的套模板建立工程 提示:笔者自身不使用这些模板,我是使用CubeMX快…

Netty入门详解

引言 Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能网络服务器和客户端。它提供了一组丰富的 API,使得开发人员能够轻松地处理各种网络协议,如 TCP、UDP 等,并且支持多种编解码方式&a…