计算机网络协议第七章,IP协议基础

来源:互联网 发布:阿里云rds连不上 编辑:程序博客网 时间:2024/05/24 01:38

     IP协议作为计算机网络协议核心,本章将介绍IP协议的首部,IP网络划分和子网划分,然后是IP选路。关于IP协议的讲解,莫过于《TCP/IP详解》卷一描述得最为经典,本章主要依据卷一的分析,并加以理解,希望能够将IP协议的功能阐述清楚对我也算大有收获了。

     通过第一部分“IP协议背景”的介绍,主要交代IP协议历史背景,以理解IP协议的诞生原因。通过分析IP协议的主要功能和职责,为下一部分做好知识铺垫。第二部分“IP协议详解”实际上是对第一部分的具体化,通过具体化的协议对IP的设计进行剖析。了解IP协议是如何定义和实现它的主要功能的。


IP协议背景

引言

      在本节阐述之前,希望大家对第二章《链路层协议》和第三章《网络层协议》里所阐述的知识点有所了解,对链路层和网络层所实现的功能有些宏观概念。本节不具体化IP协议,而是通过分析和网络历史的发展相结合,总结IP协议的实现功能和了解IP协议设计之因。也包含为什么出现IP子网,NAT,路由这些周边概念。


IP历史

       IP协议和计算机网络都由ARPANET发展而来,ARPANET的基石NCP协议就是TCP/IP协议的前身,于1981年由Jon Postel 在RFC791将IP协议详细定义下来,即IPV4。ARPANET由美国军方研究和率先使用,后来开放应用于商业及高校等民用方向。随着计算机组网的趋势和个人电脑的迅猛发展,TCP/IP协议成为后来Internet的重要基石。

       早期军方研究ARPANET之时,最主要解决计算机互联,解决数据共享问题,出于冷战时期的军事目的。后来转向商用和高校与APPANET纯军事的网络进行分离,建立NSFnet网络,现代Internet就是基于NSFnet发展而形成的。


IP的顶层设计

      了解历史背景之后来看IP协议的诞生和发展。在没有IP协议之前,试想下三台处于不同物理网络环境(PPP,X25等不同物理链路的意思)的机器应该如何互联和数据共享呢。我们知道数据的传输最终由物理层发送电平信号进行传输,不同的物理网络环境定义的数据格式不同(参加第二章链路层协议),并且识别机器的唯一标识物理地址都可能定义不同,因此要将这些网络环境进行组网,不仅网络物理连接上繁琐,上层使用者也是十分繁琐,因此为IP协议诞生就是解决这些问题的。

       我们知道各种网络环境的物理地址标识方法有所不同,并且物理地址也没有规律可寻,如果4台机器需要组网就必须使用6(3+2+1)根物理连线进行连接,试想100台机器甚至更多机器应该如何互联?因此IP协议统一了物理机器的唯一标识,并且提出网络划分的概念,可以将同一网络的主机IP的网络号设置相同,并且由一个路由器作为该网络唯一的数据中转站,使得主机连接线大大减少,并且组网环境简单很多。

        由于IP地址的出现,统一不同网络环境的物理地址标识,并且进行网络划分,使得多台机器共享一个网络,通过IP地址有规律可寻,大大降低组网环境复杂的,我认为这是以IP地址进行组网的最重要的优势。这是IP协议的核心功能。

        由于IP协议基于不同的物理层,因此需要遵从物理层的限制,也就是数据不可靠和MTU等等特性。由于物理层MTU限制,因此IP协议定义了分片机制。由于物理层的数据不可靠性传输导致IP协议设计了校验和容错。

        由于起初IP协议定义了A,B,C,D,E类的网络划分,特别是A,B类网络的主机号过多,没有充分得到利用,后来定义子网概念,将网络划分为网络,子网,主机三层结构。随着网络环境组网的复杂,对路由器的提出更多要求,特别是安全因此的考虑,继而出现路由表,NAT,防火墙,DMZ等等相关技术。


IP及网络层主要功能

通过上述的讲解,基本勾勒了IPV4设计的主要考量,通过对比IP协议首部基本上可以了解大概,IP协议作为网络层的基石,下面对网络层主要职责进行罗列。

1)通过IP地址,以区分网络所有物理主机。

2)通过IP网络划分和将物理机器进行有序的组织,是路由实现的基石。

3)利用路由器将不同网络进行组网,作为同一网络内数据的出口和入口,使得计算机组网大大简化。

4)提供数据分片和组装工作,使得上层协议无需关心底层细节。

5)通过子网的划分,可以将内部网络进行再次划分,使得路由效率和网络管理更为灵活,并且能够最大的利用IP地址。

6)利用路由表和IP头部选路选项对IP数据报进行有选路。

7)维护路由表。分为静态路由管理和动态路由管理。

   

IP协议详解

IP地址

       IP地址全称 (Internet Protocol Address )网际协议地址。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
       IP地址可以划分为A, B, C, D, E类地址,A,B,C为基本类,D类地址为多播地址,E类地址保留。具体划分规则参见下表:
       IP地址
A,B,C类地址是公网地址,也就是互联网的地址。
A类地址网络掩码是255.0.0.0。
B类地址网络掩码是255.255.0.0。
C类地址网络掩码是255.255.255.0。

