网络NAT路由器

这两天复习计算机网络的时候遇到这样一个概念。

NAT 网络地址转换(Network Address Translation)

 

大概是这样的。

举一个例子,假如说我们现在接入了校园网,我有一个内部IP是10.2.61.55。

意思是我是2号楼第6层A段(1)的第55台主机。我的网关是10.2.61.254

如图:

当我要像外界发数据包的时候我该用什么IP呢? 10.2.61.55?  

大家不要忘了这是一个内部的IP,类似的另一个内部的IP是192.168.*.*

 

互联网上的通信是相互的,例如TCP就是三次握手,我给你说句话,你还要告诉我你收到这句话了。

那么假如说我现在在浏览器里打开百度网页,我使用10.2.61.55 的IP,那么当百度的服务器给我回应消息的时候,数据报里的目标地址应该填10.2.61.55吗?

我们都知道这是一个内部地址,当路由器转接收到一个以内部地址为目的地址的数据包时,会直接丢弃到不发送。

 

那么我们处在一个内部网络究竟是怎样与服务器进行通信的呢?

答案是NAT路由器,或者说是 实现了NAT功能的路由器。

 

我们都知道广义上的路由器是工作在网络层的设备,其主要功能是转发分组。

对于接收到的一个数据包,只会改变它的MAC地址,以及IP数据包里的TTL(生存时间)字段 减 1

 

还是举刚才的那个例子来说明。

假如我现在要访问百度网站,那么我势必要和百度服务器建立HTTP连接。

HTTP连接的运输层协议使用的是TCP协议,也就是要使用端口。

那么我发出去的数据包就是这样的。

运输层:源端口5000 目标端口 80

网络层:源地址10.2.61.55 目标地址119.75.217.56

 

经过我的第一个网关(一个路由器)10.2.61.254 ,数据包就会变成这样

运输层:源端口3001 目标端口 80

网络层:源地址10.2.61.254 目标地址119.75.217.56

 

然后再经过多个网关(多个路由器)最后到了与外部网络相连的路由器时,发出数据包就会变成这样

运输层:源端口6001 目标端口 80

网络层:源地址61.185.225.162 目标地址119.75.217.56

注意这个时候源地址就变成了一个对外真实的IP地址

 

 

服务器接到与我们校园与外部相连的路由器发出的数据包,就会这样返回一个数据包

运输层:源端口80 目标端口 6001

网络层:源地址119.75.217.56 目标地址61.185.225.162

 

然后再经过多个路由器最后变成这样一个数据包

运输层:源端口80 目标端口 3001

网络层:源地址119.75.217.56 目标地址10.2.61.55

 

于是我们本机就接收到了来自百度服务器的数据包了。

 

需要注意的一些问题:

1.路由器在进行IP地址,与端口转换的过程中,会把之前原先的IP地址与端口地址存起来,形成一个映射表,在收到外部发来的数据包时,会根据映射表来重新修改数据包中的IP地址与端口地址。

2.根据需要,外部的路由器可能不止一个(毕竟一个主机的端口只有那么几w个)

 

 

 

那么使用NAT路由器还有什么好处呢?

1.节省世界上的IP资源

2.外部不知道我们这个内部网络究竟是怎样划分的,就增加了内部网络的安全性。

3.防止外部主机攻击,内部的主机或服务器。

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值