计算机网络——NAT的妙用(网络地址转换协议)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 计算机网络——NAT的妙用(网络地址转换协议)
点赞后看,养成习惯
喜欢的话 可以点个关注哟
你们的点赞支持对博主们来说很重要哦 !!!

本文将针对以下问题逐条进行解答:

01 IPV4有何实际意义?

02 为什么需要进行NAT(网络地址转换)?

03 如何进行网络地址转换?



image.png




## 01 IPV4的用途

IPV4地址是网络上唯一的地址,通过这些公网IPV4地址,我们能够准确定位到某一台主机。

那我们知道了地址之后,是不是一定能够找到对方呢? 并不是的,比如,你知道你要去的地方是动物园,那你就一定知道去的路嘛?不一定吧,通常情况下我们还得通过地图导航软件来辅助我们到达目的地。



image.png

而在网络上充当这个地图角色的就是路由器们,路由器再知道了公网IPV4地址之后,就会告诉相邻的邻居,邻居再告诉邻居,就这样,一传十,十传百,一张网络的地图就这么产生了。

具体来说,如果小明拥有一个公网IP为:1.1.1.1,那么路由器A因为是直连肯定知道要找小明怎么走。而路由器A不仅自己知道怎么找A,还会告诉路由器B如果你想找小明的话,你就把IP包发给我就好了。以此类推,最后,路由器D如果想要和小明通信的话,那他把IP包丢给路由器C,路由器C把IP包丢给路由器B,最后路由器B丢给路由器A。

以上,A -> D 是路由扩散的过程,这个过程有路由器上的路由协议完成
D -> A 是用户IP包接力的过程,像多米诺骨牌一样,最终找到小明

现在假设连接在路由器A上的小明 1.1.1.1 要和 连接在路由器D上的小美 2.2.2.2 进行通信,过程是怎么样的呢?


image.png


首先小明发送IP包的时候,IP报头里面添加了源IP地址 1.1.1.1 和 目的IP地址 2.2.2.2

这个IP包,以路由器A为起点开始了寻路,A查路由器,要找2.2.2.2 下一跳是路由器B,于是发给了B,B发给了C,C发给了D。最终IP包被小美接收到了,小美发现对方的IP是 1.1.1.1 ,于是发一个IP包回应对方,这个IP包的地址是这样的:

目的IP 1.1.1.1
源IP 2.2.2.2

这里要注意一点,IP包途径的路由器必须都得有小明、小美的路由,只要有一跳出现 路由表缺失或者不正确,就会造成通信的障碍,或IP包无法到达对方,或者IP回包无法回来


image.png

当通信出现故障的时候,先要排除是不是路由问题造成的,要保住去向路由、回向路由都要正确无误。我们可以使用Ping、Traceroute这两个中举协同工作,准确找出到底是那台路由器造成的。





## 02 网络地址转换由来

我们知道,公网IP地址可以帮我们与他人通信。但是现在有一个问题出现:

小明是有一个公网IP地址,1.1.1.1,但是小明家里的智能终端很多啊,有IPAD、手机、电脑,每台设备都需要一个IP地址才能工作,这该怎么分呢?

image.png

有办法,专门负责IP地址分配的国际机构IANA预留了几段地址,专门用于局域网使用,这三段地址分别为:

10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

假设小明家选择了 10.1.1.0/24这个私有网段,在路由器的局域网配置了DHCP服务器,专门用于给终端分配这个网段的地址,其中10.1.1.1为路由器局域网接口的IP,10.1.1.254为广播地址,那么剩下的10.1.1.2 -254这253个地址就可以分配给局域网的终端了。



03 网络地址转换具体流程




那么这种情况下,如果小明的手机 10.1.1.2 想要访问 小美的网页 http:// 2.2.2.2 ,该如何通信呢?


1、小明的电脑使用TCP协议来传输HTTP应用,他发出IP报文,其中目的IP为 2.2.2.2 源IP为10.1.1.2,目的端口号为 80,源端口号位 1520

这里的目的端口号可以让小美的TCP找到服务器进程,这里的服务器进程就是网页服务器程序

这里的源端口号可以让小明的TCP找到对应的浏览器进程,把小美的回复消息转交给该进程



2、路由器接收到小明发来的IP报文,路由器发现源IP地址10.1.1.2是私有地址,做地址转换,动态生成地址转换表:

