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一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.
相关推荐
落笔画忧愁e1 小时前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书
小冷爱学习!1 小时前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
技术小齐2 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
落幕2 小时前
C语言-进程
linux·运维·服务器
shimly1234563 小时前
tcpdump 用法示例
网络·测试工具·tcpdump
xmweisi5 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee5 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
DC_BLOG6 小时前
Linux-GlusterFS进阶分布式卷
linux·运维·服务器·分布式
yourkin6666 小时前
TCP...
服务器·网络·tcp/ip
cookies_s_s6 小时前
Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
linux·运维·服务器·数据结构·c++·算法·哈希算法