赞
踩
接下来我们来看看网络层是怎么工作的,可以说网络层是整个计算机网络的心脏,起到了主要的抽象和转发报文作用。网络层最主要的协议就是IP协议,它是整个网络层的中心。除了IP协议,还有很多协议为更好的服务IP协议而工作。
不过在介绍IP协议之前,我们必须先了解IP协议是如何对网络环境进行抽象的。这种抽象就是IP地址。
网络设备指处在网络层工作互联的设备,包括网络层交换机(路由器)和各种形式的主机。IP协议为连接互联网的每一个网络设备分配一个IP地址。而IP协议的终极目的就在于将数据包从一个IP地址发送到另一个IP地址。
需要注意的是,IP地址实际上并不是为一个网络设备直接编址,其编址对象是网卡(网络驱动器),有些网络设备可能会有多个网卡(路由器、服务器等),那么它们就会有多个IP地址。
IPv4地址用32位二进制串来表示一台网络设备。为了方便人类记忆,常用“点分十进制”形式来表示IPv4地址:
图1 IPv4地址表示形式
不难看出,IPv4最多支持编址2^32≈43亿
个网络设备的同时接入。这个数量在计算机网络创立之初肯定绰绰有余的,但是随着互联网行业的迅猛发展,这个数量也越来越不够用了。
解决方法有两种:
一个IP+若干端口号
来映射多个网络设备,就可以起到复用IP的效果了。上面说到,IPv4不够用了,本质原因是因为IPv4只有32位,位数太少了。。
所以IPv6直接使用了128位编址,可以为地球上的每一粒沙子编址。。除了位数多了以外,IPv6还有其他优点:
由于IPv6太长了,点分十进制可能不太适合。。所以IPv6采用8组16进制串来表示:
图2 IPv6的表示
计算机网络投入使用早期,还没有那么多的网络设备。所以人们设计了地址分类策略来管理这些IP地址:
图3 IP地址的分类
其中ABC类网直接用于为各局域网的网络设备分配地址,D类网用于组播,E类网待用。
有了网络分类,那么查找一个IP地址就相对容易了:先根据地址头n位确定它是哪一类网,可以转发到该类网的路由器;再由此路由器继续向下解析网络号分析其具体属于哪一个网络,可以转发到该网络的路由器;最后再由此路由器分析其主机号,将其转发至网内主机。
你可以想象邮局邮寄包裹的过程:邮寄一个省外的包裹,先需要知道它要发往哪个省,将其交给对方的省邮局;再由省邮局去分析它属于哪个城市,交给对方市邮局。。。以此类推,分而治之地运送包裹。
图4 ABC类网络的公网地址范围
由于ABC类网的网络号与主机号划分,使得这三类网络有着数量不同的网路和最大支持主机:
为什么主机数要减2呢??
因为在每个网络中,有2个IP地址不能被分配到具体主机,留作他用:
另外,广播又分为2种:本地广播和异地广播。也很好理解,前者指发往本网络的广播地址;而后者指发往其他网络的广播地址。
这样做的优点很明显:
可以快速地确定一个IP属于哪个类网,并将其交付类网路由器,进行分治转发;而不是茫然地在43亿的IP地址中胡乱查找。。
但随着网络设备越来越多,网络分类策略的缺点也显现出来:
正是分类策略具有这两条缺点,无分类策略发展起来了。在今天,二者相结合共同构成了网络层IP地址的抽象。
无分类策略的实现是CIDR协议(Classless Inter Domain Routing,无类别域间路由)。
无分类策略方案中,32位的IP地址被使用者按需任意划分为两部分;同样,前面是网络号,后面是主机号。
但你自己划分的时候是爽了,可是如果所有人都随意划分,那路由器心态崩了啊。。怎么找目标的网络进行分治转发呢?
这就需要网络在划分IP地址的同时,标注自己是在哪一位上划分的:
图5 无分类策略的地址划分
对人类来说,这种策略下的IP可以采用a.b.c.d/n
的形式表示,其中n表示前n位为网络号。
对于机器来说,更快的方式是采用子网掩码,子网掩码的网络位均为1,其余位为0。因此,将子网掩码与IP地址相与,即可得到IP地址的网络号。
由于分类策略已经使用了很长时间,很难直接推倒之前的ABCDE类网划分。而可行的做法是将两种分类策略融合在一起工作,而这就是我们今天使用IP地址的策略:
图6 分类策略与无分类策略的兼容
可以看到,在IP地址的前部,仍保留了ABC类网络的网络号;不同的是,使用子网掩码多覆盖了若干位,作为一个灵活的子网。如此就把两种策略兼容起来一起工作了。如图6的网络地址,就是C类网“192.168.1”的一个子网。
至此,我们描述的都是公网IP的构成。但互联网世界的IP地址不都是公网IP!每个设备都直接持有一个私网IP,而又间接地持有一个公网IP。
此话怎讲?私网IP仅在端设备所处的局域网内有效,在局域网外的互联网世界里这个地址就是个“笑话”。就好比,你家的门牌号是“3单元101”,仅在你所处的楼内有效;如果出了这栋楼还说“我家在3单元101”,那谁也不知道你住在哪。。
所以有很多初学者写网络服务器程序时(比如说我哈哈哈。。)想要让并非局域网的用户也可以连接到自己的服务器,然后发现对方怎么也找不到自己服务器IP地址。。。这就是因为你给对方的IP是一个私网IP,在公网根本没有任何效用。那么怎么做才能让外网访问到自己的服务器呢?这就需要路由器内网穿透的知识了。。如果你的目的知识验证自己的服务器的功能逻辑是否工作正常,那么在局域网里进行验证就可以了。
ABC类网除了维护一段公网IP,还维护各自的私网IP:
图7 ABC类网维护的公网IP段和私网IP段
可以看到,私网IP段比公网IP段少了不少。。这也很好理解,私网IP只在局域网内有效,所以IP地址数量只要保证足够此网内部的主机数量即可。
一般来说,家用路由器分配给我们的私网地址是“192.168.x.x”,这是因为家用局域网一般都是某个C类网下的一个子网,所以分配私网地址时就采用了C类网地址段。
另外一个问题,既然每个设备都持有一个公网IP和私网IP,那么就需要一种算法将二者进行一个转换,或者分配私网IP。这就是NAT协议的工作内容了。
本文重点介绍了IP地址的相关知识,具体阐述了网络分类策略和无分类策略的IP划分方式,最后还简单讨论了公网IP和私网IP。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。