协议森林14 逆袭 (CIDR与NAT)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。

 

IPv4由于最初的设计原因,长度只有32位,所以只提供了大约40亿个地址。这造成了IPv4地址的耗尽危机。随后,IPv6被设计出来,并可以提供足够多的IP地址。但是IPv4与IPv6并不兼容,IPv4向IPv6的迁移并不容易。一些技术,比如说这里要说的CIDR和NAT,相继推广。这些技术可以缓解IPv4的稀缺状态,成就了IPv4一时的逆袭。

 

CIDR

CIDR(Classless Inter Domain Routing)改进了传统的IPv4地址分类。传统的IP分类将IP地址直接对应为默认的分类,从而将Internet分割为网络。CIDR在路由表中增加了子网掩码(subnet masking),从而可以更细分网络。利用CIDR,我们可以灵活的将某个范围的IP地址分配给某个网络。

1) IP地址分类

IP接力赛中,我提到,IP地址可以分为如下几类:

IP class    From          To                 Subnet Mask

A           1.0.0.0       126.255.255.255    255.0.0.0

B           128.0.0.0     191.255.255.255    255.255.0.0

C           192.0.0.0     223.255.255.255    255.255.255.0

这是最初的IPv4地址分类设计。一个IPv4地址总共有32位,可以分为网络(network)和主机(host)两部分。子网掩码(subnet mask)是用于表示哪些位代表了网络部分。比如如下subnet mask 255.0.0.0的二进制表示为:

11111111 00000000 00000000 00000000

它的前八位为1,所以表示IP地址的前八位为网络部分。而后面的24位代指该网络的各个主机。一个A类网络可以有224台主机,也就是16777216。由于IPv4地址已经分好了类,所以当我们拿到一个IP地址,我们就可以通过上面查到它的子网掩码。(B类,216; C类,28)

 

2) 传统路由表

IP分类的方便了IP包的接力。IP包到达某个路由器后,会根据该路由器的路由表(routing table),来决定接力的下一站。一个传统的路由表看起来是这样的:

Destination        Gateway             Iface

199.165.145.0      0.0.0.0             eth0

199.165.146.0      0.0.0.0             eth1

0.0.0.0            199.165.146.8       eth1

该路由表代表的网络拓扑如下:

 

由于IP分类,我们不需要记录subnet mask。当我们要前往199.165.146.17时,我们已经知道这台主机位于一个C类地址,所以它的子网掩码是255.255.255.0,也就是说199.165.146代表了网络,17代表了主机。

 

3) CIDR路由表

然而,由于默认分类,造成了网络只能按照A、B、C的方式存在。假设一个网络(比如MIT的网络)分配了一个A类地址,那么该网络将容许16777216个主机。如果该网络无法用完这些IP地址,这些IP地址将无法被其他网络使用。再比如上面的网络,199.165.145必须作为一个整个的网络存在。如果我们只有10台主机,那么将会有200多个IP地址被浪费。CIDR的本质是在路由表中加入子网掩码,并根据该列信息对网络进行分割,而不是根据默认的A,B,C进行分割。比如:

Destination        Gateway             Genmask             Iface

199.165.145.254    0.0.0.0             255.255.255.254     eth2

199.165.145.0      0.0.0.0             255.255.255.0       eth0

199.165.146.0      0.0.0.0             255.255.255.0       eth1

0.0.0.0            199.165.146.8       0.0.0.0             eth1

 

根据路由表的第一条记录,

199.165.145.254 (IP address) : 11000111 10100101 10010001 11111110

255.255.255.254 (subnet mask): 11111111 11111111 11111111 11111110 (31个1,1个0)

 

通过子网掩码可以知道,前31位表示网络,最后一位表示主机。子网掩码总是有连续多个1组成,比如上面的31个1。所以也可记为199.165.145.254/31,来同时表示IP地址和子网掩码。

路由器将原来的199.165.145网络中的一部分分割出来。这一网络可以容纳两台电脑,也就是199.165.145.254和199.165.145.255。这个网络对应网卡是eth2。当有IP包通向这两个IP地址时,会前往eth2,而不是eth0。

 

网络拓扑如下:

 

利用CIDR,我们可以将IP地址根据需要进行分割,从而不浪费IP地址。

 

NAT

CIDR虽然可以更加节约IP地址,但它并不能创造新的IP地址。IP地址的耗尽危机并不能因此得到解决。我们来看IPv4的第二袭,NAT(Network Address Translation)。

 

理论上,每个IP地址代表了Internet上的一个设备。但有一些IP地址被保留,用于一些特殊用途。下面三段IP地址被保留用作私有IP地址:

From          To            

10.0.0.0      10.255.255.255

172.16.0.0    172.31.255.255

192.168.0.0   192.168.255.255

私有IP地址只用于局域网内部。理论上,我们不应该在互联网上看到来自或者发往私有IP地址的IP包。与私有IP地址对应的是全球IP地址(global IP address)。

 

