2.1 虚拟互联网络
2.2 分类的ip地址
2.2.1 ip地址及其表示方法
2.2.2 ip地址与硬件地址
2.3 地址解析协议ARP
2.4 IP数据报的格式
2.4.1 IP数据报首部的固定部分中的字段
2.4.2 IP数据报首部的可变部分
2.5 IP层转发分组的流程
3 网际控制报文协议 ICMP
ICMP报文的种类
4.1 自治系统AS
4.2 内部网关协议RIP
RIP协议的三个要点
4.3 内部网关协议OSPF
具体步骤
4.3 外部网关协议BCG
网际组管理协议IGMP
多播路由选择协议
虚拟专用网VPN
网络地址转换协议NAT
本章重要内容:
(1)虚拟互联网络的概念
(2) ip地址与物理地址的关系
(3)传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR
(4)路由选择协议的工作原理
1 网络层提供的服务
网络层:负责在不同网络之间传输数据包,不管顺序也不负责丢失重传
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
2 IP协议
ip协议是TCP/IP协议体系中两个最主要的协议之一
与ip协议配套的还有三个协议:
地址解析协议ARP网际控制报文协议ICMP网际组管理协议IGMP
2.1 虚拟互联网络
设备:
物理层使用的中间设备叫做 转发器数据链路层使用的中间设备叫做 网桥或桥接器网络层使用的中间设备叫做 路由器在网络层以上使用的中间设备叫做 网关
。用网关兼容两个不兼容的系统需要在高层进行协议的转换
当中间设备使转发器或者网桥时,这仅仅是把一个网络扩大了,而从网络层的角度看,这仍然是一个网络。网关由于比较复杂,目前使用较少,因此现在讨论网络互连时,都是指用路由器进行网络互连和路由选择。路由器其实就是一台专用计算机。
由于参加互连的网络都是使用网际协议IP,因此可以把互连以后的计算机网络可以看成一个虚拟互连网络。
也是基于上面的原因,互联网可以由多种异构网络互连组成
2.2 分类的ip地址
2.2.1 ip地址及其表示方法
整个互联网就是一个单一的、抽象的网络。IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。IP地址现在由互联网名字和数字分配机构ICANN进行分配。
IP地址的编址方式共经过三个历史阶段:
1)分类的IP地址
所谓“分类的IP地址”就是将IP地址划分位若干个固定类,每一类地址都由两个固定长度的地段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络,一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号(host-id),他标志的是该主机。
这种两级的ip地址可以记为:IP地址 ::= {<网络号>,<主机号>}

现在广泛使用无分类IP地址进行路由选择,A,B,C类地址的区分已成为历史
因为IP地址都是32位的二进制代码,IP地址一般采用点分十进制记法,如下图所示

IP地址的指派范围:

IP地址的重要特点
(1)每一个IP地址都由网络号和主机号两部分组成,从这个意义上说,IP地址是一种分等级的地址结构。分等级的好处是:第一,IP地址管理机构在分配IP地址时,只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配,方便了IP地址的管理;第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由器中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间。
(2)实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时。该主机就必须同时具有两个相应的ip地址,其网络号必须是不同的。这种主机称为多归属主机。
(3)按照互联网的观点,一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网具有同样的网络号
(4)在IP地址中,所有分配到网络号的网络都是平等的。
2)子网的划分
早期的ip地址设计确实不够合理:
ip地址空间的利用率有时很低;
每一个A类地址网络可连接的主机数超过1000万,而每一个B类地址网络可连接数也超过6万。有些公司考虑今后的发展不愿意申请C类地址,造成IP地址的浪费。导致IP地址空间的资源过早的被用完
给每一个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏。
每一个路由器都应当能够从路由表查出应怎么样到达其他网络的下一跳路由器。网络数越多,路由表的项目数越多。这样就增加了路由器的成本,使路由器和整个互联网的性能都下降了
两级IP地址不够灵活
有时情况紧急,一个单位需要在新的地点马上开通一个新的网络。但是在申请到一个新的IP地址之前,新增加的网络是不可能连接到互联网上工作的。我们希望有一种方法,使一个单位能随时灵活的增加本单位的网络
为解决上诉问题,从1985年起在IP地址中有增加了一个子网号字段,使二级IP地址便成为三级IP地址。
划分子网的基本思路如下:
一个拥有许多物理网络的单位,可将所属物理网络划分为若干个子网。这个单位对外仍然表现为一个网络
划分子网的方法是从网络的主机号接用若干位作为子网号,主机号就相应减少了同样的位数。于是两级IP地址在本单位内部就变成了三级IP地址:
IP地址 ::= {<网络号>,<子网号>,<主机号>}
凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。此路由器在收到IP数据报后,在按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。
子网掩码
从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网的划分。因此,出现了子网掩码 ,如下图:

