计算机网络——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/809026.shtml

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

相关文章

无人新零售引领的创新浪潮

无人新零售引领的创新浪潮 在数字化时代加速演进的背景下,无人新零售作为商业领域的一股新兴力量,正以其独特的高效性和便捷性重塑着传统的购物模式,开辟了一条充满创新潜力的发展道路。 依托人脸识别、物联网等尖端技术,无人新…

Redis中的集群(七)

集群 ASK错误 ASKING命令 ASKING命令唯一要做的就是打开发送该命令的客户端的REDIS_ASKING标识,以下是该命令的伪代码实现: def ASKING(): # 打开标识 client.flags | REDIS_ASKING# 向客户端返回OK回复 reply("OK")在一般情况下,如果客户…

搜维尔科技:【煤矿安全仿真】煤矿事故预防处置VR系统,矿山顶板灾害,冲击地压灾害等预防演练!

产品概述 煤矿事故预防处置VR系统 系统内容: 事故预防处置VR系统的内容包括:火灾的预防措施、火灾预兆、防灭火系统、火灾案例重现、顶板事故预兆、顶板事故原因、顶板事故案例重现、瓦斯概念及性质、瓦斯的涌出形式、瓦斯预兆、瓦斯爆炸条件及预防措…

数据结构之排序了如指掌(一)

目录 题外话 正题 排序概念 稳定性 直接插入排序 直接插入排序代码详解 直接插入排序复杂度分析 希尔排序(缩小增量排序) 希尔排序代码详解 小结 题外话 昨晚肚子疼没睡好,今天博客写的确实有点晚(找个借口),我一定会坚持,不辜负热爱我的家人们!! 正题 排序概念 一串…

苍穹外卖jwt令牌p10

点击小虫(进入断点调试),打上断点,然后前端点击登录(此时前端的数据会作为参数传入): 光标放在字段上还会显示接收到的数据: 若想程序在所希望的地方停止,可以添加断点&a…

《战神4》和《战神5》有什么联系吗 苹果电脑如何运行《战神4》苹果电脑玩战神 Mac玩游戏 战神5攻略 crossover激活码

《战神4》(God of War 2018)和《战神5》(God of War: Ragnark)是一对引人注目的游戏作品,它们不仅在游戏界引起了广泛的关注,也给玩家带来了深入探索北欧神话世界的机会。这两部游戏之间的联系不仅体现在剧…

【力扣】101. 对称二叉树

101. 对称二叉树 题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 提示…

JavaWeb开发01--Maven-Web入门-请求响应-分层解耦

一、Maven 1.maven概述 Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。 根据提供的插件实现很多功能 maven的作用 管理和构建java项目的工具 依赖管理:可以直接在pom.xml文件…

深入理解MD5算法:原理、应用与安全

title: 深入理解MD5算法:原理、应用与安全 date: 2024/4/11 20:55:57 updated: 2024/4/11 20:55:57 tags: MD5算法数据安全哈希函数摘要算法安全漏洞SHA算法密码学 第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要。消息…

【Leetcode每日一题】 动态规划 - 下降路径最小和(难度⭐⭐)(55)

1. 题目解析 题目链接:931. 下降路径最小和 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了. 2.算法原理 对于这类路径类问题,通常我们首先需要分析状态表示以及状态转移的过程。特别地,本题涉及…

The C programming language (second edition,KR) exercise(CHAPTER 3)

E x c e r c i s e 3 − 1 Excercise\quad 3-1 Excercise3−1:输出结果如图1所示,这里故意让二分搜索算法去寻找一个在数组中不存在在的数,然后去看两种二分搜索算法分别所花费的时间的大小,为了使得所花费的时间更具有可分辨性&a…

【HTML】制作一个简单的线性动画

目录 前言 HTML部分 CSS部分 JS部分 效果图 总结 前言 无需多言,本文将详细介绍一段HTML代码,具体内容如下: 开始 首先新建文件夹,创建一个文本文档,两个文件夹,其中HTML的文件名改为[index.html]&am…

面试经典算法系列之二叉树1 -- 从前序与中序遍历序列构造二叉树

面试经典算法16 - 从前序与中序遍历序列构造二叉树 LeetCode.105 公众号:阿Q技术站 问题描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根…

VUE typescript 调用stompjs[Rabbit MQ]

npm拉下来最新的2.3.9版本&#xff0c;发现一些原来Js代码已经不能用了。顺便解读了下最新定义的内容 // <reference types"node" />export const VERSIONS: {V1_0: string;V1_1: string;V1_2: string;supportedVersions: () > string[]; };export class C…

airtest-ios真机搭建实践

首先阅读4 ios connection - Airtest Project Docs 在Windows环境下搭建Airtest对iOS真机进行自动化测试的过程相对复杂&#xff0c;因为iOS的自动化测试通常需要依赖Mac OS系统&#xff0c;但理论上借助一些工具和服务&#xff0c;Windows用户也可以间接完成部分工作。下面是…

前端对接fastGPT流式数据+打字机效果

首先在对接api时 参数要设置stream: true, const data {chatId: abc,stream: true,//这里true返回流式数据detail: false,variables: {uid: sfdsdf,name: zhaoyunyao,},messages: [{ content: text, role: user }]}; 不要用axios发请求 不然处理不了流式数据 我这里使用fetch …

PairAug:增强图像-文本对对放射学有什么用?

论文链接 代码链接GitHub - YtongXie/PairAug: [CVPR2024] PairAug: What Can Augmented Image-Text Pairs Do for Radiology? 发表于CVPR2024 机构 1) 澳大利亚机器学习研究所(AIML)&#xff0c;澳大利亚阿德莱德大学 2) 西北工业大学计算机科学与工程学院 3) 西北工业…

【简明图文教程】Node.js的下载、安装、环境配置及测试

文章目录 前言下载Node.js安装Node.js配置Node.js配置环境变量测试后言 前言 本教程适用于小白第一次从零开始进行Node.js的下载、安装、环境配置及测试。 如果你之前已经安装过了Node.js或删除掉了Node.js想重新安装&#xff0c;需要先参考以下博客进行处理后&#xff0c;再根…

渗透测试实战——第一站

仅供交流学习使用&#xff0c;请勿用于非法用途 前言&#xff1a;刚学了sql注入&#xff0c;只听理论总感觉没啥用&#xff0c;今天花了一半个多小时&#xff0c;去尝试寻找有漏洞的网站&#xff0c;最终找到了一个&#xff1b;实践是检验真理的唯一标准。 我是通过黑客常用语法…

牛客 NC36 在两个长度相等的排序数组中找到上中位数【中等 模拟 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/6fbe70f3a51d44fa9395cfc49694404f 思路 直接模拟2个数组有顺序放到一个数组中&#xff0c;然后返回中间的数参考答案java import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 pu…