计算机网络——网络地址转换(NAT)技术

目录

前言

前篇

引言

SNAT(Source Network Address Translation)源网络地址转换

SNAT流程

确定性标记

DNAT(Destination Network Address Translation,目标网络地址转换)

NAT技术重要性


前言

本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。

这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。

可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。

家庭网络如何通过路由器上网?源地址转换和目标地址转换时什么?_哔哩哔哩_bilibili

前篇

  1. 计算机网络——MAC地址和IP地址-CSDN博客
  2. 计算机网络——交换机和路由器-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技术的存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15 Python进阶: random和pyecharts

Python random 模块主要用于生成随机数。 random 模块实现了各种分布的伪随机数生成器。 要使用 random 函数必须先导入: import randompython random 模块的一般用法 Python中的random模块提供了生成伪随机数的功能,可以用于模拟、游戏开发、密码学…

【Spring Boot 源码学习】SpringApplication 的 run 方法核心流程介绍

《Spring Boot 源码学习系列》 SpringApplication 的 run 方法核心流程介绍 一、引言二、往期内容三、主要内容3.1 run 方法源码初识3.2 引导上下文 BootstrapContext3.3 系统属性【java.awt.headless】3.4 早期启动阶段3.5 准备和配置应用环境3.6 打印 Banner 信息3.7 新建应用…

Blender表面细分的操作

在使用Blender的过程中,刚开始创建的模型,都会比较少面,这样操作起来比较流畅,减少电脑的计算量,当设计快要完成时,就会增加表面细分,这样更加圆滑,看起来更加顺眼。 比如创建一个猴头,它会默认显示如下: 从上图可以看到,有一些表面会比较大,棱角很多。 这时候你…

win11如何重新安装应用商店,怎么重装应用商店

win11系统内置了应用商店,相当于手机的应用商城,用户们想要下载软件时,就会前往应用商店搜索下载。如果我们因为误操作,删除了win11应用商店,或者是应用商店出现闪退、卡顿等问题,这个时候,最好…

MyBatis-Spring整合

引入Spring之前需要了解mybatis-spring包中的一些重要类; http://www.mybatis.org/spring/zh/index.html 什么是 MyBatis-Spring? MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 知识基础 在开始使用 MyBatis-Spring 之前&#x…

Python学习笔记23 - 目录操作

os模块操作目录相关函数 os.path模块操作目录相关函数 案例1 —— 列出指定目录下的所有.py文件 案例2 —— walk()

内网渗透-红队内网渗透工具(Viper)

红队内网渗透工具(Viper) 最近发现一款很强大的内网渗透工具Viper 接下来我给大家介绍一下具体的安装过程,这里我在kali上进行安装 (1)首先打开kali终端,切换到root用户,确认以下操作都在root用户下操作,sudo -s 安装…

【MATLAB源码-第16期】基于matlab的MSK定是同步仿真,采用gardner算法和锁相环

1、算法描述 **锁相环(PLL)** 是一种控制系统,用于将一个参考信号的相位与一个输入信号的相位同步。它在许多领域中都有应用,如通信、无线电、音频、视频和计算机系统。锁相环通常由以下几个关键组件组成: 1. **相位…

基于springboot实现医疗病历互换系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现医疗病历交互系统演示 摘要 进入21世纪,计算机技术迅速向着网络化的、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息的新一代网络版应用软件,形成了信息化的社会。信息…

2024最新 PyCharm 2024.1 更新亮点看这篇就够了

2024最新 PyCharm 2024.1 更新亮点看这篇就够了 文章目录 2024最新 PyCharm 2024.1 更新亮点看这篇就够了🚀 PyCharm 2024.1 发布:全面升级,助力高效编程!摘要引言 🚀 快速掌握 Hugging Face:模型与数据集文…

(八)C++自制植物大战僵尸游戏植物基类讲解

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/m0EtD 在植物大战僵尸游戏中,最重要的两个类别就是植物与僵尸。植物可以对僵尸进行攻击,不同的植物攻击方式千差万别,但是不同植物又有许多相同的属性。在基类(父类&#xf…

【Canvas技法】绘制正三角形、切角正三角形、圆角正三角形

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>绘制正三角形、切角正三角形、圆角正三角形</title><style …

自己操作逆向案例一——某竞赛网登录密码加密,超级简单,泪目了!

网址&#xff1a;aHR0cHM6Ly9leGFtem9uZS5zYWlrci5jb20vcXVlc3Rpb24vZXhwbG9yZQ 打开开发者工具&#xff0c;点击账号密码登录&#xff0c;进行抓包 先进行搜索&#xff0c;发现一下子就找到了&#xff0c;且看上去很像MD5加密&#xff0c;打上断点&#xff0c;再次点击登录。…

linux 自定义命令/别名

参考资料 Linux(Ubuntu)自定义命令的使用Linux/Ubuntu系统自定义Shell命令Ubuntu/Linux 操作系统 自定义命令 目录 一. 为路径取别名二. 修改.profile文件2.1 .profile简介2.2 需求2.3 修改.profile文件 三. 创建软链接 一. 为路径取别名 ⏹需求&#xff1a;有一个work文件夹…

NVM的安装与配置

目录 一、简介二、下载2.1、windows环境下载地址2.2、安装 三、配置3.1、查看可安装版本3.2、安装版本3.3、使用和切换版本3.4、模块配置 四、其他4.1、全局安装pnpm4.2、常用nvm命令 一、简介 NVM&#xff0c;全称为Node Version Manager&#xff0c;是一个流行的命令行工具&a…

第41篇:有限状态机<四>

Q&#xff1a;本期我们介绍有限状态机的应用之二&#xff1a;米里状态机“1101”序列检测器。 A&#xff1a;摩尔状态机1101序列检测器有5个状态&#xff0c;而米里状态机只有4个状态。当状态为s_3且输入为1时&#xff0c;状态机输出1。这里输出与输入一起被标志在状态转移箭头…

vue3 动态class和style

1、需求&#xff1a;一个删除的弹窗&#xff0c;点击会提示“是否需要删除XXXXX&#xff08;name&#xff09;”&#xff0c;但是name不固定&#xff0c;所以删除弹窗的width不能写死。&#xff08;如果不设置width&#xff0c;本项目的弹窗会自适应变得特别长&#xff09;

mybatis自制插件+注解实现数据脱敏

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 mybatis自制插件注解实现数据脱敏 前言数据脱敏的实现方式构思从哪个地方进行脱敏&#xff1f;它怎么知道我什么数据需要脱敏 项目实现拦截器实现注解实现枚举实现效果图展示 前言 在数字时代&#x…

hive了解系列一

“ 随着智能手机的普及&#xff0c;互联网时代红利的爆发&#xff0c;用户数量和产生的数据也越发庞大。为了解决这个问题&#xff0c;提高数据的使用价值。 Hadoop生态系统就被广泛得到应用。 在早期&#xff0c;Hadoop生态系统就是为处理如此大数据集而产生的一个合乎成本效益…

力扣第20题有效的括号

typedef char STDataType; //动态栈 #define allocator_may_return_null 1typedef struct ST {STDataType* _a;int _top;//栈顶元素int _capacity;//最大容量 }Stack; //初始化栈 void StackInit(Stack *pst);//入栈 void StackPush(Stack* pst, STDataType x);//出栈 void Sta…