Unix/Linux编程:理解私有地址和NAT

NET可以使得一个网络在为其内部主机使用一块私有网络地址的同时,核能与整个因特网进行通信

RFC1918指定了三块永远不会被分配的保留IP地址。这三个地址块是:

  • 10.0.0.0 — 10.255.255.255(前缀10/8)
  • 172.16.0.0 — 172.31.255.255(前缀172016/12)
  • 192.168.0.0 — 192.168.255.255 (前缀192.168/16)

网络使用这三块地址中的任意一块时,网络中的任意一台主机都可以访问此网络中的所有其他主机,而无须担心与全局分配的IP地址相冲突。当然,只要与外部网络没有连接,那分配什么样的地址都是无所谓的

如果网络真的和外部相连会发生什么情况呢?使用私有IP地址的主机如何跟因特网或者其他外网上的主机通信呢?这个问题最常见的答案就是使用NAT。支持NAT的设备类型包括路由器、防火墙和独立的NAT产品。NAT负责在私有网络地址和一个或者多个全局分配的IP地址之间进行翻译。我们来简要的看看它的工作原理:

  • 静态:将私有网络上的部分或者所有主机的私有IP地址都有映射为一个固定的、全局分配的地址
  • 地址池:NAT设备有一组全局分配的IP地址可用,它会将其中之一动态的分配给需要与外部网络中的对等实体进行通信的主机
  • PAT(Port Address Translation,端口地址转换):只有一个全局分配地址时可以使用这种方法,如下图所示情况。使用PAT时,所有私有地址都被映射为同样的外部地址,但输出分组的源端口会被修改成唯一的值,通过它可以将输入分组与私有网络地址相关联。
    在这里插入图片描述
    上图显示了一个带有三台主机的小型网络,此网络使用的是10/8地址块。还有一台表示为NAT的路由器,它拥有一个私有网络地址和一个因特网地址

假设主机H2要向204.71.200.69发送一个TCP SYN段,以便打开一个连接。下图中可以看到这个段离开H2是的目的地址为204.71.200.69.80,源地址为10.0.0.2.9600

这里处理源地址是个私有网络外没有什么特别的。这个段抵达路由器是,NAT必须将其源地址转换成205.184.151.171,这样目的主机204.71.200.69才能知道怎么回复这个请求。所有NAT也必须将源端口转换成一个唯一的端口号,这样它才能将那条连接上的输入流量发送给正确的主机。我们看到,源端口9600被映射成5555。因此传输给204.71.200.69的段,目的地址为204.71.200.69.80,源地址为205.184.151.171.5555

如下图B所示,204.71.200.69的应答到达路由器是,会被发送给205.184.151.171.5555。NAT在其内部状态表中查找这个端口,并发现端口5555与地址10.0.0.2.9600有关。从而,会将应答从路由器传输带H2
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值