NAT是为私有网络(private network)服务的。该网络中的主机使用私有IP地址。当私有网络内部主机和外部Internet通信时,网关(gateway)路由器负责将私有IP地址转换为全球IP地址,这个地址转换过程就是Network Address Translation。网关路由器的NAT功能。最极端情况下,我们可以只分配一个全球IP地址给网关路由器,而私有网络中的设备都使用私有IP地址。由于私有IP地址可以在不同私有网络中重复使用,所以就大大减小了设备对IP地址的需求。

 

1) 基础NAT

NAT的一种为基础NAT,也成为一对一(one-to-one)NAT。在基础NAT下,网关路由器一一转换一个外部IP地址和一个私有IP地址。网关路由器保存有IP的NAT对应关系,比如:

上面网络中,当有IP包要前往199.165.145.1时,网关路由器会将目的地改写为10.0.0.1,并接力给私有网络中的10.0.0.1的电脑。同样,当10.0.0.1的电脑向Internet发送IP包时,它的发送地为10.0.0.1。在到达网关路由器时,会将发送地更改为199.165.145.1。此外,IP头部的checksum,以及更高层协议(比如UDPTCP)中的校验IP的checksum也会更改。

基础NAT尽管是一对一转换IP地址,它还是可以减小内部网络对IP地址的需求。通常来说,一个局域网中只有少数的设备处于开机状态,并不需要给每个设备对应一个全球IP地址。NAT可以动态的管理全球IP地址,并将全球IP地址对应到开机设备,从而减小内部网络对IP地址的需求。

 

2) NAPT

NAT还有一种,被成为NAPT (Network Address and Port Translation)。在基础NAT中,高层协议的端口号并不会改动。NAPT下,IP地址和端口号可能同时改动。

我们在UDPTCP中提到端口(port)的概念。在建立UDP或者TCP通信时,我们实际上是用IP:Port来代表通信的一端(正如打电话时主机:分机号一样)。NAPT就是在网关路由器处建立两个通信通道,一个通往内部网络,一个通往外部网络,然后将网关处的通道端口连接,从而让内部和外部通信。比如:

我们看到,通往IP 199.165.145.1建立了三个端口的连接:8888, 8889和8080。它们分别在NAPT处改为通往10.0.0.1:80, 10.0.0.1:8080和10.0.0.3:6000。NAPT记录有外部IP:端口和内部IP:端口的一一对应关系。在IP包经过时,网关路由器会更改IP地址,端口号以及相关的checksum。

利用NAPT我们可以使用一个(或者多个但少量的)外部IP和大量的端口号,来对应多个内部IP以及相应的端口号,从而大大减小了对全球IP地址的需求。

NAPT:多重影分身术

 

无论是基础NAT还是NAPT,它们的设置都比较复杂,并且从本质上违背了互联网最初的设计理念。但由于IPv4的使用惯性,NAT还是被广泛推广。由于NAT所处的网关服务器是理想的设置防火墙的位置,NAT还往往和防火墙共同建设,以提高私有网络的安全性。

 

总结

即使是CIDR和NAT广泛使用,IPv4还是在不可避免的耗尽。IPv6正在加紧部署。但上述的两种技术,CIDR和NAT在IPv6中同样被采用,所以了解它们依然是有意义的。

 

欢迎继续阅读“协议森林”系列

 

时间: 2024-10-14 11:49:09

协议森林14 逆袭 (CIDR与NAT)的相关文章

协议森林

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   互联网是为了通信,通信又依赖于协议.我们交谈时,要符合语法和用语规范.机器之间的通话也要符合协议.否则,鸡同鸭讲,无法相互理解."协议森林"是我的一系列关于网络协议的文章,总结了多个网络协议. 网络协议属于技术,但深受政策与历史的影响.Ethernet, IP, UDP, TCP, HTTP, DNS... 这些协议形成茂密的树林,盘根错节.协议之间有时合作,有时竞

从前端到全端:JavaScript逆袭之路

背景 近年来,前端技术日新月异,前端已经不仅仅是网页,更多的开始由狭义向广义发展. 先后涌现出了具备后端能力的node,具备移动开发能力的react native,具备游戏渲染能力的cocos2d-js,以及iOS上的热修复技术JSPatch等等新技术. 咋一看,几乎各个端都被JavaScript攻陷,大有一统江湖之势. 究竟,JavaScript如何做到上天入地无所不能?JavaScript真的能一统江湖吗? 领域 代表技术 web前端 各类MVVM框架,recat,angular,vue..

《逆袭大学》文摘——9.5 用算法和数学奠定专业基础

