P2P技术详解-NAT详解笔记

我们都知道IPv4是一种数据报传输机制,但随着互联网的网络终端数量呈现爆炸式增长,IPv4拥有 2 32 2^{32} 232 个之多的地址空间也即将被耗尽,不足以满足全球的需求。人们开始考虑一系列措施来减缓IPv4的消耗,而NAT(网络地址转换)的出现几乎可以说是使IPv4起死回生。

工作模型

NAT的工作模型主要基于将内部网络的私有IP地址转换为公网IP地址,能够将一个IP地址共享给多个主机,并转化为内网使用,每个主机通过不同的端口与该IP地址关联。

  • 地址转换:当内部设备尝试访问外部网络时,NAT设备(通常是路由器或防火墙)会将数据包中的源IP地址(私有地址)转换为公网IP地址。这个过程在IP层进行,确保内部网络的设备可以使用一个或多个合法的公网IP地址与外界通信。
  • 端口地址转换:除了对IP地址进行转换外,NAT还可以修改TCP或UDP的源端口号,这称为端口地址转换(PAT)。这使得多个设备可以共享一个公网IP地址,通过不同的端口号区分不同的内部设备。

NAT的弊端

NAT破坏了IP端到端的通信能力,这意味着它改变了互联网原有的端到端透明性原则

  • 通信限制
    NAT限制了通信的双向性,因为NAT后面设备的真实IP地址被隐藏,无法被外部网络访问,仅在内部主动发起连接,外部才可响应
  • 部分应用失效
    NAT将多个内部主机的连接复用到一个IP上,对于需要使用固定IP地址的应用或服务,NAT可能导致其功能受限。此外,NAT的存在使得基于IP协议的P2P数据共享变得困难。
  • 延迟以及维护成本增加
    由于需要进行地址转换,NAT可能增加数据传输的转发延迟
    NAT需要维护专用IP地址与公共IP地址以及端口号之间的映射关系,这增加了网络管理的复杂度和成本。
  • 安全性问题
    NAT的工作机制可能会影响一些安全协议的工作,因为它在网络地址转换的过程中修改了IP地址、传输层端口号等信息,这甚至可能导致认证协议不能工作,因为认证的目的是要保证这些信息在传输过程中没有出现变化。
  • 阻碍技术发展
    NAT被视为缓解IPv4地址短缺的临时方案,但从某种意义上推迟了向IPv6迁移的过程,并没有从根本上解决地址不足的问题。

NAT穿越技术

为了解决IP端到端应用在NAT环境下遇到的问题,网络协议的设计者们创造了各种武器来进行应对。但每一个技术都不是完美的,还需要做许多额外处理。

  • 应用层网关
    ALG是一种应用层转换技术,它能够识别并修改IP报文中的地址和端口号信息,以实现私网到公网的通信。

  • 探针技术

    • STUN(Session Traversal Utilities for NAT)
      • STUN服务器位于公网,帮助客户端发现NAT类型。
      • 客户端发送请求到STUN服务器,比较响应中的地址端口信息以识别NAT存在。
    • TURN(Traversal Using Relays around NAT)
      • 针对对称型NAT,提供公网“地址端口对”实现数据中继。
      • TURN分配的映射通过STUN响应给内网主机,用于通知通信对端。
  • 中间件技术
    UPnP(Universal Plug and Play)

    • 允许设备间自动发现和进行网络配置。
    • 客户端维护NAT映射信息,NAT只需按请求转换IP和端口。
    • 直接携带映射信息建立连接,不解析应用层数据。
  • 中继代理技术

    • 旁路技术,在NAT旁部署应用服务器实现中继
    • 客户端请求发送至代理服务器,后者从公网侧发起新请求并中继内容
  • 特定协议的自穿越技术

    • IKE(Internet Key Exchange)和IPesc设计时考虑了NAT穿越
    • 使用UDP封装报文,内部报文不受NAT影响
    • IKE增加了检查NAT存在和绕开NAT的能力

NAT的实现

  • 静态一对一地址映射
    NAT将一个私网地址和一个公网地址进行静态关联,从内而外的方向,将源IP匹配的私网IP替换为公网IP;在反方向,将目的IP匹配公网IP的报文替换为私网IP。网络层以上的部分不进行替换处理,只修正校验和。

  • 静态多对多地址映射
    与静态一对一地址映射类似,只是把一段私网地址映射到一段公网地址。

  • 动态端口映射
    这是最基本的工作方式,即前面多次介绍的将一段内网地址动态翻译为一个或多个公网IP,同时对传输层端口或其他上层协议信息进行转换,以实现IP复用。
    对由内而外的报文,替换源地址和端口,反向报文替换目的地址和端口。仅以连接公网的接口IP作为NAT转换的公网地址时,这种配置最简化,又被称为EasyIP。

  • 动态地址映射(no-pat)
    介于静态多对多地址映射和动态端口映射方式之间的一种工作机制。当有一个私网向公网侧访问到达NAT网关时,NAT网关会检查这个私网IP是否已经有关联的公网IP映射。
    若已存在,则按照转换表直接替换IP,不修改上层协议。
    若不存在关联表项,则在空闲的公网IP池中占用一个IP,并写入关联表中,以后按照这个关联关系进行地址转换。
    当这个私网主机发起的所有对外访问均关闭或超时后,回收公网IP。这种方式可以理解为一组内网主机抢占式地共享一个公网IP地址池。当公网IP地址池用完以后,新连接将无法建立。

  • 静态端口映射
    通过静态配置,把一个固定的私网IP地址和端口关联到一个公网地址和端口上。这种方式适用于在NAT网关上把一个知名服务(如HTTP)映射到一个内部主机上,也称为port forwarding。

  • 应用层网关(ALG)
    在所有NAT产品实现中,ALG是一个必需的功能组件。但在不同实现中,有些产品可以动态加载不同的ALG模块,有些产品可以提供ALG开关控制,有些则不提供任何用户接口。ALG解析上层应用协议的内容,并且根据需要修改IP和端口相关信息,创建和维护附加的关联表项。

  • NAT转换关联表
    关联表中会记录源IP、目的IP、连接协议类型、传输层源端口、目的端口,以及转换后的源IP、源端口,目的IP、目的端口信息,这里的源和目的都是对应于从内网到外网的访问方向。

总结

总的来说,NAT技术虽然在节约IP地址资源方面发挥了重要作用,但也带来了一系列的挑战和问题。随着IPv6的逐渐推广,未来可能会有更多的解决方案来缓解NAT带来的这些问题。

原文链接:P2P技术详解(一):NAT详解——详细原理、P2P简介

  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值