第五章:DHCP
5.5 DHCP
5.5.1 DHCP实现即插即用
逐一为每一台主机设置IP地址会非常繁琐。为了实现自动设置IP地址,同一管理IP地址分配,就产生了DHCP (Dynamic Host Configuration Protocol)协议。有了DHCP,计算机只要连接到网络,就可以进行TCP/IP通信。DHCP不仅在IPv4中,在IPv6中也可以使用。
DHCP:
5.5.2 DHCP 的工作机制
5.5.3 DHCP中继代理
家庭网络大多数都只有一个以太网(无线LAN)的网段,逾期连接的主机台数也不会太多。因此,只要有一台DHCP服务器就足以应对IP地址分配的需求,而大多数情况下都由宽带路由器充当这个DHCP的角色。
5.6 NAT
5.6.1 NAT定义
NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除转换IP地址外,还出现了可以转换TCP、UDP端口号的NAPT(Network Address Ports Translator)技术,由此可以实现用一个全局IP地址与多个主机通信。
NAT(NAPT)实际上是为了正在面临地址枯竭的IPv4而开发的技术。IPv6中为了提高网络安全也在使用NAT,在IPv4和IPv6之间的相互通信当中常常使用NAT-PT。
5.6.2 NAT的工作机制
NAT:
在NAT(NAPT)路由器的内部,有一张自动生成的用来转换地址的表。当10.0.0.10向163.221.120.9发送第一个包时生成这张表,并按照表中的映射关系进行处理。
当私有网络内的多台机器同时都要与外部进行通信,仅仅转换IP地址,人们担心全局IP地址是否不够用。这是采用包含端口号一起转换的方式(NAPT)可以解决这个问题。
NAPT:
在使用TCP或UDP的通信当中,只有目标地址、源地址、目标端口、源端口以及协议类型(TCP还是UDP)五项内容都一致时才被认为是同一个通信连接。此时所使用的正是NAPT。
这种转换表在NAT路由器上自动生成。例如,在TCP情况下,建立TCP连接首次握手时的SYN包一经发出,就会生成这个表。而后又随着收到关闭连接时发出FIN包的确认应答从表中被删除。
5.6.3 NAT-PT(NAPT-PT)
现在很多互联网服务都基于IPv4。如果这些服务不能做到IPv6中也能正常使用的话,搭建IPv6网络环境的优势也就无从谈起。
为此,就产生了==NAT-PT(NAPT-PT)==规范,PT是Protocol Translatio的缩写。NAT-PT是将IPv6的首部转换为IPv4的首部的一种技术。有了这种技术,那些只有IPv6地址的主机也就能够与IPv4地址的其他主机进行通信了。
5.6.4 NAT的潜在问题
由于NAT(NAPT)都依赖于自己的转化表,因此会有几点限制:
- 无法从NAT的外部向内部服务器建立连接。
- 转化表的生成以转换操作都会产生一定的开销。
- 通信过程中一旦NAT遇到异常需重新启动时,所有的TCP连接都将被重置。
- 即使备置两台NAT做容灾备份,TCP连接还是会被断开。
5.6.5 解决NAT的潜在问题与NAT穿越
解决NAT上述潜在的问题有两种方法:
**第一种方法就是改用IPv6。**在IPv6环境下可用的IP地址范围有了极大的扩展,以至于公司或家庭当中所有设备都可以配置一个全局IP地址。因为如果地址枯竭问题解决了,就没必要使用NAT了。
另一种方法是,即使是在一个没有NAT的环境里,根据所制作的应用,用户可以完全忽略NAT的存在而进行通信。在NAT内侧(私有IP地址的一边)主机上运行的应用为了生成NAT转换表,需要先发送一个虚拟的网络包给NAT的外侧。而NAT并不知道这个虚拟包究竟是什么,还是会照样读取包首部中的内容并自动生成一个转换表。这时,如果转换表构造合理,那么还能实现NAT外侧的主机与内侧的主机建立连接进行通信。有了这个办法,就可以让那些处在不同NAT内侧的主机之间也能够进行相互通信。此外,应用还可以与NAT路由器进行通信生成NAT表,并通过一定方法将NAT路由器上附属的全局IP地址传给应用。
如此一来,NAT外侧与内侧可以进行通信,这种现象叫做**“NAT穿越”。**于是NAT那个“无法从NAT的外部向内部服务器建立连接”的问题也就迎刃而解了。而且这种方法与已有的IPv4环境兼容性非常好,即使不迁移到IPv6也能通信自如。出于这些优势,市面上已经出现了大量与NAT紧密集合的应用(由此,IPv4的寿命又被延长,向IPv6的迁移也就放慢脚步了)。
5.7 IP隧道
网络A、B使用IPv6,如果处于中间位置的网络C支持使用IPv4的话,网络A与网络B之间将无法直接进行通信。为了让它们之间正常通信,这时必须得采用IP隧道的功能。
IP隧道中可以将那些从网络A发过来的IPv6的包统和为一个数据,再为之追加一个IPv4的首部以后在转发给网络C。
一般情况下,紧接着IP首部的是TCP/UDP的首部。然而,现在的应用当中“IP首部的后面还是IP首部”或者“IP首部的后面是IPv6的首部”等情况与日俱增。这种在网络层的首部后面继续追加网络层首部的通信方法就叫做“IP隧道”。
NAT-PT和隧道的差别
- NAT-PT和隧道都是IPv4向IPv6过渡的技术,但是它们之间的实现和适用范围都是有很大的不同的。
- 首先报文转换和转发的方式不同,这个是NAT-PT和隧道最根本的差别。NAT-PT是对报文的网络层内容进行转换修改,剥离原先的报文头,替换为转换之后的报文头(IPv4àIPv6或者IPv6àIPv4);而隧道是对初始报文作另一层报文封装,根据隧道的不同类型加上相应的报文头。
- 正是由于转换的方式不同,导致他们检查报文的方式也不同。NAT-PT会检查并且可以更改报文中的端口号;而隧道从来不会检查报文的传输层内容。
- 转换方式的不同同样致使了他们的使用范围不一样,NAT-PT一般适用于IPv4与IPv6不同网络中主机互相访问的环境中;而隧道一般用于实现一种网络协议跨越另一种网络协议之间的通讯。所以,形成NAT-PT的环境只需要有一台可以进行NAT-PT转换的设备即可;而构造一种隧道的环境就必须要两台设备形成一个隧道。