【RFC5382 TCP 的 NAT 行为要求】(翻译)

原文https://datatracker.ietf.org/doc/html/rfc5382NAT Behavioral Requirements for TCPTCP 的 NAT 行为要求本文档为处理 TCP 的 NAT 定义了一组要求,这些要求将允许许多应用程序(例如对等应用程序和在线游戏)一致地工作。开发满足这组要求的 NAT 将大大增加这些应用程序正常运行的可能性。目录 1. 适用性声明 2. 介绍 3. 术语 4. TCP 连接初始化 4.1. ...
摘要由CSDN通过智能技术生成

原文 https://datatracker.ietf.org/doc/html/rfc5382 NAT Behavioral Requirements for TCP TCP 的 NAT 行为要求

本文档为处理 TCP 的 NAT 定义了一组要求,这些要求将允许许多应用程序(例如对等应用程序和在线游戏)一致地工作。开发满足这组要求的 NAT 将大大增加这些应用程序正常运行的可能性。

目录

   1. 适用性声明
   2. 介绍
   3. 术语
   4. TCP 连接初始化
     4.1. 地址和端口映射行为
     4.2. 内部发起的连接
     4.3. 外部发起的连接
   5. NAT 会话刷新
   6. 应用层网关
   7. 其他适用于TCP的要求
     7.1. 端口分配
     7.2. 发夹行为
     7.3. 对 TCP 数据包的 ICMP 响应
   8. 要求
   9. 安全考虑
   10. 致谢
   11. 参考文献
     11.1. 规范参考
     11.2. 参考资料

1. 适用性声明

本文档是 [BEHAVE-UDP] 的附属,它定义了许多与 NAT 相关的术语,列出了所有 NAT 的通用要求,并为处理 IP 和单播 UDP 流量的 NAT 设定了要求。本文档的目的是为处理 TCP 流量的 NAT 设置要求。

本规范的要求适用于 [RFC2663] 中描述的传统 NAT。

本文档仅涵盖 NAT 穿越的 TCP 方面。 TCP 的网络地址转换不需要的Middlebox行为超出了范围。除了可能会干扰 NAT 穿越的应用层网关 (ALG) 行为之外,TCP 层和防火墙之上的数据包检查超出了范围。 TCP NAT 穿越的应用程序和操作系统方面超出了范围。直接控制 NAT 的基于信令的 NAT 穿越方法,例如中间盒通信 (MIDCOM) 和通用即插即用 (UPnP),不在范围之内。最后,用于 NAT 的 TCP 连接(例如,HTTP 或安全外壳协议 (SSH) 管理接口)和由 NAT 发起的 TCP 连接(例如,可靠的系统日志客户端)超出了范围。

2. 介绍

网络地址转换器 (NAT) 会阻碍应用程序中的连接,在这些应用程序中,会话可能会启动到内部主机。读者可以参考 [RFC3022] 了解有关传统 NAT 的详细信息。 [BEHAVE-UDP] 在 IP 和 UDP 的上下文中列出了 NAT 的术语和要求。本文档通过为处理 TCP 流量的 NAT 设置要求来补充这些内容。 [BEHAVE-UDP] 中的所有定义和要求都在这里继承。

[RFC4614] 记录了 TCP 从最初定义 [RFC0793] 到当今实现的演变。尽管 TCP 在拥塞控制和流量控制、安全性和对高带宽网络的支持方面发生了很大变化,但发起连接的过程(即 3 次握手或同时打开)几乎没有变化。 NAT 影响最大的是连接初始化过程。诸如 T/TCP [RFC1644] 之类的实验性方法已经提出了替代的连接启动方法,但已经发现它很复杂并且容易受到拒绝服务攻击。因此,现代操作系统和 NAT 主要支持 [RFC0793] 中描述的 3 次握手和同时打开的连接启动模式。最近,已经设计了许多技术来使对等 TCP 应用程序跨 NAT 工作。 [STUNT]、[NATBLASTER] 和 [P2PNAT] 描述了允许对等应用程序通过 NAT 建立 TCP 的单边自地址修复 (UNSAF) 机制。这些方法只需要修改端点应用程序并使用符合标准的操作系统堆栈。然而,这些方法取决于特定的 NAT 行为,这些行为通常(但并非总是)由 NAT 支持(有关详细信息,请参阅 [TCPTRAV] 和 [P2PNAT])。因此,完整的 TCP NAT 穿越解决方案有时被迫依赖公共 TCP 中继来穿越不合作的 NAT。本文档定义了确保 TCP NAT 穿越方法不会被迫使用数据中继的要求。

3. 术语

本规范中的“NAT”包括“基本 NAT”和“网络地址/端口转换器 (NAPT)”[RFC2663]。术语“NAT 会话”改编自 [NAT-MIB],定义如下。

NAT 会话 - NAT 会话是内部领域中所见的 TCP 会话与外部领域中所见的 TCP 会话之间的关联,这得益于 NAT 转换。 NAT 会话将提供两个会话表示之间的转换粘合剂。

本文档使用术语“TCP 连接”(或仅“连接”)来指代由 4 元组(源和目标 IP 地址和 TCP 端口)和初始序列号 (ISN) 标识的各个 TCP 流。

本文档使用 [BEHAVE-UDP] 中定义的术语“地址和端口映射”(或仅“映射”)来指代 TCP 连接的网络地址和端口转换所需的 NAT 状态。本文档还使用术语“端点独立映射”、“地址相关映射”、“地址和端口相关映射”、“过滤行为”、“端点独立过滤”、“地址相关过滤”、“地址” [BEHAVE-UDP] 中定义的“端口相关过滤”、“端口分配”、“端口过载”、“发夹”和“外部源 IP 地址和端口”。

4. TCP 连接初始化

本节介绍适用于 TCP 连接初始化的各种 NAT 行为。

4.1.地址和端口映射行为

NAT 使用映射来转换每个 TCP 连接的数据包。映射是为从内部发起的连接动态分配的,并且可能会重新用于某些后续连接。关于何时可以重用映射的 NAT 行为对于不同的 NAT 有所不同,如 [BEHAVE-UDP] 中所述。

考虑一个内部 IP 地址和 TCP 端口 (X:x),它启动到外部 (Y1:y1) 元组的 TCP 连接。设 NAT 为此连接分配的映射为 (X1':x1')。此后不久,端点发起从同一个 (X:x) 到外部地址 (Y2:y2) 的连接,并在 NAT 上获取映射 (X2':x2')。根据 [BEHAVE-UDP],如果 (X1':x1') 对于 (Y2:y2) 的所有值都等于 (X2':x2'),则 NAT 被定义为具有“端点独立映射”行为。如果 (X1':x1') 仅在 Y2 等于 Y1 时才等于 (X2':x2')&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值