计算机网络读书笔记

Published: by Creative Commons Licence

  • Tags:

VPN

VPN全称是虚拟专用网(Virtual Private Network)。

由于IP地址紧缺,一个机构能申请到的IP地址数远远少于主机数。但是很多情况下,机构中的主机只需要相互访问,而不需要访问其它网络的主机,因此它们不需要和互联网连接。假如结构内部的计算机也是采用TCP/IP进行通信,那么从原则上来说,这些仅在内部使用的服务器,可以由机构自行分配IP地址(这种地址称为本地地址),而不需要向互联网的管理机构申请全球唯一的地址(这种地址称为全球地址)。

但是如果任意选择一些IP地址作为本机构内部使用的本地地址,那么在某种情况下可能会引起问题。例如机构中的某台主机需要和互联网连接,那么这种仅在内部使用的地址可能会与互联网中某个IP地址重合,这样就会出现地址二义性问题。

为了解决这类问题,RFC 1918指明了一些专用地址(private address),这些地址仅用于机构的内部通信,而不能与互联网上的主机通信。换言之,专用地址只能用作本地地址,而不能用作全球地址。在互联网中所有的路由器,对目的地址是专用地址的数据报一律不进行转发。

2013年4月,RFC 6890全面给出了所有特殊用途的IPv4地址:

  • 10.0.0.0到10.255.255.255(10.0.0.0/8)
  • 172.16.0.0到172.31.255.255(172.16.0.0/12)
  • 192.168.0.0到192.168.255.255(192.168.0.0/16)

原本A类地址已经用完,但是10.0.0.0是分配给ARPANET的,而由于ARPANET已经关闭了,因此这个地址被释放出来作为专用地址。

采用这样的专用地址互连网络称为专用互联网或本地互联网,或者叫做专用网。

有时一个很大的机构的许多部门分布的范围很广,这些部门需要交换信息。这时候有两种方法:1.租用电信公司的通信线路作为本机构专用。2.利用公用的互联网作为本机构各专用网之间通信的载体,这样的专用网又称为虚拟专用网VPN。

虚拟专用网没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样而已。

假定有两个不同的专用网A和B,其专用网络地址分别为10.1.0.0和10.2.0.0。现在这两个场所需要通过互联网构成一个VPN。显然每个场所至少有一个路由器具有合法的全球IP地址。(这两个路由器和互联网的接口地址必须是合法的全球IP地址),路由器在内部网络的接口地址则是专用网的本地地址。

每个专用网内部的通信量都不经过互联网。但如果场所A的主机X要与场所B的主机Y进行通信,那么就必须经过A与互联网之间的路由器R1和B与互联网之间的路由器R2。X发送给Y的数据报的源地址是10.1.0.1,而目的地址是10.2.0.3。这个数据报会从X发送到R1。R1收到内部数据报后,发现目的地址必须经过互联网,就把整个数据报进行加密(保证安全性),然后重新加上数据报的首部,封装为可以在互联网上发送的外部数据报,其源地址是R1的全球地址,而目标地址是R2的全球地址。路由器R2收到数据报后,取出其中的数据部分,并进行解密,恢复出原来的内部数据报,之后交付给主机Y。

NAT

专用网内部的一些主机本来已经分配到了本地IP地址,现在这些主机需要和互联网上的主机通信,那么需要怎么办。

最简单的方法就是多申请一些全球IP地址,但是这种方法成本很高。目前用的最多的方法是采用网络地址转换(Network Address Translation)。

网络地址转换方法是1994年提出的,这种方法需要在专用网连接到互联网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少需要一个全球IP地址。这样所有使用本地地址的主机在和外界通信的时候,都需要NAT路由器上将其地址转换为全球IP地址,才能与互联网连接。

NAT路由器收到专用网内部主机A发送给互联网上主机B的IP数据报:源IP地址是192.168.0.3,而目的IP地址是213.18.2.4。NAT路由器把IP数据报的源IP地址转换为自己的全球IP地址172.38.1.5,然后转发出去。因此主机B收到这个IP数据报的时候,因为A的IP地址是172.38.1.5。

而当NAT路由器收到主机B发送来的IP数据报的时候,还要进行一次IP地址的转换。通过NAT地址转换表,就可以把IP数据报上的旧的目的地址172.38.1.5转换为A的专用地址192.168.0.3。

由此可见,当NAT路由器有n个全球IP地址的时候,专用网内最多可以同时有n台主机接入互联网,这样就可以使内网较多的主机轮流使用NAT路由器有限数量的全球IP地址。

显然通过NAT路由器的通信必须由专用网内的主机主动发起,因此专用网内部的主机不能充当服务器使用。

为了更有效地使用NAT路由器的全球地址,现在常用的NAT转发表会把运输层的端口号也利用上。这样就可以多个专用网的主机同时共用一个全球地址。使用端口号的NAT,也叫做网络地址与端口号转换NAPT(Network Address Port Translation)。

在层次的角度,NAPT比较特殊。因为普通路由器工作在网络层,但是NAPT路由器还要查看和转换运输层的端口号,而这属于运输层的范畴。也因此NAPT也遭受到一些人的批评。

参考资料

  • 《计算机网络》第7版,谢希仁