有不少读者给我来信,咨询的是关于数学和算法对学习计算机的意义.这样的话题,在我的专栏中很多文章里都提到过.在拙作<逆袭大学--传给IT学子正能量>中,在这方面写了不少文字,现将其中的9.5节全文摘录在此文中,以供参考. 更多话题,见<逆袭大学--传给IT学子正能量>全书目录. 9.5 用算法和数学奠定专业基础 一个程序设计的初学者,在刚刚开始学习时,会认为编程中语言是最重要的.没有语言,没有掌握好编程语言,写不出程序来.而后又知道熟练运用语言仅仅是学会了一种表达的方式而已,如同一个

写在《逆袭大学——传给IT学子正能量》修改稿提交之时

<逆袭大学--传给IT学子正能量>结束了第二次修改,我的主要工作算是结束,余下的事更多要由责编董苗苗完成了. 我将写博文视一日三餐,发微博.人人当吃零食,而写这本书算是赴宴吃大餐.我承认,我吃撑着了.退出餐厅,扶墙站定,该把这场盛宴作个记录. 开通新浪博客的时间忘记了,记忆中是开了博客,转载过几篇博文,鄙视自己没有原创又删除了.立正了写原创的原则,有了写作的念头,第一篇2008年12月14日. CSDN博客开通的时间在2007年11月23日,但长期闲置.等到2011年末,带着学生在新浪博客发博

《逆袭大学——传给IT学子正能量》一审稿目录

<逆袭大学--传给IT学子正能量>一审过后,决定:(1)删掉一些文字,缩减篇幅,降低成本,使读者能够以尽可能低的价钱看到书:(2)调整目录结构,确实下面的三级目录结构太庞大了,也显得乱了. 正在准备的二审稿的目录已经调整为12章,只到二级目录,希望能够给读者一种更清新些的感觉. 先公布一审稿目录,作为对很长一段时间以来工作的纪念. 1 沦陷在大学里 1 1.1 迷茫的大学 11.2 说说大学这滩泥淖 31.2.1 泥淖和ní nào 41.2.2 大学,美丽而凶险的泥淖 41.2.3 大学之大

胡须先生逆袭Roseonly的背后玄机

中介交易 SEO诊断 淘宝客 云主机 技术大厅 原银泰网CEO互联网卖花记 近期,原银泰网CEO廖斌创办的卖鲜花网站"胡须先生"上线了,一个年薪丰厚的CEO为何放弃高薪投身鲜花电商?这让很多人着实有点不解,鲜花产业本算作传统产业,可如今在网上卖鲜花,已经不再是什么新鲜事了,但据业内人士分析,网上卖鲜花并不像想象的那么简单,受到价格.地域.流通.客户体验等各方面的影响,真正能经营出特色的可谓是凤毛麟角. Roseonly算是做得比较不错的一家,Roseonly一上线就定位高端,以&quo

国足逆袭究竟靠啥?

ZDNet至顶网服务器频道 01月21日 新闻消息:在过去的2014年,足球世界最经典的一刻一定是世界杯决赛中,替补登场的格策在第113分钟绝杀阿根廷帮助德国队第四次获得世界杯冠军:2015年开年至今,对于中国足球来说,最值得骄傲的莫过于国足亚洲杯小组赛三战三胜,昂首挺进淘汰赛.其实,在德国国家队时隔十四年重获世界杯冠军与中国国家队三十九年亚洲杯历史上的首次小组赛全胜出线的背后,有着共同的故事,究竟是什么? 先从格策的绝杀说起 配图:2014年世界杯决赛格策补时绝杀阿根廷助德国夺冠(转自新浪体育

土豪逆袭?民营银行看你的了

在各路实业大亨和金融机构大佬的密切关注下,市场期待已久的民营银行终于是破茧而出羽化成蝶了.银监会已经正式批准了三家民营银行的筹建申请,它们分别是华北.麦购为主发起人的天津金城银行:腾讯.百业源.立业为主发起人的深圳前海微众银行:正泰.华峰为主发起人的温州民商银行.到此为止,这场已经喧闹了一年多是件的民营银行试点名额之争总算是有了一个较为明确的定论.但是,在商业银行业务同质化.利率市场化.坏账隐忧不断攀升的大环境下,"土豪"进军金融圈到底是福是祸?而民营银行的新兵又应该怎样与传统银行周旋

支付宝的野心:互联网模式逆袭线下支付

中介交易 SEO诊断 淘宝客 云主机 技术大厅 在尝试了条形码和二维码支付方式后,支付宝对线下支付再次发起冲击.而这次的杀手锏正是原定于1月8日举办发布会的 "卡宝项目".但是,该发布会在举行前却被意外取消. 对于这一研发超半年的核心项目发布被叫停,外界猜测颇多. 昨日 (1月14日),支付宝一位内部人士在接受<每日经济新闻>记者采访时透露,"卡宝项目"目前还在测试中,肯定会在1月份推出. 业内人士分析认为,此番支付宝客户端新版打通了聚划算.美团.高朋等