使用子网的好处就是不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位相与运算,就可以得出对应的网络地址。在网络外和网络内部看到的子网掩码是不同的,进入网络内部的路由器时可以看到对应的三级IP地址的子网掩码,但是网络外部只能看到二级IP地址的子网掩码
互联网要求所有网络都必须有子网掩码,如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码

子网掩码使一个网络或一个子网的重要属性,在RFC 950成为互联网的正式标准后,路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
全0或者全1的子网号由于CIRD的广泛使用,而被允许使用,但是一定要谨慎使用。
划分子网增加了灵活性,但减少了能够连接在网络上的主机总数。
使用子网时的分组转发
使用子网划分后,路由表必须包含以下三项内容:目的网络地址,子网掩码,下一跳地址
在划分子网的情况下,路由表转发分组的算法如下:
从收到的数据报的首部提取目的IP地址D 先判断是否为直接交付。对路由表直接相连的网络逐个进行检查:用个网络的子网掩码和D逐位相“与”运算,看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(把D转换成物理地址,把数据报封装成帧发送出去)
3) 无类别域间路由:CIDR
就算是三级IP也是不够用的,人们引入了变长子网掩码VLSM
进一步提高IP地址资源的利用率。在VLSM的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择CIDR
CIDR最主要的特点
CIDR消除了传统的A,B,C类地址以及划分子网的概念,因此可以有效地分配IPv4地地址空间。 CIDR使用各种长度地网络前缀来代替分类地址中地网络号和子网号 IP地址从三级编址(使用子网掩码)又回到了二级编址
无分类地两级编址地记法是:IP地址 ::= {<网络前缀>, <主机号>}
CIDR还使用斜线记法
,又称CIDR记法,即在IP地址前面加上一个斜线,然后写上网络前缀所占地位数。
4)构成超网
前缀长度不超过23位地CIDR地址块都包含了多个C类地址。这些C类地址合起来就构成了超网。
最长匹配长度
使用CIDR时,路由表中地每个项目由网络前缀
和下一跳地址组成
。在查找路由表时可能会得到不止一个匹配结果。这时应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配
。
网络前缀越长,其地址块就越小,因而路由就越具体。
2.2.2 ip地址与硬件地址
从层次上看,物理地址时数据链路层和物理层使用的地址,而ip地址是网络层和以上各层使用的地址,是一种逻辑地址

IP地址与硬件地址的区别
在IP层抽象的互联网只能看到IP数据报,他的源地址和目的地址不变 虽然IP数据报首部有源IP地址,但路由器只根据目的IP地址的网络号进行路由选择 在局域网的链路层,只能看见MAC帧,IP数据报被封装在MAC帧中。MAC帧在不同网络上转送时,其首部中的源地址和目的地址都要变化 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。只要能在网络层讨论问题,就能够使用统一抽象的IP地址研究主机和主机或路由器之间的通信。
2.3 地址解析协议ARP
ARP协议的任务是通过机器的IP地址,寻找到对应的硬件地址
每一台主机都有ARP高速缓存
2.4 IP数据报的格式

2.4.1 IP数据报首部的固定部分中的字段
版本 占4位,指IP协议的版本。通信双方的IP协议的版本必须一致。
首部长度 占4位,可表示的最大十进制数值是15。首部长度的单位是32位字(1个32位字节长是4字节)。因为IP首部的固定长度是20位字节,因此首部长度字段的最小值是5.
区分服务 占8位,用来获得更好的服务,一般情况下不适用这个字段。
总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,数据报最大长度是2^16-1=65535字节。然而实际上传送这样场的数据报在现实中极少遇到。因为在数据链路层协议规定了一个数据帧的数据字段的最大长度,这称为最大传送单元MTU。每一个IP数据报越短,路由器转发的速度就越快。为此,IP协议规定,在互联网中所有的主机和路由器,必须能够接受长度不超过576字节的数据报 。
数据报=512数据长度+最长60字节首部+4字节富余量
在进行分片时,数据报首部中的“总长度”字段是指分片后的每一个分片的首部长度与该分片的数据长度的总和。在路由器转发超过576字节的数据报的时候,必须先了解一下目的主机能否接受所要发送数据报长度。
标识 占16位。IP软件在存储器中维持一个计数器,没产生一个数据报,计数器就加1,并将此值赋给标识字段。“标识”并不是序号,因为IP是无连接服务,不存在按序接收的问题。当数据报分片时,这个标识字段的值就被复制到所有数据报片的标识字段中。最后相同标识字段的值重装成原来的数据报
标志 占3位,目前只有两位有意义
标志字段中的最低位记为MF。MF=1即标识后面“还有分片”的数据报。MF=0表示这是最后一个数据报片 标志字段中间一位记为DF,意思是“不能分片”。只有当DF=0时才允许分片
片偏移 占13位。较长的分组在分片后,某片在原分组中的相对位置。表示相对于用户数据字段的起点,该片从何处开始。每个分片的长度一定是8字节的整数倍
生存时间 占8位,即TTL。表明数据报在网络中的寿命。防止数据报在网络中传播进入死循环。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL减为0时丢弃数据报。
协议 指出此数据报携带的数据使用何种协议,以便目的主机的ip层知道应将数据部分上交给哪个协议进行处理

首部校验和 占16位。这个字段只检验数据报的首部,不包括数据部分。数据报每经过一个路由器,路由器都要重新计算一下首部校验和。
源地址 占32位
目的地址 占32位
2.4.2 IP数据报首部的可变部分
IP数据报首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度是可变,从1字节到40字节不等,取决于所选择的项目。有一些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补全成为4字节的整数倍。
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用,新的IPv6就把IP数据报的首部长度做成固定的。
2.5 IP层转发分组的流程
路由器的路由表只记录每一条路由的信息:(目的网络地址,下一跳地址),强调在互联网转发分组时,是从一个路由转发到下一个路由器

我们有以下结论:
IP数据报一定可以找到目的主机所在网络上的路由器(可能要通过多次的间接交付) 只有到达最后一个路由器时,才向目的主机进行直接交付
虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许对特定的目的主机指明一个路由。这种路由叫做特定主机路由,使网络管理人员更方便的控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。在对网络的连接或路由表进行排错时,指明某一台主机的特殊路由就十分有用。路由器还可采用默认路由以减小路由表所占用的空间和搜索路由表所用的时间。这种转发方式在一个网络只有很少的对外连接时是很有用的。实际上,默认路由在主机发送IP数据报时往往更能显示出它的好处。

3 网际控制报文协议 ICMP
为了提高IP数据报交付成功的机会,在网际层使用了网际控制报文协议ICMP
。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP不是高层协议,而是ip层的协议。ICMP保温作为IP层数据报,加上数据报的首部,组成IP数据报发送出去。
ICMP报文的种类
ICMP的报文有两种:ICMP差错报告报文
和ICMP询问报文
。
ICMP差错报告报文
终点不可达。 源点抑制。 时间超过 参数问题 改变路由(重定向)
ICMP询问报文
回送请求报文和回答报文 时间戳请求和回答报文
4 因特网的路由选择协议
路由选择是个非常复杂的问题。它是网络中所有结点共同协调工作的结果。路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。
4.1 自治系统AS
定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由
尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
因特网的两大类路由选择协议:内部网关协议IGP
(如RIP、OSPF)和外部网关协议EGP
(如BGP)
4.2 内部网关协议RIP
RIP是一种分布式的基于距离向量的路由选择协议。它要求网络中的每一个路由器都要维护它自己到其他每一个目的网络的距离记录。
距离的定义:从一路由器到直接连接的网络的距离定义为1,RIP中的距离也称为跳数。
RIP允许一条路径最多只能包含15个路由器,当距离的最大值为16时即相当于不可达。RIP只选择一个具有最少路由器的路由,哪怕还存在另一条高速(低延迟)但路由器多的路由。
RIP协议的三个要点
仅和相邻路由器交换信息 交换的信息是当前本路由器所知道的全部信息,即自己的路由表 按固定的时间间隔交换路由信息,例如每隔30秒
在路由表刚刚开始工作时,它的路由表是空的,然后路由器就得出到直接相连的几个网络的距离,接着再一步步更新
RIP存在的一个问题是当网络出现故障的时候,要经过比较长的时间才能将此信息传送到所有的路由器。即坏消息传播的慢。
4.3 内部网关协议OSPF
OSPF(开放最短路径优先OSPF
)是分布式的链路状态协议,是为了克服RIP协议的缺点开发出来的。
具体步骤
向本自治系统中所有路由器使用
洪泛法
发送消息,获得消息的路由器又再将此信息发往其所有的相邻路由器。直到整个区域的路由器都得到这个消息的副本发送的信息就是与本路由器相邻的所有路由器的链路状态,但只有一部分。链路状态就是说明本路由器都和哪些路由器相邻,以及该链路的
度量
(费用、距离、时延、带宽等)只有当链路状态发生变化的时候,路由器才向所有路由器用洪泛法发送此信息。