其中目的IP为 2.2.2.2 源IP从10.1.1.2映射为1.1.1.1,目的端口号为 80,源端口号位 1520

端口号占两个字节,取值范围是1-65535,端口号1520在路由器上没有被任何本地经常占用,所以小明电脑可以原封不动地使用1520这个端口号。



3、经过各个路由器的配合,这个IP报文经过了25跳到达了小美的电脑。

但是到达了电脑还没有完呐,因为电脑上的进程特别多,如何知道发给那个进程呢?

举个例子,福建省福州市长乐区XXX37号,这个IP地址告诉你对方在福建省福州市长乐区XXXX,而端口号告诉你对方在37号

简单来说,IP地址准确定位电脑,端口号用于准确定位电脑上特定进程,即 IP地址+端口号 ,定位了某一台电脑的某一个进程



4、小美的网页服务收到小明的访问网页请求后,回复小明的手机,她打包了一个IP报文,只要把接收到的IP报文,源/目的IP位置调换,源/目的端口互换位置即可

其中目的IP为 1.1.1.1, 源IP 2.2.2.2,目的端口号为 1520,源端口号为 80



5、IP报文到达小明路由器,查NAT映射表,匹配到后做地址替换,替换后的IP报文为:

目的IP为10.1.1.2, 源IP 1.1.1.1,目的端口号为 1520,源端口号为 80



6、最后IP报文到达小明电脑指定端口完成通信

补充:
如果这个时候小明的电脑也要访问小美的网页,恰巧也想将1520作为源端口会发生什么呢?

小明电脑发生IP包后,小明路由器接收到该IP报文,发现1520端口已经被占用,于是在端口号空间 1025-65535挑选了一个空闲端口号1521给电脑使用,动态生成NAT表


公网IP 私网IP 路由器端口号 主机端口号 存活时间
1.1.1.1 10.1.1.2 1520 1520 237
1.1.1.1 10.1.1.3 1521 1520 300

这样子,最终呈现在小美电脑上的IP报文格式为:
目的IP为2.2.2.2, 源IP 1.1.1.1,目的端口号为 80,源端口号为 1521

此报文最终可以找到小美的服务器进程,返程的回复报文,小明的路由器也可以查NAT表,做地址转换,最终达到小明的手机



总结一下就是,小明的路由器为了辨别不同用户(IP地址不同)的流量,或者同一个用户的不同流量(端口号不同),使用路由器上唯一的端口号来分辨他们





本文完,感谢你的阅读!!!

最后,如果本文对你有所帮助,希望可以点个赞支持一下。你们的鼓励将会是博主原创的动力。
在这里插入图片描述

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
基于阿里云,构建一个企业web应用上云经典架构,让IT从业者体验企业级架构的实战训练。
目录
相关文章
|
8天前
|
算法 网络协议 数据建模
【计算机网络】—— IP协议及动态路由算法(下)
【计算机网络】—— IP协议及动态路由算法(下)
|
8天前
|
算法 网络协议 数据建模
【计算机网络】—— IP协议及动态路由算法(上)
【计算机网络】—— IP协议及动态路由算法(上)
|
8天前
|
网络协议 Java 网络安全
【计算机网络】—— Socket通信编程与传输协议分析
【计算机网络】—— Socket通信编程与传输协议分析
|
8天前
|
网络协议 Linux Android开发
计算机网络:MAC地址 & IP地址 & ARP协议
计算机网络:MAC地址 & IP地址 & ARP协议
38 7
|
8天前
|
算法
计算机网络:CSMA/CA协议
计算机网络:CSMA/CA协议
21 9
|
8天前
|
缓存 算法
计算机网络:CSMA/CD协议
计算机网络:CSMA/CD协议
12 0
|
8天前
|
缓存 编解码 Go
计算机网络:可靠传输协议
计算机网络:可靠传输协议
15 1
|
8天前
|
算法 网络架构
计算机网络:点对点协议PPP
计算机网络:点对点协议PPP
15 0
|
8天前
|
负载均衡 网络协议 安全
【计算机网络】虚拟路由冗余(VRRP)协议原理与配置
【计算机网络】虚拟路由冗余(VRRP)协议原理与配置
17 0
|
8天前
|
安全 数据安全/隐私保护 网络架构
ensp中nat地址转换(静态nat 动态nat NAPT 和Easy IP)配置命令
ensp中nat地址转换(静态nat 动态nat NAPT 和Easy IP)配置命令