计算机网络(六) 网络层---IP地址与IP数据报

来源:互联网 发布:淘宝店铺被投诉侵权 编辑:程序博客网 时间:2024/06/05 05:13

IP地址的编址方法经过了三个阶段:分类的IP地址、子网的划分、构成超网。

分类的IP地址的缺点:

     1)IP地址空间的利用率有时很低。

     每一个A类地址网络可连接的主机数超过1000万台,每一个B类地址网络可连接的主机数超过6万台。然而有些网络对连接在网络上的计算机数据有限制。例如,10BASE-T以太网规定其最大结点数只有1024个。

     2)给每一个物理网络分配一个网络号给使路由表变得太大因而使网络性能变坏。

     每一个ie路由器都应当能够从路由表查出应怎样到达其他网络的下一跳路由器。因此互联网中的网络数越多,路由器的路由表的项目数就越多。

     3)两级IP地址不够灵活

     有时情况紧急,一个单位需要在新的地点马上开通一个新的网络。但在申请到一个新的IP地址之前,新增加的网络是不可能连接到因特网上工作的


1985年起在IP地址中又增加了一个“子网号字段”,使两级IP地址变为三级IP地址。这种做法叫做划分子网或子网寻址或子网路由选择。

划分子网的基本思路:

     1)一个拥有许多物理网络的单位,可将所属的物理网络划分为若干各子网。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。

     2)划分子网的方法是从网络的主机号借用若干位作为子网号subnet-id,当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号、主机号。          IP地址  ::= { <网络号>,<子网号>,<主机号> }

     3)凡是从其他网络发给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。


问题:从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网的划分。

解决方案:子网掩码

不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位相“与”(AND),得出所要找的子网的网络地址。

不同的子网掩码确定了每一个子网中的最大主机数和可划分的子网数。

使用子网划分后,路由表必须包含三项内容:目的网络地址、子网掩码和下一跳地址。


无分类编码CIDR(构成超网)

正式名字:无分类域间路由选择CIDR(Classless Inter-Domain Routing)

特点:

     1)CIDR消除了传统的A类、B类和C类地址以及划分子网的概念。CIDR把32位的IP地址划分为两个部分。前面的部分是“网络前缀”,用来指明网络,后面的部分则用来指明主机。因此CIDR使IP地址从三级编址(使用子网掩码)又回到了两级编址,但这是无分类的两级编址。        IP地址 ::= { <网络前缀>,<主机号> }

     2)CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。只要知道了CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址和最大地址等信息。

CIDR使用“斜线记法”,或称为CIDR记法,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。

为了方便地进行路由选择,CIDR使用32位的地址掩码。由于目前仍有一些网络还使用子网划分和子网掩码,因此CIDR所使用的地址掩码也可继续称为子网掩码。/20表示地址掩码中1的个数。  /20地址块的地址掩码: 11111111  11111111  11110000  0000000

由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合,也称为构成超网

在1994和1995年,因特网的一个路由表就会超过7万个项目,而使用了CIDR后,在1996年一个路由表的项目数才只用3万多个。

每一个CIDR地址块中的地址数一定是2的整数次幂  /23以上的都包含了多个C类地址,这就是“构成超网”这一名词的来源。

好处:可以更加有效地分配IPv4的地址空间,可根据客户的需求分配适当大小的CIDR地址块。在分类地址的环境中,向一个组织分配IP地址,就只能以/8 、/16、/24为单位来分配

假设一个ISP共拥有64个C类网络,如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的路由表中就需要64个项目。


网络前缀越短,其地址块所包含的地址数就越多。而在三级 结构的IP地址中,划分子网是使网络前缀变长。

查找路由表时可能会得到不止一个匹配结果。应当从匹配结果中选择具有最长网络前缀的路由。这叫作最长前缀匹配,又称为最长匹配或最佳匹配。


问题:由于要寻找最长前缀匹配,使路由表的查找过程变得更加复杂了。如何减小路由表的查找时间。

方案:把无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。最常用的就是二叉线索。

为了简化二叉线索的结构,可以先找出对应于每一个IP地址的唯一前缀。



在TCP/IP的标准中,各种数据格式常常以32位(即4字节)为单位来描述。
2)首部长度   占4位,可表示的最大十进制数值是15。该单位是32位(4字节)。首部长度字段的最小值是5,相当于IP首部长度为5*4=20字节。
3)总长度  指首部和数据之和的长度,单位为字节。总长度字段为16位。数据报最大长度为2^16 - 1 = 65535字节。
在IP层下面的每一种数据链路层协议都规定了一个数据桢中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit).
例如,最常用的以太网就规定其MTU值是1500字节。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。
IP协议规定,在因特网中所有的主机和路由器,必须能够接受长度不超过576字节的数据报。这是假定上层交下来的数据长度有512字节(合理的长度),加上最长的IP首部60字节,再加上4字节的富裕量,就得到576字节。

4)标识    占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加一,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。(即标示的值只用于判断是否是同一个数据报的切片,其值并无其他意义)

5)标志  占3位  目前只有两位有意义

      标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。

      标志字段中间的一位记为DF(Don't Fragment)。意思是"不能分片"。只有当DF=0时才允许分片。

6)片偏移  占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。    这就是说,每个分片的长度一定是8字节(64位)的整数倍。

7)生存时间   占8位,生存时间字段常用的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的原点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子。(生存时间并不是指其在网络中能存活的时长)

      最初的设计:以秒作为TTL值的单位。每经过一个路由器时,就把TTL减去数据报在路由器所消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1.当TTL值减为零时,就丢弃这个数据报。

      后来随着技术的进步,路由器处理数据报所需的时间不断在缩短,一般都远远小于1秒钟,后来就把TTL字段的功能改为“跳数限制”(但名称不变)。TTL的意义指数据报在因特网中至多可经过多少个路由器。最大值为255。

8)协议  占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
常用协议和相应的协议字段值协议名ICMPIGMPIPTCPEGPIGPUDPIPv6ESPOSPF协议字段值12468917415089

9)首部检验和   占16位。这个字段只检验数据报的首部,但不包括数据部分。数据报每经过一个路由器,路由器都要重新计算一下首部检验和(生存时间字段会变化)。为了减少计算量,采用反码算术运算把所有16位字相加后得到的反码写入检验和字段。










0 0