cwbsw
2020-02-06 23:25:58 +08:00
复制粘贴一段。
考虑到 UDP 的无状态特性,目前针对其的 NAT 实现大致可分为 Full Cone、Restricted Cone、Port Restricted Cone 和 Symmetric NAT 四种。值得指出的是,对于 TCP 协议而言,一般来说,目前 NAT 中针对 TCP 的实现基本上是一致的,其间并不存在太大差异,这是因为 TCP 协议本身便是面向连接的,因此无需考虑网络连接无状态所带来复杂性。
用语定义
1.内部 Tuple:指内部主机的私有地址和端口号所构成的二元组,即内部主机所发送报文的源地址、端口所构成的二元组
2.外部 Tuple:指内部 Tuple 经过 NAT 的源地址 /端口转换之后,所获得的外部地址、端口所构成的二元组,即外部主机收到经 NAT 转换之后的报文时,它所看到的该报文的源地址(通常是 NAT 设备的地址)和源端口
3.目标 Tuple:指外部主机的地址、端口所构成的二元组,即内部主机所发送报文的目标地址、端口所构成的二元组
详细释义
1. Full Cone NAT:所有来自同一个内部 Tuple X 的请求均被 NAT 转换至同一个外部 Tuple Y,而不管这些请求是不是属于同一个应用或者是多个应用的。除此之外,当 X-Y 的转换关系建立之后,任意外部主机均可随时将 Y 中的地址和端口作为目标地址和目标端口,向内部主机发送 UDP 报文,由于对外部请求的来源无任何限制,因此这种方式虽然足够简单,但却不那么安全
2. Restricted Cone NAT:它是 Full Cone 的受限版本:所有来自同一个内部 Tuple X 的请求均被 NAT 转换至同一个外部 Tuple Y,这与 Full Cone 相同,但不同的是,只有当内部主机曾经发送过报文给外部主机(假设其 IP 地址为 Z )后,外部主机才能以 Y 中的信息作为目标地址和目标端口,向内部主机发送 UDP 请求报文,这意味着,NAT 设备只向内转发(目标地址 /端口转换)那些来自于当前已知的外部主机的 UDP 报文,从而保障了外部请求来源的安全性
3. Port Restricted Cone NAT:它是 Restricted Cone NAT 的进一步受限版。只有当内部主机曾经发送过报文给外部主机(假设其 IP 地址为 Z 且端口为 P )之后,外部主机才能以 Y 中的信息作为目标地址和目标端口,向内部主机发送 UDP 报文,同时,其请求报文的源端口必须为 P,这一要求进一步强化了对外部报文请求来源的限制,从而较 Restrictd Cone 更具安全性
4. Symmetric NAT:这是一种比所有 Cone NAT 都要更为灵活的转换方式:在 Cone NAT 中,内部主机的内部 Tuple 与外部 Tuple 的转换映射关系是独立于内部主机所发出的 UDP 报文中的目标地址及端口的,即与目标 Tuple 无关;在 Symmetric NAT 中,目标 Tuple 则成为了 NAT 设备建立转换关系的一个重要考量:只有来自于同一个内部 Tuple、且针对同一目标 Tuple 的请求才被 NAT 转换至同一个外部 Tuple,否则的话,NAT 将为之分配一个新的外部 Tuple ;打个比方,当内部主机以相同的内部 Tuple 对 2 个不同的目标 Tuple 发送 UDP 报文时,此时 NAT 将会为内部主机分配两个不同的外部 Tuple,并且建立起两个不同的内、外部 Tuple 转换关系。与此同时,只有接收到了内部主机所发送的数据包的外部主机才能向内部主机返回 UDP 报文,这里对外部返回报文来源的限制是与 Port Restricted Cone 一致的。不难看出,如果说 Full Cone 是要求最宽松 NAT UDP 转换方式,那么,Symmetric NAT 则是要求最严格的 NAT 方式,其不仅体现在转换关系的建立上,而且还体现在对外部报文来源的限制方面。