当前位置: 首页 > news >正文

四种NAT类型

1.全锥型NAT(Full Cone NAT)

全锥型NAT(Full Cone NAT),又称为一对一NAT,是四种主要NAT类型之一,用于实现私有网络与公共网络之间的IP地址转换和端口转换。在全锥型NAT中,一个内部IP地址和端口的组合被映射到一个公共IP地址和端口的组合。一旦映射建立,任何外部设备都可以使用这个公共IP地址和端口与内部设备通信,而不管外部设备的IP地址和端口是什么。这种映射是持久的,直到NAT设备决定删除映射。

全锥型NAT的行为特点如下:

  • 映射的一致性:内部IP和端口映射到一个固定的公共IP和端口。
  • 接收外部请求:任何外部主机都可以通过映射的公共IP和端口发送数据到内部主机,只要内部主机之前至少发送过一次数据包到任意外部主机。
  • 简单性:这种类型的NAT简单易懂,容易实现P2P通信。

全锥型NAT是最友好的NAT类型,对于P2P通信和VoIP等应用来说是理想的。然而,它提供的安全性较低,因为任何知道了映射的公共IP和端口的外部主机都可以发送数据到内部网络。

在WebRTC场景中,全锥型NAT是最容易进行NAT穿透的,因为STUN服务器可以帮助发现映射的公共IP地址和端口,然后这些信息可以被用来建立直接的P2P连接。由于全锥型NAT的开放性,通常不需要使用TURN服务器来作为中继,这样可以减少延迟和成本。

2. 限制锥型NAT(Restricted Cone NAT)

限制锥型NAT与全锥型NAT相似,但它增加了一些限制。内部主机在发送数据给外部主机后,只有收到过来自该外部主机的响应数据包的外部主机才能回送数据包。这意味着:

  • 内部主机必须先发送数据到外部主机,这样NAT设备才会创建一个映射。
  • 只有先前接收到内部主机数据的外部主机才能向内部主机发送数据。

3. 端口限制锥型NAT(Port Restricted Cone NAT)

端口限制锥型NAT比限制锥型NAT更加严格。它不仅要求内部主机先向外部主机发送数据,而且外部主机回送数据时必须使用同样的端口号,即使是来自已经发送过数据的外部主机也不例外。其特点包括:

  • 内部主机必须先发送数据到外部主机特定的端口,NAT才会创建映射。
  • 只有从相同端口发送数据到内部主机的外部主机,NAT才会允许数据通过。

4. 对称型NAT(Symmetric NAT)

对称型NAT是最严格的NAT类型,它对每个外部目的地(IP地址和端口)使用不同的映射。如果一个内部主机使用相同的内部IP地址和端口号发送数据包到两个不同的外部IP地址,NAT设备会为每个外部IP地址分配不同的公共IP地址和端口号。这意味着:

  • 对于内部主机与每个外部主机的每个会话,NAT设备都会创建一个唯一的映射。
  • 即使是来自同一个内部主机,只要目标外部主机的IP地址或端口不同,NAT设备就会为其分配不同的公共端口。

对称型NAT对于P2P通信(如WebRTC)来说是个挑战,因为STUN服务器无法提供一个稳定的公共端口来建立直接通信。在这种情况下,通常需要使用TURN服务器来中继所有流量。

前三种nat有一个共同点:只要内网中的(IP,端口)相同的请求就会被NAT映射到同一个外网(IP,port)。

  1. 全锥形NAT    任何公网主机都可与之通讯。双方都可以主动发起
  2. 地址受限锥形NAT    只有内网主动连接的公网主机可与之通讯,必须内网主机发起。且此公网主机可通过任意端口与内网主机通讯。
  3. 端口受限锥形NAT    只有内网主动连接的公网主机的连接可与之通讯,必须内网主机发起。且此公网只能通过固定的端口与之进行通讯。
  4. 对称NAT    根据四元组创建NAT映射,四元组中的任何一项发生变化均导致NAT映射的更换。此形状双方一对一映射,因此被称之为对称NAT

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • OpenCVSharp中的图像数据结构与类型
  • 【PyQt6 应用程序】视频百叶窗效果一键生成模块
  • Android Studio gradle下载太慢了!怎么办?(已解决)
  • RO通讯数据包
  • Linux实现异步IO的方法:epoll,posix aio,libaio,io_uring
  • Datawhale x李宏毅苹果书AI夏令营深度学习详解进阶Task03
  • 基于生成对抗模型GAN蒸馏的方法FAKD及其在EdgesSRGAN中的应用
  • OpenGuass under Ubuntu_22.04 install tutorial
  • 基于Python实现AES加密与解密
  • 《QDebug 2024年8月》
  • 深度学习(二)-损失函数+梯度下降
  • 【数据结构】-----哈希
  • 【科研新手必备】如何高效、高质量、科学的科研?
  • 仿论坛项目--第二部分习题
  • JAVA进阶学习14
  • Google 是如何开发 Web 框架的
  • canvas 绘制双线技巧
  • CSS 三角实现
  • JavaScript设计模式之工厂模式
  • JSONP原理
  • Making An Indicator With Pure CSS
  • node 版本过低
  • nodejs实现webservice问题总结
  • 初探 Vue 生命周期和钩子函数
  • 工作手记之html2canvas使用概述
  • 记一次和乔布斯合作最难忘的经历
  • 前端存储 - localStorage
  • 前嗅ForeSpider中数据浏览界面介绍
  • 浅谈Golang中select的用法
  • 树莓派 - 使用须知
  • 我与Jetbrains的这些年
  • 学习JavaScript数据结构与算法 — 树
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ###C语言程序设计-----C语言学习(3)#
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (不用互三)AI绘画工具应该如何选择
  • (独孤九剑)--文件系统
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)opengl函数加载和错误处理
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转) Android中ViewStub组件使用
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net Redis的秒杀Dome和异步执行
  • .NET 设计一套高性能的弱事件机制
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • ?