网络层(一)—— 网际协议IP

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务

与IP协议配套使用的还有三个协议:

    地址解析协议ARP(Address Resolution Protocol)

    网际控制报文协议ICMP(Internet Control Message Protocol)

    网际组管理协议IGMP(Internet Group Management Protocol)

    网络层(一)—— 网际协议IP

将网络互相连接起来要使用一些中间设备:

    物理层使用的中间设备叫转发器

    数据链路层使用的设备叫网桥或桥

    网络层使用的设备叫路由器

    在网络层以上使用的设备叫网关

1、IP地址及其表示方法

IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标志符。

IP地址的编址方法共经过了三个历史阶段:

    1)  分类的IP地址(最基本的编址方法)

    2)子网的划分(最基本的编址方法的改进)

    3)构成超网(比较新的无分类编址方法)

    所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号,它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网中必须是唯一的。第二个字段是主机号,它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个互联网范围内是唯一的。这种两级的IP地址可以记为:

                                                            IP地址  ::={<网络号>,<主机号>}

网络层(一)—— 网际协议IP

    对主机或路由器来说,IP地址都是32位的二进制代码,为了便与书写,可用其等效的十进制数字表示,并且在这些数字之间加上一个点,这就是点分十进制。

    特点:

    1)每一个IP地址都由网络号和主机号两部分组成

           分配IP时只分配网络号,剩下的主机号由单位自行分配

           路由器仅根据目的主机所连接的网络号来转发分组

    2)实际上IP地址是标志一台主机(或路由器)和一条链路的接口。

2、IP地址与硬件地址

    物理地址是数据链路层使用的地址,而IP地址是一种逻辑地址(IP地址是用软件来实现的)。使用IP地址的IP数据报一旦交给数据链路层,就被封装成MAC帧了,MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。主机或路由器收到MAC帧后,只有剥去MAC帧的首、尾部把数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

网络层(一)—— 网际协议IP


3、地址解析协议ARP

    为了从网络层使用的IP地址,解析出数据链路层使用的硬件地址。ARP是解决同一个局域网上的主机和路由器的ip地址和硬件地址的映射问题。

网络层(一)—— 网际协议IP

    网络层使用的是ip地址,但在实际的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但ip地址和下面的网络硬件地址之间由于格式不同,而不存在简单的映射关系(ip地址32位,局域网硬件地址48位)。更换网络适配器,也会使主机硬件地址改变。解决的方法是在主机ARP高速缓存中存放一个从ip地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。

    每一台主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的ip地址到硬件地址的映射表。这些都是该主机目前知道的一些地址。

    既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,为什么要使用抽象的ip地址,而不直接使用硬件地址进行通信???由于全世界存在着各式各样的网络。他们使用不同的硬件地址。要使这些异构网络能够相互通信,就必须进行非常复杂的硬件地址转换工作。因此,由用户和用户主机来完成这项工作几乎是不可能的事,但ip编址只把这个复杂的问题解决了,连接到互联网的主机只需各自拥有一个唯一的ip地址,它们之间的通信就像连接在同一个网络上那样简单方便,调用ARP的的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。

4、IP数据报的格式

网络层(一)—— 网际协议IP

    由上图可以看出,一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。后面是一些可选字段,其长度是可变的。

(1)版本。指IP协议的版本。

(2)首部长度。范围在5~1 5之间(最小长度20字节,1个32位字长是4字节)。

(3)区分服务。用来获得更好的服务(一般不使用)。

(4)总长度。首部和数据之和的长度,单位为字节。在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,即最大传送单元MTU。当一个IP数据报封装成链路层的帧时,数据报总长度如果超过数据链路层的MTU值,就必须把过长的数据报进行分片处理(封装分片)。IP协议规定,在互联网中所有的主机和路由器,必须能够接受长度不超过576字节的数据报,若超过,就要进行分片(传输分片)。

(5)标识。相同标识字段的值使分片后的各数据报片最后能正确重装成原来的数据报。

(6)标志。目前只有两位有意义:最低位MF,MF=1代表“还有分片”,MF=0代表“此为最后一个分片”;中间一位DF“不能分片”,DF=0时才允许分片。

(7)片偏移。较长的分组在分片后,某片在原分组中的相对位置。

(8)生存时间(TTL)。数据报在网络中的寿命,当TTL值减为0就丢弃这个数据报。

(9)协议。指出此数据报携带的数据是使用何种协议。

(10)首部检验和。只检验数据报的首部,不包括数据部分。

    可变部分:选项字段用来支持排错、测量以及安全等措施,内容很丰富,增加首部的可变部分是为了增加IP数据报的功能,实际上这些选项很少被使用。