计算机网络——网络地址转换(NAT)技术
目录
前言
前篇
引言
SNAT(Source Network Address Translation)源网络地址转换
SNAT流程
确定性标记
DNAT(Destination Network Address Translation,目标网络地址转换)
NAT技术重要性
前言
本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。
这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。
可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。
家庭网络如何通过路由器上网?源地址转换和目标地址转换时什么?_哔哩哔哩_bilibili
前篇
- 计算机网络——MAC地址和IP地址-CSDN博客
- 计算机网络——交换机和路由器-CSDN博客
引言
NAT(Network Address Translation),是指网络地址转换
在两个不同家庭中,通过路由器接入的两台电脑,IP地址都是192.168.1.10。同时访问互联网上的同一个网站,为什么IP地址不会冲突?SNAT和DNAT又是什么?
SNAT(Source Network Address Translation)源网络地址转换
计算机网络中数据包如何发送是根据目标IP进行路由的。如果同一个网络中出现两个相同的IP则ARP表会出现混乱,数据包发送到哪台主机上将变成不确定性行为。
那怎么解决这个问题?答案很明显,就是让数据包从路由器发出去的时候,变成不同的IP地址不就可以了。这个技术叫源地址转换技术,我们称之为SNAT。
SNAT流程
为了简化理解
假设路由器的接口接入的IP地址为公网IP比如221.8.1 4.91
我们的内网计算机地址是192.168.1.4,网关地址为192.168.1.1。(网关的地址一般是.1或者.254,为了方便)
我们访问的远端IP为36.152.4 4.96。
首先,计算机发送一包数据出来到路由器上,在这包数据的网络层有两个重要的信息,一个是源IP192.168.1.4点时,另一个是目标IP36.152.44.96。
路由器拿到这一包数据时,需要执行源地址转换SNAT,把源IP改一下,改成WAN口的公网IP221.8.1 4.91发送出去。
服务器收到了数据处理完之后需要回复,则把源IP作为目标IP发送回来。
路由器收到回包,执行反向SNAT,再把目标IP改成192.16 8.1点时发送给了家庭中的计算机,一次通信完成。

看到这个过程你是不是觉得很简单,但是事实比这个要复杂一些。(还是看视频容易理解,推荐先看视频,理解了再存下笔记)。
确定性标记
假设家庭中有两台计算机,另一台计算机的IP地址为192.168.1.11。他们俩同时访问同一个网站,发送了两包数据到路由器上,路由器执行SNAT发送出去,看来没什么问题。
但是回来的数据包怎么办?因为回来的数据包的目标IP都是221.8.1 4.91。
如何从中区分出来两台计算机的数据包?所以这样看只关注IP地址是不行的,还需要增加一些确定性的标记。这时就要把关联的属性再往下扩展一层,扩展到传输层。
我们以最常用的传输层协议TCP协议为例。
TCP协议有两个关键属性,源端口和目标端口。
这时候我们的源地址转换就变成了修改源IP和源端口,并将修改后的端口号和源IP加源端口形成映射关系。
比如主机一和主机二的源端口都是12345(比如两个主机上都是QQ占用了该端口)
修改后主机一的源端口变为23456,主机二变为34567
在返回包中,根据目标端口号是23456还是34567,区分出来是主机一还是主机二的包。
并且在反向SNAT的时候,把目标端口号改回。
除了TCP协议外。 UTP协议也是同样的道理,通过IP加端口进行关联。
但是我们常用来检测目标连通性的Ping命令使用的是ICMP协议。
它没有端口信息,则需要使用协议中的type加code来代替端口进行关联。(可以看下我抓包实验中的截图,有一个类型)。计算机网络——抓取icmp包-CSDN博客

