网络层的任务:为数据在网络中选择一条合适的路径,也叫作选路。
网络层的协议有很多种,使用最广泛的是IETF制定的网际协议(Internet Protocol,IP),因特网的体系结构叫做TCP/IP体系结构也是因为IP是其中最重要的两个协议之一。在TCP/IP体系结构中,除TCP与IP外还有其他很多的协议:
1、ARP(Address Resolution Protocol):地址解析协议
利用目的IP地址,于子网内的其他计算机交换信息,完成IP地址到物理地址的转换。ARP缓存非常有用,如果没有ARP缓存,每次都要广播ARP请求,增加了网络通信量,每次ARP请求前,计算机总是先查询ARP缓存,查不到时再广播ARP请求,ARP缓存中的动态数据也有有效期,有效期到了就删除相应的数据,这是因为计算机有可能更改自己的物理地址。
2、ICMP:网际控制消息协议
ICMP的消息封装在IP数据报中,用以检测整个ICMP消息是否出错,因为IP数据报仅检测首部是否出错,不包括数据部分,所以ICMP有必要自己进行差错检测。
3、IGMP:网际组管理协议
IP数据报有单播、广播、多播3中传输方式单播和广播的过程都比较简单,多播的过程较复杂,需要两类协议才能运行。第1类是计算机与多播路由器之间的协议,,依靠它多播路由器确定一个多播组内有多少计算机;第2类协议是多播路由器之间的协议,依靠它多播路由器才能高效的转发多播IP数据报。第1类协议中现在最常用的是IGMP。
4、IP数据报
IP协议的数据转发是典型的分组交换方式,IP的协议数据单元叫做IP数据报,每个IP数据报都带有接收方的地址,路由器根据地址转发IP数据报,各IP数据报可能通过不同的路径到达接收方。IP是无连接的协议,IP数据报产生后立即发送,不需要首先与接收方建立连接。IP是不保证可靠传输的协议,可靠传输的任务由运输层的TCP协议负责。
IP数据报的格式:
(1)版本:版本字段4位;
(2)首部长度:字段4位,这个字段说明收不到底有多长;
(3)区分服务:占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(4)总长度:总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification):占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag):占3位,但只有2位有意义,用于IP数据报的分片与还原过程;
(7)片偏移:占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,除了最后一个分片,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间:占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1.若TTL值减少到零,就丢弃这个数据报,不再转发。因此,TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255.若把TTL的初始值设为1,就表示这个数据报只能在本局域网中传送。
(9)协议:占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和:占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
(11)源地址:占32位,发送计算机的IP地址;
(12)目的地址:占32位,是接受计算机的IP地址。
IP地址划分为网络号与主机,IP地址的长度是32位,子网掩码的长度也是32位,子网掩码左边部分全是1,右边部分全是0,1的位数与网络号相同。
现有公有IP地址严重不足,所以很多单位与个人都使用私有 IP地址,私有IP地址的计算机是不能直接连入因特网的,为了使这些计算机上网,需要利用NAT技术。
5.NAT技术
网络地址转换(NAT)基本原理:内部网络的计算机使用私有IP地址,内部网络的出口路由器设置若干个公有IP地址。从内部网络外出的IP数据报经过路由器时,路由器把私有IP地址转换为公有IP地址,再转发出去;进入内部网络的IP数据报经过路由器时,路由器则把公有IP地址转换为私有IP地址。
若干台计算机上网时都转换为同一个公有IP地址,同时要分配不同的源端口号,替换原来的源端口号,以区分这些计算机,这种NAT实际上都是指NAPT,网络地址端口转换。数据进出内部网络时不仅要转换IP地址,还要转换端口号,这种NAT叫做动态NAT转换,因为NAT转换表是动态添加的,内部网某计算机的数据首次外出时,路由器自动为它分配公有IP地址与端口号。但是这样外部计算机无法首先访问内部网络计算机,这时候就需要静态NAT转换,由管理员手工在NAT转换表中添加数据。
6、IPv6
由于现有的IP地址即将耗尽,于是研究人员开始设计新的IP协议以替代IPv4,这就是IPv6,IPv6仍然是数据报交换方式的、无连接的、尽力而为的、不保证可靠传输的协议,但是对IPv4做了重大改进:
(1)更长的IP地址,使用长度128位的IP地址;
(2)简介灵活的首部,路由器处理速度更快;
(3)更好的安全性,但不可以路由器分片,去除了差错检测,因为传输质量提高,且在数据链路层和运输层进行差错检测,在网络层进行差错检测显得多余;
(4)支持资源预留,更好支持多媒体数据传输。
IPv6数据报格式:
7、从IPv4向IPv6过度
IPv6不可能立刻替代IPv4,因此在相当一段时间内IPv4和IPv6会共存在一个环境中。要提供平稳的转换过程,使得对现有的使用者影响最小,就需要有良好的转换机制。这个议题是IETF ngtrans工作小组的主要目标,有许多转换机制被提出,部分已被用于6Bone上。IETF推荐了双协议栈、隧道技术等转换机制:
(1)IPv6/IPv4双协议栈技术
双栈机制就是使IPv6网络节点具有一个IPv4栈和一个IPv6栈,同时支持IPv4和IPv6协议。IPv6和IPv4是功能相近的网络层协议,两者都应用于相同的物理平台,并承载相同的传输层协议TCP或UDP,如果一台主机同时支持IPv6和IPv4协议,那么该主机就可以和仅支持IPv4或IPv6协议的主机通信。
(2)隧道技术
隧道机制就是必要时将IPv6数据包作为数据封装在IPv4数据包里,使IPv6数据包能在已有的IPv4基础设施(主要是指IPv4路由器)上传输的机制。但是,隧道技术不能实现IPv4主机和IPv6主机之间的通信。