一、网络层
1、基本概念
(1)网络层是一个承上启下的层,上面是传输层、应用层,下面是数据链路层、物理层。
(2)网络层的主要作用是实现终端节点之间的通信,这种端点之间的通信业称为点对点通信(end to end)。
(3) 网络层把实际上异构的网络通过IP协议变成一个统一的逻辑网络。
简单来讲网络层的作用就是在复杂的网络环境中为两个要进行通信的主机确定合适的数据报传输路径。
2、网络层的主要协议类型
网络层中成熟的协议主要有两种类型:
(1)IP协议—网际协议
网际协议IP是用来是互联起来的许多计算机网络之间能够进行通信的,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。
(2)ICMP协议—网际控制报文协议
它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
二、IP协议
1、基本概念
IP 是构建整个 TCP/IP 协议族的基础,IP协议提供不可靠的、无连接的数据传输服务。
(1)所谓不可靠是指:
IP具有使数据成功传输到目的主机的能力,但不保证数据一定能够成功传输到目的主机。当传输过程中出错时,IP协议有一个简单的错误处理:就是丢弃该报文,并通知ICMP给信源发送出错信息。
(2)无连接是指:
IP 提供的是一种尽力而为的、不可靠的无连接服务。它接收来自其上层的分组,将它们封装在一个 IP 分组中,根据路由为分组选择正确的硬件接口,从这个接口将分组发送出去。一旦将分组发送出去了,IP 就不再关心这个分组了。和所有无连接协议一样,它将分组发送出去之后就不再记得这个分组了。
所有的关于可靠性的传输都有网络层的上层协议TCP协议来保证。
2、网络互联示意图
这些主机之间通过路由器互联起来,实现源主机到目标主机之间的数据传输服务。
这里主要涉及几个概念:
主机:主机配有IP地址,是不进行路由控制的设备
路由器:路由器是网络层使用的中间设备,既配有IP地址,又能进行路由控制
节点:把路由器和主机统称为节点
直接交付:假设源主机H1要把一个IP数据报发送给目的主机H2,那么主机H1会先查看自己的路由表,看目的主机是否就在本网络上,如果是,则数据报传输就不需要经过任何路由器而是直接交付就能完成任务。
间接交付:理解了直接交付的基本应用条件,那么当源主机与目的主机不在一个网络上时,就需要把IP数据报发送给某个路由器R1,R1在查看了自己的路由表之后,就知道应该把数据报发送给某个路由器R2进行间接交付,就这样一直转发下去,直到某个路由器知道自己是与H2连接在同一个网络上,就直接交付给H2。
3、IP协议报头格式
各个字段说明:
字段 | 说明 |
---|---|
4位版本号 | 指定IP协议的版本, 对于IPv4来说, 就是4 |
4位首部长度 | IP头部的⻓长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表⽰示最 ⼤大的数字是15, 因此IP头部最⼤大⻓长度是60字节 |
8位服务类型(Type Of Service) | 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为 0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一 个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要 |
16位总长度(total length) | IP数据报整体占多少个字节 |
16位标识(id) | 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的. |
3位标志字段 | 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第⼆二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表⽰示”更多分片”, 如果分片了的话, 最后一个分片置为1, 其他是0. 类似于一个结束标记. |
13位分片偏移(framegament offset) | 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后一个报文之 外, 其他报文的长度必须是8的整数倍(否则报文就不连续了). |
8位生存时间(Time To Live, TTL) | 数据报到达目的地的最大报文跳数一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环 |
8位协议 | 表⽰示上层协议的类型 |
16位头部校验和 | 使用CRC进行校验, 来鉴别头部是否损坏 |
32位源地址和32位目标地址 | 表⽰示发送端和接收端. |
选项 | 不定长度字段 |
4、IP地址及其表示方法
IP地址就是给互联网上每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位标识符。
(1)IP地址的定义
IP地址由两部分组成:网络号和主机号
网络号:表示相互连接的两个网段具有不同的标识
主机号:同一网段内,主机具有相同的网络号,但是必须有不同的主机标识号
一般地,主机号标识为1的表示的是路由器接口
子网:子网其实就是把相同的网络号的主机放在一起,如果子网中新增加一台主机,那么该主机的网络号与该子网保持一致,但主机号不能与子网中任何一台主机相同。
(2)IP地址分类
IP地址主要被分为五类:
从上图可以看出:
(1)A、B、C类IP地址的网络号字段分别为1个、2个、3个字节长,主机号字段分别为3个、2个、1个字节长,而网络号前面有1—3位类别位,分别是0、10、110。
(2)从IP地址的结构来看,IP地址不仅仅指明一台主机,而且还指明了该主机所连接到的网络。
(3)各类IP地址的指派范围:
类别 | 可表示范围 | 最大可指派网络数 |
---|---|---|
A类 | 0.0.0.0到127.255.255.255 | 126(2^7-2) |
B类 | 128.0.0.0到191.255.255.255 | 1683(2^14-1) |
C类 | 192.0.0.0到223.255.255.255 | 2097151(2^21-1) |
D类 | 224.0.0.0到239.255.255.255 | |
E类 | 240.0.0.0到247.255.255.255 |
(3)IP地址具有的特点
(1)IP地址是一种分等级的地址结构
(2)实际上IP地址标志一台主机(或路由器)和一条链路的接口。
(3)按照互联网的观点,一个网络是指相同的网络号主机的集合,因此,用转发器(物理层的中间设备)或网桥(位于链路层)连接起来的若干局域网仍为一个网络。具有不同网络号的主机必须经过路由器连接。
(4)在IP地址中,所有分配到网络号的网络都是平等的。
三、子网划分
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址;
1、为什么划分子网
早期的IP地址设计确实不够合理:
(1)IP地址的空间利用率有时很低。
例如, 申请了⼀个B类地址, 理论上一个⼦网内能允许6万5千多个主机, A类地址的⼦网内的主机数 更多.,然而实际网络架设中, 不会存在一个⼦网内有这么多的情况.,因此大量的IP地址都被浪费掉了.
(2)给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
(3)两级地址不够灵活
2、子网划分的基本思路
(1)一个拥有许多物理网络的单位可以将所属的物理网络划分成若干子网
(2)划分子网的方法是从网络的主机号中借用若干位作为子网号,当然主机号也就少了相应的位数
(3)凡事从其它网络发送给本单位某台主机的数据报,仍然是根据IP数据报的目的网络号找到连接在本单位上的路由器
3、子网掩码
针对IP地址浪费这种情况提出了新的划分方案,并引入一个额外的⼦网掩码(subnet mask)来区分网络号和主机号。
子网掩码:
(1)⼦网掩码也是一个32位的正整数.,通常用一串 “0” 来结尾;
(2)将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;
(3)⽹络号和主机号的划分与这个IP地址是A类、B类还是C类无关;
A、B、C三类地址默认子网掩码:
一个例子帮助我们理解如何进行子网划分:
子网掩码是一个网络或一个子网的重要属性。路由器在和相邻的路由器交换信息时,必须把自己所在的网络(或子网)的子网掩码告诉相邻路由器。
划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
4、使用子网时的分组转发
使用子网划分后,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址
此时,路由转发分组算法如下:
(1)从收到的数据报的首部取目的IP地址D
先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(还需把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址),用其中的子网掩码和D逐位相“与”(AND),其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6)报告转发分组出错。
四、特殊的IP地址
(1)将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
(2)将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包; 1
(3)27.*的IP地址⽤用于本机环回(loop back)测试,通常是127.0.0.1 特殊的IP地址
五、私有IP地址和公有IP地址
如果⼀一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地 址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址
1、私有IP地址范围
A类私有IP地址:
10.0.0.0~10.255.255.255
B类私有IP地址:
172.16.0.0~172.31.255.255
C类私有IP地址:
192.168.0.0~192.168.255.255
2、公有IP地址范围
A类的公有IP:
1.0.0.0~9.255.255.255
11.0.0.0~126.255.255.255
B类的公有IP:
128.0.0.0~172.15.255.255
172.32.0.0~191.255.255.255
C类的公有IP:
192.0.0.0~192.168.255.255
192.169.0.0~223.255.255.255
六、IP地址数量限制
我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而 TCP/IP协议规定, 每个主机都需要有一个IP地址. 这意味着, ⼀一共只有43亿台主机能接⼊网络么?
实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一 个网卡都需要配置⼀个或多个IP地址.
那么解决方法主要有以下几种:
1、CIDR(无分类域间路由选择)
CIDR编址方法:
CIDR最主要有两个以下特点:
(1)消除传统的A,B,C地址和划分子网的概念,更有效的分配IPv4的地址空间
CIDR使IP地址又回到无分类的两级编码。记法:IP地址::={<<网络前缀>,<<主机号>}。CIDR还使用“斜线记法”即在IP地址后面加上“/”然后写网络前缀所占的位数。
(2)CIDR把网络前缀都相同的连续IP地址组成一个“CIDR地址块”,即强化路由聚合(构成超网)。
地址掩码:是一连串的1和0组成,而1的个数救赎网络前缀长度。在斜线记法中。斜线后面的数字就是地址掩码中1的个数。
构成超网:将网络前缀缩短,网络前缀越短,其地址块所包含的地址数就越多。
CIDR在⼀定程度上缓解了IP地址不够用的问题提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加, 仍然不是很够⽤。
2、动态分配IP地址
为了解决上网的计算机数量大于IP地址这一问题,人们采用了动态分配IP地址这一方法,具体就是,每当有计算机要求上网时,负责分配IP地址的DHCP服务器就给它一个IP地址,当这台计算机一段时间不用这个IP地址后,DHCP服务就收回IP地址,用来分配给其它计算机使用。
3、NAT技术
NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用。
4、IPv6技术
(1)IPv6并不是IPv4的简单升级版,他们两个是互不干扰的两个协议,彼此互不兼容。
(2)IPv6的地址位数由IPv4的32位扩大到128位,使地址空间增大了2^96倍。
但是目前的IPv6还只是草案标准阶段,并未普及。