其他的协议也都是类似的道理,通过协议特定的标记来进行关联。
DNAT(Destination Network Address Translation,目标网络地址转换)
DNAT名为目标地址转换,顾名思义跟SNAT相反,DNAT是把目标地址修改的技术。
DNAT有什么用呢?
如果我们的内网计算机对外提供服务,公网上发过来的请求不能直接到达内网计算机。我们就需要路由器用DNAT技术帮我们转发请求。DNAT就是把公网IP转换为我们的内网IP。
比如我们内网有一台主机上有一个Web服务监听了80端口。
我们需要在路由器上配置一个DNAT,内容为访问公网地址的8080端口,帮我们转到计算机1,也就是192.168.1.10的80端口。
则当访问数据包从WAN口进入后,路由器执行DNAT修改目标地址为192.16 8.1点,修改目标端口为80,把数据包转发给了计算机。
NAT技术重要性
NAT技术深入到我们生活的方方面面,小到家庭网络,大到庞大的运营商网络、云计算平台,都通过net技术一层层的将我们的网络进行了分割,在IPV4地址严重匮乏的今天,我们的计算机网络仍旧能正常的运转,多亏了NAT技术的存在。
相关文章:
计算机网络——网络地址转换(NAT)技术
目录 前言 前篇 引言 SNAT(Source Network Address Translation)源网络地址转换 SNAT流程 确定性标记 DNAT(Destination Network Address Translation,目标网络地址转换) NAT技术重要性 前言 本博客是博主用于…...
【感谢】心怀感恩,共赴知识之旅——致每一位陪伴我突破百万总访问量的您
小伙伴朋友们: 此刻,我怀着无比激动与深深感激的心情,写下这篇特别的博文。今天,我的CSDN总访问量成功突破了百万大关,这不仅是一个数字的跨越,更是你们对我的支持、信任与鼓励的有力见证。在此࿰…...
Android Studio导入第三方so库和jar包——Android Studio
导入so库 方式一(libs文件夹) 将项目以【Project】的结构显示,将目标架构对应的so文件夹(如下图中 的arm64-v8a)复制粘贴到app文件下的lib文件夹中(如下图的步骤1 2 3) 在build.gradle&…...
jeecg-boot 3.6使用微服务启动详细配置
1:运行sql文件 2:配置host 路径如下 127.0.0.1 jeecg-boot-redis 127.0.0.1 jeecg-boot-mysql 127.0.0.1 jeecg-boot-nacos 127.0.0.1 jeecg-boot-gateway 127.0.0.1 jeecg-boot-system 127.0.0.1 jeecg-boot-xxljob 127.0.0.1 jeecg-boot-rabbitmq 3…...
【Android】【root remount】【2】如何判断设备是否remount
前言 高版本的android设备,在remount之后,如果再进行ota升级,会产生异常,从而无法升级成功。 如何判断设备是否remount 当前已android 10 平台为例 当我们执行 adb remount 时,系统调用会调用到system/core/adb/dae…...
html中的“居中”问题详解(超全)
html中的“居中”问题详解(超全) 图片居中文本居中定位居中元素居中响应式设计中的居中技巧 引言: 在网页设计和开发中,实现元素的居中是一个常见但也常被低估的挑战。无论是在传统的网页布局中还是在响应式设计中,居中…...
【嵌入式学习】ARM day04.11
一、思维导图 二、练习 实现三个灯闪烁 汇编代码 .text .global _start _start: 使能GPIOE和F时钟LDR r0,0x50000A28LDR r1,[R0]ORR R1,R1,#(0X3<<4)STR R1,[R0]配置GPIOE和F的MODER寄存器LDR r0,0x50006000 GPIOELDR R1,0X50007000 G…...
关于部署ELK和EFLKD的相关知识
文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana(展示数据可视化界面)1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea…...
ChatGPT智能写作:开启论文写作新视野
ChatGPT无限次数:点击直达 html ChatGPT智能写作:开启论文写作新视野 引言 在当今信息爆炸的时代,人们需要更有效的工具来帮助他们在各种领域进行写作。ChatGPT作为一项基于人工智能技术的顶尖产品,为论文写作提供了全新的视角和可能性。…...
网络安全---RSA公钥加密与签名
实验项目:RSA公钥加密与签名实验 1.实验目的 本实验的学习目标是让学生获得 RSA 算法的动手经验。 通过课堂学习,学生应该已经了解 RSA 算法的理论部分, 知道在数学上如何生成公钥、私钥以及如何执行加密、解密和签名生成、验证。 通过使用…...
李白打酒加强版 -- 题解 c++
题目链接 : 4408. 李白打酒加强版 - AcWing题库 用户登录 二进制搜索 只能过10%,极限暴力 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \n typedef long long LL; const int mod 1e97; const int N 2e510;…...
蓝桥杯——玩具蛇
题目 小蓝有—条玩具蛇,一共有16节,上面标着数字1至16。每—节都是一个正方形的形状。相邻的两节可以成直线或者成90度角。 小蓝还有一个44的方格盒子,用于存放玩具蛇,盒子的方格上依次标着字母A到Р共16个字母。 小蓝可以折叠自…...
百度SSL证书免费申请
百度云也有免费SSL证书可以申请,很多用户找不到,云服务器吧yunfuwuqiba.com整理百度云SSL免费证书申请入口: 1、打开百度云SSL证书购买页面 yunfuwuqiba.com/go/baidu_ssl 点立即购买,如下图: 百度云SSL证书 2、免费…...
SpringBoot Assert断言
文章目录 前言一、Assert说明二、Assert方法三、使用示例四、总结前言 在Spring Boot中,Assert类提供了一系列用于断言的静态方法,用于在代码中进行条件检查和错误处理。这些方法可以帮助我们在开发过程中快速发现和解决问题,提高代码的可靠性和健壮性。 一、Assert说明 在…...
test4121
欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…...
UI自动化测试重点思考(下)--装饰器/生成器/夹具的使用/描述符的作用/ddt驱动/多线程
UI自动化测试重点思考--装饰器 装饰器装饰器定义装饰器代码示例装饰器的执行如何将装饰器融合到pytest框架里面 生成器创建生成器生成器的定义如何将生成器融合到pytest框架里面 fixture(夹具)使用pytest fixture 中 scope 参数的详细解释 描述符的总结描…...
C# 字段和属性的区别
区别 在C#中,字段(Field)和属性(Property)都是用来封装对象状态的方式,但它们有以下区别: 访问级别: 字段通常是private,而属性可以有不同级别的访问限制(…...
备考ICA----Istio实验17---TCP流量授权
备考ICA----Istio实验17—TCP流量授权 1. 环境准备 1.1 环境部署 kubectl apply -f <(istioctl kube-inject -f istio/samples/tcp-echo/tcp-echo.yaml) -n kim kubectl apply -f <(istioctl kube-inject -f istio/samples/sleep/sleep.yaml) -n kim1.2 测试环境 检测…...
[C++][算法基础]树的重心(树图DFS)
给定一颗树,树中包含 n 个结点(编号 1∼n)和 n−1 条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后&a…...
探秘ChatGPT:如何利用AI提升论文写作效率
ChatGPT无限次数:点击直达 html 探秘ChatGPT:如何利用AI提升论文写作效率 在当今信息爆炸的时代,论文写作是许多人工作者每天都要面对的任务。如何更高效地撰写出内容丰富、结构严谨的论文,一直是许多学者和研究人员所追求的目标。随着人…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