0.0.0.0,255.255.255.255这是一类特殊的地址。
127.0.0.0~127.255.255.255这个地址范围是用于本地回环地址。
A,B,C这三类地址都一个私有IP地址,私有地址只能用于局域网,不能作为公网的地址。

IP首部字段讲解

IP头部
4位版本:值位4表示IPV4,现在还有IPV6。
4位首部长度:单位DWORD(4字节),最大首部长度为60(15*4)字节。
                       IP最小首部长度为20字节,因此IP首部选项最多40字节。
8位服务类型:不常用,参见RFC 1349对其对说明。
16位总长度: 单位Byte(字节),包括IP首部长度和IP数据长度,最大长度65535。
16位标识:是每个IP数据包的唯一标识,对于需要分片的IP报文,每个分片的标识是一致的。
3位标记: 第一位未使用。
                 第二位DF(不允许分片),路径MTU发现机制使用IP这一特性。
                 第三位MF (是否有更多分片),IP报文分片时,除最后一个分片不设置该标记,其他分片设置该标记为1。
13位偏移:是指当前分片在整个IP报文中的位置,比如0表示是第一个IP分片。
8位生存时间:每经过一个路由器减1,防止广播风暴,目前常用64。
8位协议:区分上层协议,比如ICMP,IGMP,TCP,UDP。
16位首部校验和:交换IP首部数据是否正确。
32位源IP地址: 源端IP地址。
32位目的IP地址:目的端IP地址。
选项:不常用。可选择如下项。
           安全和处理限制、记录路径、时间戳、宽松的源站路由、严格的源站路由。


子网划分

      前面提过子网产生的原因,由于A类,B类的主机号很大,无法使充分利用主机号,这是子网的主要用途。将主机号划分为子网号和主机号。下面数一个B类地址的子网示例。

B类地址前16位是网络号,后16位是主机号,将后16位主机号分割为8位子网号和8位主机号,不一定要按照字节单位进行分割。
进行子网划分之后,可以对外隐藏内部网络的路由,对内进行网络划分,便于管理和充分利用主机号。

在进行子网划分以后,就需要引入子网掩码的概念,子网掩码可用于判断两个IP地址是否处于同一网络,也是路由时的必要信息。下面是一个子网掩码的示例。

都是B类地址的子网,一个是8位子网号,一个是10位子网号,子网掩码的规则就是将代表网络号和子网号的Bit 位设置为1,将代表主机号Bit 位设置为0,转化为点分十机制的表示方法和IP地址类似,容易记忆。
子网掩码和IP地址进行与预算就是相当于屏蔽了主机号,得出IP地址的网络号+子网号部分。如果两个IP地址属于一个子网,那么将它们和子网掩与运算的结果则相同。

IP选路

路由基础

    第一部分提到网络层的核心工作是路由,而路由的前提条件是将所有主机按照IP地址所划分的网络类型或者子网类型进行有序的组网,并且各个路由器进行路由表配置,使得通过IP地址能够路由到最终主机。
   因此路由的核心是路由器,路由器和路由器之间连接着不同的网络,通过路由器的网状级连使得所有的网络组织为一张大的网络,目前世界上最大网络就是互联网。一般来说主机上这张网络的边缘或者时枝叶,事实上主机也可以开启路由的功能,如果开启路由功能的主机也可以认为是一个路由器。
   有了路由器网络的有序组织和路由表的建立,网络层进行路由就具备来前提条件,下面看一个路由表的示例,然后再讲网络层如何选路。
Destination     Gateway         Genmask         Flags   MSS Window  irtt Ifacedefault         192.168.182.2   0.0.0.0         UG        0 0          0 eth0192.168.182.0   *               255.255.255.0   U         0 0          0 eth0
这台机器是一个ubuntu虚拟机,地址为192.168.182.128。只有一个网卡eth0。

一个路由表由多个路由项组成,每个路由项都有以下几个要素所构成。
1、目的地址(Destination)
目的地址可以是一个完整的主机IP,或者一个网络,或者是default(表示默认路由)。
2、下一跳(Gateway)
下一站可能是一个最终目的,如果是目的地址和本级直接相连;更可能是一个路由器。
3、标记(Flag)
U:  表示可用。
G:  表示是一个网关。
H:  表示是直接级联的主机。
D:  表示是重定向报文创建的路由项。
M:  表示是重定向报文修改的路由项。
4、网络接口(Iface)
表示数据报由这个网络接口传输。

选路规则

有了路由表就可以进行路由了。路由表中有对应主机的,对应网络的,还有默认路由,路由是按照以下优先级进行选路的。
1) 搜索匹配主机地址的路由项。
2) 搜索匹配网络地址的路由项。
3) 搜索默认路由项。
如果三个都没有找到,则丢弃改报文。


小结

    本章第一部分对IP协议的主要功能进行阐述,第二部分主要细化了解IP协议,对网络层有另一个清晰的认知,事实上IP协议的核心功能就是路由和链路层抽象,所有一切都是围绕这两点进行展开的,我觉得目前这些内容对于大多数软件工程师来说是足够应对了,如果是从事路由器的工作的工程师来说需要来接路由的方方面面,如果以后有机会重点介绍路由的拓展。

参考

IP地址             百度百科

ARPANET       百度百科

IP协议             维基 

修订

初稿                                       2014-12-4               Simon

0 0
原创粉丝点击