计算机网络——NAT的妙用(网络地址转换协议)
点赞后看,养成习惯
喜欢的话 可以点个关注哟
你们的点赞支持对博主们来说很重要哦 !!!
本文将针对以下问题逐条进行解答:
01 IPV4有何实际意义?
02 为什么需要进行NAT(网络地址转换)?
03 如何进行网络地址转换?
01 IPV4的用途
IPV4地址是网络上唯一的地址,通过这些公网IPV4地址,我们能够准确定位到某一台主机。
那我们知道了地址之后,是不是一定能够找到对方呢? 并不是的,比如,你知道你要去的地方是动物园,那你就一定知道去的路嘛?不一定吧,通常情况下我们还得通过地图导航软件来辅助我们到达目的地。
而在网络上充当这个地图角色的就是路由器们,路由器再知道了公网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 进行通信,过程是怎么样的呢?
首先小明发送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回包无法回来
当通信出现故障的时候,先要排除是不是路由问题造成的,要保住去向路由、回向路由都要正确无误。我们可以使用Ping、Traceroute这两个中举协同工作,准确找出到底是那台路由器造成的。
02 网络地址转换由来
我们知道,公网IP地址可以帮我们与他人通信。但是现在有一个问题出现:
小明是有一个公网IP地址,1.1.1.1,但是小明家里的智能终端很多啊,有IPAD、手机、电脑,每台设备都需要一个IP地址才能工作,这该怎么分呢?
有办法,专门负责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地址不同)的流量,或者同一个用户的不同流量(端口号不同),使用路由器上唯一的端口号来分辨他们
本文完,感谢你的阅读!!!
最后,如果本文对你有所帮助,希望可以点个赞支持一下。你们的鼓励将会是博主原创的动力。
- 点赞
- 收藏
- 关注作者
评论(0)