NAT拓展
NAT ALG(NAT应用级网)
为某些应用层协议,因为其报文内容可能携带IP相关信息,而普通NAT转化无法将这些IP转化,从而导致协议无法正常运行
例如FTP,DHCP,RSTP,ICMP,IPSEC,GRE等
内网穿透
双方设备需要互通,可借助FRP服务器而不进行NAT转换直接进行通讯,常用于远程控制和游戏跨局域网联机
原理就是在公网内找一台服务器作为FRP服务器,所有数据经过FRP服务器进行端口映射转发给对端,从而实现两者间通信不使用NAT
NAT网络类型(STUN定义)
完全锥形NAT
私网IP发送数据到公网时,NAT设备会将私网IP和端口映射为一个公网IP和端口,所有私网IP被转换为同一个公网IP和端口,策略较为宽松,达成映射关系即可互访
限制锥形NAT
同上,但是只有当内部主机之前已经向公网主机发送过报文,公网主机才能向私网主机发送报文
端口限制锥形NAT
与限制锥型NAT类似,但它包括端口号,也就是说只有之前通信过的公网主机IP和端口号才能向私网主机发送报文
对称NAT
根据发送目的地映射公网IP,不同请求有不同的映射关系,只有收到数据的公网主机才可以反过来向私网主机发送报文
NAT打洞
定义
打洞是指通过中间设备(如路由反射器)的协助在各自的NAT网关上建立相关表项,使P2P连接双方发送的报文能够直接穿透NAT网关的过程。
过程
1.通讯前两台设备进行牵引搭桥,即在公网内寻求一台服务器
2.双方发给服务器自己的私网IP和转换后的公网IP以及端口
3.服务器收到后向两台设备分别发送对端的信息
4.双方收到后,用服务器给的公网IP直接进行通讯
注意
1.对称性NAT无法进行打洞,因为其没有一个固定的外部可见的IP和端口,外部主机难以主动发起连接到内部主机
2.完全锥形NAT虽然结构简单但安全性低,最安全的是对称NAT
STUN
STUN是一种解决P2P应用NAT穿越问题的常用技术。它允许网络设备找出通信端点经NAT设备后的IP地址和端口号,并利用这些信息在通信双方之间建立一条可以穿越NAT设备的数据通道,实现P2P通信
工作原理
1.NAT类型检测:STUN通过客户端与STUN服务器之间的请求和响应来发现NAT的外部IP地址和端口号。客户端首先向STUN服务器发送一个请求,STUN服务器收到请求后,回复一个响应,其中包含了从服务器角度看客户端的公网IP地址和端口信息
2.NAT打洞:过程同上
TURN
TURN允许位于NAT后面的客户端通过一个中继服务器与其他客户端进行通信,特别是在直接通信(如P2P)由于NAT限制而无法实现时,可以解决对称NAT无法打洞的问题
工作原理
- 分配阶段:客户端首先向TURN服务器请求分配一个中继地址,TURN服务器会响应一个包含分配的中继地址、客户端NAT映射后的地址和有效期的消息
- 转发阶段:客户端通过创建转发授权请求,允许TURN服务器将数据转发给指定的对等方。客户端可以通过发送数据指示消息(Send Indication)将数据发送给对等方,而对等方可以直接将数据发送到客户端的中继地址
总结
NAT给IPv4地址延长寿命的同时,也给一些协议的正常运行造成了影响,这也是为什么NAT不能从根源解决问题的原因。而NAT扩展协议的出现不仅提高了网络安全性,增加了网络灵活性,解决了因普通NAT导致P2P通信中断的问题。不过,同时也增加了网络复杂度,提高设备性能要求。
相关文章:
NAT拓展
NAT ALG(NAT应用级网) 为某些应用层协议,因为其报文内容可能携带IP相关信息,而普通NAT转化无法将这些IP转化,从而导致协议无法正常运行 例如FTP,DHCP,RSTP,ICMP,IPSEC…...
Flink四大基石之State
State state 可以理解为-- 历史计算结果 有状态计算和无状态计算 无状态计算: 不需要考虑历史数据, 相同的输入,得到相同的输出!如:map, 将每个单词记为1, 进来一个hello, 得到(hello,1),再进来一个hello,得到的还是(hello,1) 有状态计算: 需要考虑历史数据, 相同的输入,可…...
Spacy小笔记:zh_core_web_trf、zh_core_web_lg、zh_core_web_md 和 zh_core_web_sm区别
Spacy小笔记 最近频繁用到spacy,就小记一下。 2024.11.29 zh_core_web_trf、zh_core_web_lg、zh_core_web_md 和 zh_core_web_sm区别 首先,它们都是预训练的中文模型: zh_core_web_trf:395M 架构: 基于 Transformer 架构(bert…...
第六届智能控制、测量与信号处理国际学术会议 (ICMSP 2024)
重要信息 2024年11月29日-12月1日 中国陕西西安石油大学雁塔校区 大会官网:www.icmsp.net 大会简介 第六届智能控制、测量与信号处理国际学术会议(ICMSP 2024)由西安石油大学、中海油田服务股份有限公司、浙江水利水电学院与中国石油装备…...
docker服务容器化
docker服务容器化 1 引言2 多个容器间网络联通2.1 单独创建关联2.2 创建时关联 3 服务搭建3.1 镜像清单3.2 容器创建 4 联合实战4.2 flink_sql之kafka到starrocks4.2 flink_sql之mysql到starrocks 5 文献借鉴 1 引言 利用docker可以很效率地搭建服务,本文在win1…...
【QT】控件8
1.QDial 通过调节旋钮位置来控制窗口的不透明度: void Widget::on_dial_valueChanged(int value) {qDebug()<<value;this->setWindowOpacity((double)value/100); }效果演示: 2.Date/Time Edit 计算两个日期的差值 ui界面设计 计算按钮按下…...
漫谈推理谬误——错误因果
相关文章 漫谈推理谬误——错误假设-CSDN博客文章浏览阅读736次,点赞22次,收藏3次。在日常生活中,我们会面临各种逻辑推理,有些看起来一目了然,有些非常的科学严谨,但也有很多似是而非,隐藏了陷…...
【数据结构】队列实现剖析:掌握队列的底层实现
在计算机科学中,**队列(Queue)**是一种常见的数据结构,它遵循先进先出(FIFO,First In First Out)的原则。队列的应用非常广泛,例如任务调度、资源管理、进程通信等。本篇文章旨在为计…...
【C++】IO库(二):文件输入输出
8.2 文件输入输出 头文件 fstream 定义了三个类型来之支持文件IO,分别是: ifstream:从一个给定文件读取数据;ofstream:向一个给定文件写入数据;fstream:读写给定文件。 在 C 当中,…...
105.【C语言】数据结构之二叉树求总节点和第K层节点的个数
目录 1.求二叉树总的节点的个数 1.容易想到的方法 代码 缺陷 思考:能否在TreeSize函数内定义静态变量解决size的问题呢? 其他写法 运行结果 2.最好的方法:分而治之 代码 运行结果 2.求二叉树第K层节点的个数 错误代码 运行结果 修正 运行结果 其他写法 1.求二…...
力扣637. 二叉树的层平均值
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 提示: 树中节点数量在 [1, 104] 范围内-231 < Node.val < 231 - 1 代码: /*** Definition for a binary tree node.* stru…...
【前端】Next.js 服务器端渲染(SSR)与客户端渲染(CSR)的最佳实践
关于Next.js 服务器端渲染(SSR)与客户端渲染(CSR)的实践内容方面,我们按下面几点进行阐述。 1. 原理 服务器端渲染 (SSR): 在服务器上生成完整的HTML页面,然后发送给客户端。这使得用户在首次访问时能够…...
路径规划之启发式算法之一:A-Star(A*)算法
A*算法是一种启发式搜索算法,常用于解决路径规划问题。 一、A*算法的定义与原理 A*算法是一种用于在图形或网格中查找最短路径的算法。它在搜索过程中综合考虑了每个节点的实际距离(g值)和预估距离(h值),以…...
Android复习代码1-4章
public class RudioButton extends AppCompatActivity {Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_rudio_button);// 找到RadioGroup和TextView的实例RadioGroup radioGrou…...
【问题】webdriver.Chrome()设置参数executable_path报不存在
场景1: 标红报错unresolved reference executable_path 场景2: 执行报错TypeError: __init__() got an unexpected keyword argument executable_path 原因: 上述两种场景是因为selenium4开始不再支持某些初始化参数。比如executable_path 解决: 方案…...
win10系统安装docker-desktop
1、开启Hyper-v ———————————————— Hyper-V 是微软提供的一种虚拟化技术,它允许你在同一台物理计算机上运行多个独立的操作系统实例。这种技术主要用于开发、测试、以及服务器虚拟化等领域。 —————————————————————— &#…...
小程序-基于java+SpringBoot+Vue的乡村研学旅行平台设计与实现
项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:…...
组件A底部栏(position: fixed )事件使用$emit更新内容失败bug解决
今天遇到一个很离奇的bug,记录一下 问题:在组件内底部栏使用$emit触发按钮事件但打印出来的值是初始化的值,更新的值被重置导致更新失败 原因:组件内底部使用了 position: fixed; 固定, 导致组件内插槽 this 与 保存按…...
数据结构——排序第三幕(深究快排(非递归实现)、快排的优化、内省排序,排序总结)超详细!!!!
文章目录 前言一、非递归实现快排二、快排的优化版本三、内省排序四、排序算法复杂度以及稳定性的分析总结 前言 继上一篇博客基于递归的方式学习了快速排序和归并排序 今天我们来深究快速排序,使用栈的数据结构非递归实现快排,优化快排(三路…...
C++的类功能整合
1. 类的基本概念 类是面向对象编程的核心,它封装了数据和操作数据的函数。 #include <iostream> using namespace std;class MyClass { public:int publicData;void publicFunction() {cout << "Public function" << endl;}private:i…...
《String类》
目录 一、定义与概述 二、创建字符串对象 2.1 直接赋值 2.2 使用构造函数 三、字符串的不可变性 四、常用方法 4.1 String对象的比较 4.1.1 比较是否引用同一个对象 4.1.2 boolean equals(Object anObject)方法:按照字典序比较 4.1.3 int compareTo(Strin…...
【docker】docker的起源与容器的由来、docker容器的隔离机制
Docker 的起源与容器的由来 1. 虚拟机的局限:容器的需求萌芽 在 Docker 出现之前,开发和部署软件主要依赖虚拟机(VMs): 虚拟机通过模拟硬件运行操作系统,每个应用程序可以运行在自己的独立环境中。虽然虚…...
Window 安装 Nginx
参考链接 Windows 环境nginx安装使用及目录结构详解_windows 安装nginx-CSDN博客 Nginx 安装及配置教程(Windows)【安装】_nginx下载安装-CSDN博客 安装 1)下载 nginx: download 2)解压 3)启动 3.1)方…...
replace (regexp|substr, newSubstr|function)替换字符串中的指定部分
replace 方法用于替换字符串中的指定部分。它可以接受一个子字符串或正则表达式作为第一个参数,第二个参数是替换的内容。 用法示例 基本替换 let str "Hello, world!"; let newStr str.replace("world", "everyone"); console.lo…...
【ROS2】Ubuntu22.04安装ROS humble
一. ROS简介 1.1 什么是ROS ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。ROS的核心思想就是将机器人的软件功能做…...
cesium 3Dtiles变量
原本有一个变亮的属性luminanceAtZenith,但是新版本的cesium没有这个属性了。于是 let lightColor 3.0result._customShader new this.ffCesium.Cesium.CustomShader({fragmentShaderText:void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial mate…...
配置泛微e9后端开发环境
配置泛微e9的后端开发环境 1.安装jdk1.8(请自行安装并设置环境变量) 2.将服务器上的WEARVER文件夹拷贝到开发环境下(其中要包含ecology和Resin目录) 3.通过idea创建一个基础Java项目,将jdk设置为1.8 4.添加依赖,需要将3个文件夹的所有jar包添加到项目中…...
【Stable Diffusion】安装教程
目录 一、python 安装教程 二、windows cuda安装教程 三、Stable Diffusion下载 四、Stable Diffusion部署(重点) 一、python 安装教程 (1)第一步下载 打开python下载页面,找到python3.10.9,点击右边…...
USB Type-C一线通扩展屏:多场景应用,重塑高效办公与极致娱乐体验
在追求高效与便捷的时代,启明智显USB Type-C一线通扩展屏方案正以其独特的优势,成为众多职场人士、娱乐爱好者和游戏玩家的首选。这款扩展屏不仅具备卓越的性能和广泛的兼容性,更能在多个应用场景中发挥出其独特的价值。 USB2.0显卡ÿ…...
【力扣】541.反转字符串2
问题描述 思路解析 每当字符达到2*k的时候,判断,同时若剩余字符>k,只对前k个进行判断(这是重点)因为字符串是不可变变量,所以将其转化为字符串数组,最后才将结果重新转变为字符串 字符串->字符数组 …...
免费网站的app/东莞搜索seo网站关键词优化
讨论 实际上,大家对于在Python中如何正确使用 super() 函数普遍知之甚少。 你有时候会看到像下面这样直接调用父类的一个方法: classBase:def __init__(self):print(Base.__init__)classA(Base):def __init__(self): Base.__init__(self)print(A.__init_…...
网站建设毕业设计任务书/知名网站排名
原文:WPF 实现测量显示文本长度以工具类的方式实现: using System; using System.Windows; using System.Windows.Media; using System.Globalization; using System.Windows.Controls; namespace Tool { static class GetTextDisplayWidthHelper { …...
wordpress 优酷视频/网站搜索引擎拓客
在进行数据分析的时候,经常需要将数据进行可视化,以方便我们对数据的认识和理解。0,Matplotlib 简介Matplotlib 是一个可视化工具包,可以让我们使用Python 来可视化数据。[Matplotlib](https://matplotlib.org/)这里汇总了一些官方…...
插头 东莞网站建设/海南百度推广总代理商
今天的一个笔试题:给定一个字符串,判断它是否回文,只考虑数字字母字符并忽略大小写 笔试的时候写了代码,但是写的不好,回来再写一次 思路就是先防范,然后将这个字符串转换为小写,定义两个指针…...
app产品网站建设/模板网站建站公司
布匹瑕疵检测视觉技术,已然成为企业工业自动化的助推器,并提高了信息的获取能力,从单一维度的数据发展为广域立体的海量数据,同时在速度、尺度、光谱等多个维度大大突破了人眼的限制。而未来的纺织行业,将以“智眼”为…...
南康做网站/google框架三件套
Ensure there is enough space in /tmp and that the installation package is not corrupt Signal caught, cleaning up 在安装CUDA9.0时出现这样的报错,原因是/tmp目录下空间不足、在参考了几篇博客之后,下面给出我的解决方法: 首先在某个…...