【学习笔记】SNAT & DNAT

资料来源:

家庭网络如何通过路由器上网?源地址转换和目标地址转换时什么?_哔哩哔哩_bilibili简单说网络3-家庭网络与因特网。在内网IP相同的不同家庭网络中,如何做到访问公网IP不冲突。我们经常听到的源地址转换和目标地址转换又是什么?本期视频听芝士君讲家庭网络与因特网https://www.bilibili.com/video/BV1jQ4y1o7bF?spm_id_from=333.1007.top_right_bar_window_history.content.click

在两个不同家庭通过路由器接入的两台电脑IP地址都是192.168.1.1时,同时访问互联网上的同一个网站,为什么IP地址不会冲突?SNAT和DNAT又是什么?

在计算机网络中,数据包如何发送是根据目标IP进行路由的。如果同一个网络中出现两个相同的IP,则ARP表会出现混乱,数据包发送到哪台主机上将变成不确定性,那怎么解决这个问题?答案很明显,就是让数据包从路由器发出去的时候变成不同的IP地址不就可以了。这个技术叫源地址转换技术,我们称之为SNAT。

为了简化模型,我们还是先假设路由器的WAN口接入的IP地址为公网IP,比如21.8.14.91,我们的内网计算机地址是192.168.1.10,网关地址为192.168.1.1,我们访问的远端IP为36.152.44.96。

首先计算机发送一包数据出来到路由器上。在这包数据的网络层有两个重要的信息,一个是原IP,192.168.1.10,另一个是目标IP,36.152.44.96路由器拿到这一包数据时,需要执行原地址转换,把原IP改一下,改成WAN的公网IP221.8.14.91发送出去,服务器收到了数据处理完之后需要回复,再把原IP作为目标IP发送回来,路由器收到回包执行反向SNAT。再把目标IP改成192.168.1.10发送给了家庭中的计算机,一次通信完成。

假设家庭中有两台计算机,另一台计算机的IP地址为192.168.1.11,他们俩同时访问同一个网站,发送了两包数据到路由器上,路由器之间SNAT发送出去,看来没什么问题,但是回来的数据包怎么办?因为回来的数据包的目标IP都是221.8.14.9。如何从中区分出来两台计算机的数据包?所以这样看,只关注IP地址是不行的,还需要增加一些确定性的标记。

这时,就要把关联的属性,再往下扩展一层,扩展到传输层。我们以最常用的传输层协议TCP协议。TCP协议有两个关键属性,源端口和目标端口。这时候,我们的源地址转换就变成了修改源IP和源端口,并将修改后的端口号和源IP家园端口形成映射关系。

比如主机一和主机二的源端口都是12345,修改后主机一的源端口变为23456,主机二变为34567,再返回包中,根据目标端口号是23456还是34567,区分出来是主机1还是主机2的包,并且在反向SNAT的时候把目标端口号改回。

除了TCP协议外,UDP协议也是同样的道理。通过IP加端口进行关联。

但是我们常用来检测目标连通性的ping命令使用的是SMP协议,它没有端口信息,则需要使用协议中的type + code来代替端口进行关联。

其他的协议也都是类似的道理,通过协议特定的标记来进行关联。

明白了SNAT,我们再来看一下DNAT。DNAT名为目标地址转换,顾名思义,跟SNAT相反的。DNAT是把目标地址修改的技术,那DNAT有什么用呢?

如果我们的内网计算机对外提供服务,公网上发过来的请求不能直接到达内网计算机,我们就需要路由器用DNAT技术帮我们转发请求。

比如我们内网有一台主机上有一个外部服务监听了80端口,我们需要在路由器上配置一个DNAT,内容为访问公网地址的8080端口,则帮我们转到计算机1,也就是192.168.1.10的八零端口。

则当访问数据包从WAN口进入后,路由器执行DNAT修改目标地址为192.168.1.10,修改目标端口为80。把数据包转发给了计算机1。

NAT基础深入到我们生活的方方面面,小到家庭网络达到庞大的运营商网络计算平台都通过NAT技术一层层的将我们的网络进行了分割。在IPV4地址严重匮乏的今天,我们的计算机网络仍旧能正常的运转,多亏了NAT技术的存在。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值