前言
网络层是OSI参考模型中的第三层,同时也是TCP/IP模型的第二层。它介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。主要内容有:虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法、X.25协议、综合业务数据网(ISDN)、异步传输模式(ATM)及网际互连原理与实现。
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。
网络层提供的两种服务:
1、 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,以及每一个分组独立交付的策略。
2、 网络层不提供服务质量的承诺。
网际协议IP是TCP/IP体系中两个最主要的协议之一,同时IP协议也是最重要的互联网标准协议之一。
与IP协议配套使用的还有三个协议:
(1)地址解析协议 ARP( address resolution protocol )
(2)网际控制报文协议 ICMP( internet control message protocol )
(3)网际组管理协议 IGMP( internet group management protocol )
网际协议IP及其配套协议:
如上图所示,ARP在靠近网络接口层的位置,因为IP经常使用ARP协议,而ICMP和IGMP经常使用IP协议,故放在靠近运输层的地方。
虚拟互联网络
从一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以有一下四种不同的中间设备:
(1)物理层使用的中间设备,集线器 repeater
(2)数据链路层使用的中间设备,网桥,bridge
(3)网络层使用的中间设备,路由器,router
(4)在网络层以上使用的中间设备,网关,gateway。用网关连接两个不兼容的系统需要在高层进行协议的转换。
在这里需要提一下关于数据传输过程中的冲突检测问题。
CSMA/CD:是一种争用型的介质访问控制协议,主要应用于现场总线Ethernet中。工作原理是: 发送数据前 先侦听信道是否空闲 ,若空闲,则立即发送数据。若信道忙碌,则等待一段时间至信道中的信息传输结束后再发送数据;若在上一段信息发送结束后,同时有两个或两个以上的节点都提出发送请求,则判定为冲突。若侦听到冲突,则立即停止发送数据,等待一段随机时间,再重新尝试。
CSMA/CA:
1、 若站点最初有数据要发送(而不是发送不成功再进行重传),且检测到信道空闲,在等待时间DIFS后,就发送整个数据帧。
2、 否则(检测到信道忙),站点就要等检测到信道空闲并经过时间DIFS后,执行CSMA/CA协议的退避算法,启动退避计时器。在退避计时器减少到零之前,一旦检测到信道忙,就冻结退避计时器。一旦信道空闲,退避计时器就进行倒计时。
3、 当退避计时器时间减少到零时(这时信道只可能是空闲的),站点就发送整个的帧并等待确认。
4、 发送站若收到确认,就知道已发送的帧被目的站正确收到了。这时如果要发送第二帧,就要从上面的步骤(2)开始,执行CSMA/CA协议的退避算法,随机选定一定退避时间。若源站在规定时间内没有收到确认帧ACK(由重传计时器控制这段时间),就必须重传此帧(再次使用CSMA/CA协议争用接入信道),直到收到确认为止,或者经过若干次的重传失败后放弃发送。
CSMA/CD原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发
CSMA/CA原理简单总结为:冲突停发,随机重发,发时不听
比较:CSMA/CD控制方式的优点是:原理比较简单,技术上易实现,网络中各工作站处于平等地位,不需集中控制,不提供优先级控制。但在网络负载增大时,发送时间增长,发送效率急剧下降。主要用于总线型以太网。
CSMA/CA带有冲突避免的载波监听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。CSMA/CD主要用于无线局域网802.11a/b/g/n。
1.分类的IP地址
IP地址是Internet地址的一种表示形式
IP地址由网络号与主机号两部分组成,网络号标识一个逻辑网络,主机号标识网络中一台主机。
IP地址 ::={<网络号>,<主机号>}
“ ::= ”表示 “ 定义为 ”,从IP地址结构来看,IP地址不仅指明一台主机,而且还指明了主机所连接到的网络。
IPv4地址是一种分层的地址结构,IP地址都是32位二进制,为了提高可读性,通常把IP地址的每8位插入一个空格,但是机器中没有空格,所以就用等效的十进制数字表示,在这些数字之间加上“.”,即点分十进制法。
IPv4地址按照网络号和主机号的长度被分为五大类。A、B、C类用于为Internet(单播地址)中的设备接口分配地址,以及其他特殊情况下使用。类由地址中的头几位来定义:
0为A类,10为B类,110为C类,1110为D类,1111为E类。D类地址供组播使用,E类地址保留。分类如下图所示:
由此可得出按此分类方式得到的IPv4地址空间划分:
A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。
B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模规模的网络,每个网络所能容纳的计算机数为6万多台。
C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。
2.IP地址的一些特点
IP 地址是一种分等级的地址结构。IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间和路由查找时间。
IP 地址是标志一个主机(或路由器)和一条网络链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多接口主机(multihomed host)。由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
注:用转发器或网桥(交换机)连接起来的若干个局域网,虽然在物理上是多个网络,但在逻辑上仍为一个网络,因此这些局域网都具有同样的网络号 net-id。所有分配到网络号net-id的网络,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
除了上面三种类型的IP地址外,还有几种特殊类型的IP地址,TCP/IP协议规定,凡IP地址中的第一个字节以“lll0”开始的地址都叫多点广播地址。因此:
任何第一个字节大于223小于240的IP地址是多点广播地址
IP地址中的每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;
IP地址中凡是以“llll0”的地址都留着将来作为特殊用途使用;IP地址中不能以十进制“127”作为开头,27.1.1.1用于回路测试,同时网络ID的第一个6位组也不能全置为“0”,全“0”表示本地网络。
3.IP地址与硬件地址
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层次使用的地址,是一种逻辑地址。
在发送数据时,数据从高层到低层,然后才到通信链路上传输。IP数据报交给数据链路层后就被封装成MAC帧了。MAC帧在传输时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。
4.地址解析协议ARP
在实际应用中,经常会遇到这样的问题:网络层使用的是IP地址,但在实际网络的链路上传输数据帧时,还是需要知道该网络的硬件地址。即已知某机器的IP地址,需要找到相应的硬件地址。要解决这个问题,需要使用ARP协议。
ARP协议解决问题的方式是在,每一台主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表动态更新。
当主机A向本局域网上的主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址,若有,则检索出对应的硬件地址,并把这个硬件地址写入MAC帧,然后将MAC帧发出。
ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间,凡超过生存时间的项目就从高速缓存中删除。
5.IP数据报的格式
IP数据报由首部和数据部分组成,首部的前一部分是固定长度20字节,是所有IP数据报必须具有的。固定部分后面的是可选字段,其长度可变。
IP 数据报首部各字段的意义:
(1)版本( version ),4 位,IP 协议的版本。0100 V4版本,0110 V6版本。
(2)首部长度( header length ),4 位,含固定部分和可变部分首部长度。
(3)区分服务( differentiated services field ),8 位,优先级和 ToS
(4)总长度( total length ),16 位,首部和数据之和的长度,单位字节。
(5)标识( identification ),16 位,确保拥有相同标识字段值的分片能够重新组装成为原来的数据报。
(6)标志 ( flag ),3 位,目前只有后两位有实际意义。最低位为 MF=1,即表示后面还有分片,MF=0,即表示这是最后一个分片。中间的一位为 DF,意为不能分片。只当 DF=0 时才可允许分片。
(7)片偏移( falgment offset ),13 位,较长的分组在分片后,某片在原分组中的相对位置。
(8)生存时间( TTL,Time to live ),8 位,数据报在因特网中至多可经过几个路由器,最大跳数255。TTL=1 表示该数据报只能在本局域网内传输。
(9)协议( Protocol ),8 位,表示数据报所携带的数据是使用何种协议,以便上交给上层谁来负责处理。如 TCP UDP OSPF IPv6 EGP IGP IGMP ICMP ESP 等。
(10)首部检验和( header checksum ),16 位,只检验数据报的首部,不包括数据部分。
(11)源地址( source ip address ),32 位。
(12)目的地址( destination ip address ),32 位。
(13)可变部分,1 个字节到 40 个字节不等。包含可选字段和填充字段。极少用。
6.IP层转发分组的流程
路由表:主要包含以下两个信息:(目的网络地址,下一跳地址)
注意:
(1)IP 数据报最终一定可以找到目的主机所在的目的网络上的路由器。
(2)只有到达最后一个路由器时,才试图向目的主机进行直接交付。
路由器在接收到一个待转发的数据报,从路由表得出下一跳路由器的 IP 地址后,不是把这个 IP 地址填入 IP 数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的 IP 地址转换成硬件地址(使用 ARP ),并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
1.子网划分
子网划分的若干个好处:
①减少网络流量
②提高网络性能
③简化管理
④可以更为灵活的形成大覆盖范围的网络
当我们对一个网络进行子网划分时,基本上就是将它分成小的网络。比如,当一组IP地址指定给一个公司时,公司可能将该网络“分割成”小的网络,每个部门一个。这样,技术部门和管理部门都可以有属于它们的小网络。通过划分子网,我们可以按照我们的需要将网络分割成小网络。这样也有助于降低流量和隐藏网络的复杂性。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。将子网掩码和IP地址按位进行逻辑“与”运算,得到IP地址的网络地址,剩下的部分就是主机地址,从而区分出任意IP地址中的网络地址和主机地址。
例:已知子网192.168.15.19/28,求属于该子网的主机范围
思路:首先,还是先将IP地址转换为二进制:11000000.10101000.00001111.00010011
,然后写出他的子网掩码(网络位为1,主机位为0):
11111111.11111111.11111111.11110000
然后将两组数据进行按位与操作(相同为1,不同为0),得:
11000000.10101000.00001111.00010000,转换为十进制即为192.168.15.16。
主机位为32-28=4位,故总主机数为2^4=16,可分配主机数为16-2=14。
可分配主机范围即192.168.15.17-172.168.15.30
总主机范围为192.168.15.16-172.168.15.31
PS:当主机数均为0时为该网段的单播地址,主机数全为1时为该网段的广播地址。故主机数全为0或1时不能作为可分配的主机地址(掐头去尾),故减2。
2.子网掩码
子网掩码(subnet mask)又称“网络掩码”、“地址掩码”,它是一种用来指明一个IP地址的哪些位标识的是主机所在的网络地址与主机地址的位掩码。子网掩码和IP地址的表示方法是相同的,在IPv4中是点分十进制四组表示法或表示为一个八位十六进制数。子网掩码的好处是不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND)即得出网络地址来。
3.无类别域间路由选择CIDR
划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在1992年互联网仍然面临着三个必须尽早解决的问题:
B类地址已经分配了近一半,很快将分配完毕
互联网主干网的路由表中的项目数急剧增长
整个IPv4的地址空间最终将耗尽。2011年IANA宣布IPv4全部分配完毕。
IETF很快就研究出无类别域间路由选择CIDR(classless inter-domain routing)。
CIDR最主要的特点有两个:
1.CIDR 消除了传统的ABC类地址和划分子网的概念。
2.CIDR把网络前缀都相同的连续的IP地址组成一个CIDR地址块。只需要知道CIDR地址块的任何一个地址,就可以知道这个地址块的起始地址和地址块中的地址数。
4.最长前缀匹配原则
因为路由表中的每个表项都指定了一个网络,所以一个目的地址可能与多个表项匹配。
最明确的一个表项,即子网掩码最长的一个,就叫做最长前缀匹配。
之所以这样称呼它,是因为这个表项也是路由表中,与目的地址的高位匹配得最多的表项。
为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文封装在IP数据报中的数据部分。
几种常见的ICMP报文类型:
常用发ICMP询问报文有两种:
回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
时间戳请求和回答:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表1990年1月1日期到当前时刻一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。
END
至此,网络层的绝大部分内容均已讲解。至于路由协议的相关内容,之后会以实验的形式重点介绍。存在的不足欢迎大家留言指正。
最近注册了公众号,打算把计算机网络和计算机基础的知识从头整理一遍分享给大家。公众号刚刚起步,内容正在加紧赶制,相信不久文章存量会相当可观。文末是公众号的二维码,欢迎各位看官关注