计算机网络——网络层-网络地址转换

计算机网络系列博文——目录

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

  • 对某子网(如家庭,小型办公室),ISP已为其分配一组连续的IP地址。NAT技术使得该子网可以在有限的IP地址下扩展因特网设备。

  • NAT使能路由器接口可分为公网接口和子网接口,公网接口连接因特网,子网接口是小型网络的一部分;

[RFC 1918] (https://tools.ietf.org/html/rfc1918) 保留了三块特殊的地址空间:

  • 10.0.0.0/8 - 10.255.255.255 (10/8 prefix)
  • 172.16.0.0/12 - 172.31.255.255 (172.16/12 prefix)
  • 192.168.0.0/16 - 192.168.255.255 (192.168/16 prefix)
    这些地址空间用于专用网络,如家庭网络;
    在小型网络,即上述子网中,使用特殊地址空间编码,在公网,使用一般地址编码;
    在小型网络内部,可以通过特殊地址空间内的地址区分各个网络设备;
    在因特网范围内,以特殊地址空间地址编制的设备,其IP是不唯一的;
    在小型网络内部,可之间通过内部IP区分设备,但在因特网上通讯,须使用NAT使能路由器的公网IP。
  • 在外部视角下,NAT使能路由器类似一个具有单一IP地址的单一设备;
  • NAT使能路由器对外界隐藏了家庭网络的细节;
  • NAT使能路由器的公网地址通常是通过DHCP获得的;
  • NAT使能路由器从ISP的DHCP获得公网地址,而后路由器运行一个DHCP服务器,为该路由器控制的小型网络中的端系统提供地址;

NAT转换表

  • 对外界,NAT路由器控制下的网络有如一个设备,当数据到达NAT路由器时,路由器需将之分发到正确的设备;
  • NAT通过转换表实现地址转换;
  • NAT转换表是 端口号 到 内部IP x 实际端口号 的映射;

NAT工作原理

  • 假定NAT内部网络上有设备在 (ip A,port a) 上对 公网端系统 (ip B,port b)发送报文,其中ip A 是内网地址,ip B是公网地址;
  • 假定NAT路由器的公网地址是 ip N;
    则,NAT路由器截获内网发往外围的报文,分配一个port nA,用(ip N,port nA)替换原报文中的源地址部分,同时,添加相应NAT转换表项;

NAT技术缺陷

NAT是解决IP地址短缺的权宜之计,有诸多问题;

  1. 端口号用于进程编址,而不应用于主机编址;NAT给运行在内网上的服务器造成了问题,因为客户无法知晓服务器的实际端口;
  2. 路由器仅应当出来网络层及以下的分组;
  3. 根据端到端原则,主机彼此应直接相互对话,节点介入修改IP地址与端口号违背了这一原则;
  4. 应使用IPv6解决IP地址短缺问题,而非使用NAT做权宜;

NAT穿越

  • NAT妨碍P2P应用,因为NAT下的对等方无法作为服务器与其它对等方建立TCP连接,P2P需要通过中继等技术实现NAT穿越;

无论如何,NAT已是因特网的一个重要组件。

通用即插即用(UPnP)

  • 可用于实现NAT穿越的技术;

  • 允许主机发现并配置邻近NAT的协议;

  • UPnP要求主机和NAT都是UPnP兼容的;

  • 在UPnP协议下,主机上的进程可以在一定程度上自定义NAT映射,即进程可以定义并了解套接字被映射到了哪个(ip,port)序对;

你可能感兴趣的:(计算机网络——网络层-网络地址转换)