OSPF区域
OSPF使用层次结构的区域划分,在上层的区域叫做主干区域,主干区域的作用是用来连通其他在下层的区域。从其他区域来的信息都有区域边界路由器
进行概括。R3,R7,R4就是区域边界路由器。OSPF与RIP不同,它不使用UDP协议,而是IP数据报直接传送,OSPF构成的数据报非常短。
为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间就刷新一次数据库中的链路状态。
4.3 外部网关协议BCG
内部网关协议主要是设法使数据报在一个AS中尽可能有效地从源站传送到目的站。在一个AS内部也不需要考虑其他方面的策略。但BCG不同,主要有下面两个原因:
互联网的规模太大,使得自治系统AS之间路由选择非常困难。如果使用链路状态协议,每一个路由器必须维护一个非常大的链路状态数据库。对主干网用Dijkstra算法效率也非常低 自治系统AS之间的路由选择必须考虑有关策略。由于相互连接的网络的性能相差很大,根据最短距离找出来的路径可能并不合适。
基于上面两个问题,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由。BGP采用路径向量路由选择协议
。
每个自治系统的管理员至少选择一个路由器作为该自治系统的BGP发言人。一个BGP发言人要与其他AS的BGP发言人交换路由信息,就要先建立TCP连接。然后交换路由信息,如加入了一条路由等等。
当BGP发言人互相交换了网络可达性信息的时候,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由

5 IP多播
网际组管理协议IGMP
为了使路由器知道多播组成员的信息,需要使用网际组管理协议IGMP
。IGMP协议使让连接在本地局域网上的多播路由器知道本局域网上是否有主机(上的某个进程)参加或退出了某个多播组。

从概念上将,IGMP的工作可分为两个阶段:
当某台主机加入多播组的时候,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为改组的成员,本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上的其他多播路由器 组成员关系是动态的,本地多播路由器周期性地探询本地局域网上的主机,以便直到这些主机是否还继续是组的成员。
多播路由选择协议
多播路由选择协议还未标准化。
多播路由选择实际上就是找出以源主机为根节点的多播转发树。在多播转发树上,每一个多播路由器向树的叶节点方向转发受到的多播数据报。
在已有的多种多播路由器选择协议中,采用了以下3种方法:
洪泛与剪除(适合小的多播组)
隧道技术(适用于地理上很分散的情况)。就是对多播数据报进行封装,再加上普通数据报首部,使之成为向单一目的站发送的单播数据报,称为隧道。

基于核心的发现技术。每一个多播组指定一个核心路由器,给出它的IP单播地址。核心路由器创建出多播组的转发树。
其他的一些常用协议
虚拟专用网VPN
日常翻墙的时候容易了解到,实际上VPN就是通过本网络与其他网络共享一个全球ip,通过虚拟机专用网VPN完成本网络访问访问不到的东西。例如YouTube使用日本电信的一个全球ip可以轻松访问。我们可以使用VPN将本网络的数据报发送给全球ip的路由器即可。实际上还是通过公用的互联网。
专用网设计初衷实际上是为了那些没有需要访问互联网,但是需要和本网络中的其他主机通信。用以节省宝贵的全球ip
网络地址转换协议NAT
如果专用网内部的一些主机本来已经分配本地IP地址,又想和互联网上的主机通信,就需要通过网络地址转换协议NAT。
需要在专用网连接到互联网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球IP地址。这样本地地址可以转换成全球IP地址。
当NAT路由器具有n个全球ip地址时,专用网内最多可以同时有n台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用NAT路由器有限数量的全球IP地址。
现在NAT用上了端口,因此可以一个NAT路由器上的全球IP地址可以同时和多个拥有本地地址的主机进行通信。




