互联网设计思路:网络层设计得尽可能简单,向其上层只提供简单灵活、无连接的、尽最大努力交付的数据报服务。
在路由器之间传送的信息有以下两大类
可以把网络层抽象成两个层面
不同路由选择协议定义了不同的协同动作方式,路由器依靠许多路由器协同合作,完成路由表的创建。
在软件定义网络SDN结构中,所有的路由器都变得简单了。路由器中的路由选择软件都不存在了,因此路由器之间不再相互交换路由信息。在网络的控制层面有一个在逻辑上集中的远程控制器(在物理上可以由不同地点多个服务器组成)。远程控制器掌握各主机和整个网络的状态,能够为每一个分组计算出最佳的路由,然后再每一个路由器中生成其正确的转发表。
网际协议IP是TCP/IP体系中两个最重要的协议之一。
网际协议IP是用来使互连起来的许多计算机网络能够进行通信的。
与协议IP配到使用的三个协议:
因为用户的需求多种多样,所以没有一种单一的网络能够适应所有用户的需求,因此不能通过使用相同的网络使网络互连简单化。
网络互连需要使用一些中间设备,分为以下四种:
现在我们讨论网络互连时,都是指用路由器进行网络互连和路由选择。
ps:由于历史原因,许多有关TCP/IP的文献曾经把网络层使用的路由器成为网关。
虚拟互连网络即逻辑互连网络,互连起来的各种物理网络的异构性本来是客观存在的,但是利用协议IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。
直接交付:源主机发送的IP数据报不经过任何路由器直接发送给目的主机。
间接交付:源主机发送的IP数据报经过若干个路由器转发给目的主机。
互联网可以有多种异构网络互连组成。
跳:分组在传送图中的每一次转发都称为一“跳(hop,或译跃点)”。
整个互联网就是一个单一的、抽象的网络。
IP地址就是给连接到互联网上的而每一个主机(或路由器)的每一个接口,分配
一个在全世界范围内是唯一的32位的标识符。
IP地址现在由互联网名字和数字分配机构ICANN进行分配。
**点分十进制记法:**为了提高可读性,把32位的IP地址中每隔8位插入一个空格。
32位的IP地址采用两级结构,由两个字段组成。
互联网发展早期使用分类的IP地址。
设网络号长度为n
IP地址类型 | 网络号长度 | 可指派的网络数 | 可指派的主机数 | 其他 |
---|---|---|---|---|
A类 | 8 | 2^7-2 | 2 24 − 2 2^{24}-2 224−2 | 单播地址 |
B类 | 16 | 2 14 2^{14} 214 | 2 16 − 2 2^{16}-2 216−2 | 单播地址 |
C类 | 24 | 2 21 2^{21} 221 | 2 8 − 2 2^8-2 28−2 | 单播地址 |
D类 | - | - | - | 多播地址 |
E类 | - | - | - | 保留地址 |
特殊:
在20世纪90年代,当发现IP地址在不久后将会枯竭时,一种新的无分类编址方法就问世了。
无分类编址方法可以推迟IP地址用尽的日子,但无法解决IP地址枯竭的问题。
全称:无分类域间路由选择CIDR
网络号改称“网络前缀”(简称“前缀”)。
主机号也称“后缀”。
CIDR使用“斜线记法”,或称为CIDR记法:在IP地址后加上斜线“/”,斜线后是网络前缀所占位数。
网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块”。
使用地址掩码从IP地址迅速算出网络地址。
地址掩码有一连串1和接着的一连串0组成,总共32位,1的个数就是前缀的长度。
把二进制的IP地址和地址掩码进行按位与运算,即可得出网络地址。
CIDR地址中三个特殊地址块:
每一个CIDR地址块中的地址数一定是2的整数次幂。除最后几行外CIDR地址块都包含了多个C类地址,因此在文献中优势称CIDR编址为“构造超网”。
IP地址由网络前缀和主机号两部分组成,从这个意义上看,IP地址是一种分等级的地址结构。分级的好处:
注意:
由于地址已固化在网卡上的ROM中,因此常常将MAC地址称为硬件地址或物理地址。
IP地址属于虚拟地址,软件地址或逻辑地址。(IP地址是用软件实现的)
IP地址是网络层以上各层使用的地址,MAC地址是数据链路层使用的地址。
注意:
地址解析协议ARP用于找出IP地址相应的MAC地址。
还有一个旧协议叫做逆地址解析协议RARP,用于找出MAC地址对应的IP地址。
ARP流程如下:
注意:
IP数据报说明协议IP具有什么功能,在协议IP的标准中,描述首部格式的宽度是32位(4字节)。
序号 | 字段名 | 字段长度 | 含义 |
---|---|---|---|
1 | 版本 | 4位 | 协议IP的版本(IPv4或IPv6) |
2 | 首部长度 | 4位 | 表示数值的单位位32位字长,最小取值为5 |
3 | 区分服务 | 8位 | 用来获得更好的服务,实际上没有被使用过 |
4 | 总长度 | 16位 | 首部和数据之和的长度,单位字节 |
5 | 标识 | 16位 | 当数据报过长被分片时,用户标识同一数据报的报片,是的最后能够正确重装为原料的数据报 |
6 | 标志 | 3位 | 第一位记为MF,为1表示“还有分片"。 第二位记为DF,为1表示”不能分片“。 第三位无意义。 |
7 | 片偏移 | 13位 | 较长分组在分片后,某片在原分组中的相对位置。(以8字节位偏移单位)。 |
8 | 生存时间TTL | 8位 | 数据报在网络中的寿命 |
9 | 协议 | 8位 | 指出此数据报携带的数据使用何种协议 |
10 | 首部检验和 | 16位 | 检验数据报首部 |
11 | 源地址 | 32位 | 发送IP数据报的主机的IP |
12 | 目的地址 | 32位 | 接收IP数据报的主机的IP |
注意:
选项字段,用于支持排错、测量以及安全等措施。字段长度可变,从1字节到40字不等。
分组在互联网上传送和转发是基于分组首部中的目的地址的,因此这种转发方式称为基于终点的转发。
分组每到达一个路由器,路由器就会根据分组中的终点得知吓一跳应当到哪一个路由器。
为了压缩转发表大小,加速分组转发,路由器不直接查找目的主机,而是根据IP地址前缀查找目的网络,向目的网络进行转发。
分组首部中没有指明“下一跳的IP地址”。
分组转发流程如下:
查找转发表的过程就是逐行寻找前缀匹配的过程。
为了减少路由器转发表的项目数,会采用地址聚合,把多个地址块聚合我一个地址块(如128.1.25.0/24、128.1.26.0/24、128.1.27.0/24聚合为128.1.24.0/22)。聚合后可能会出现目的地址和转发表中多个项目匹配的现象。
在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长的一个作为匹配的前缀,这个原则被称为最长前缀匹配。
实际转发表有时还可能增加两种特殊的路由
注意:
分组转发算法流程如下
注:假定转发表按照前缀的长短排列,把前缀长的放在前面。
查找每一个路由所需的时间是非常宝贵的,在转发表中必须使用很好的数据结构和先进的快速查找算法。
通常是把CIDR编址的转发表存放在一种层次结构中,然后自上而下地按层次查找。最常用的是二叉线索。
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
ICMP报文装在IP数据报的数据部分中,但它是IP层的协议。
ICMP报文有两种:
ICMP报文前4个字节是统一格式(3个字段):类型、代码、检验和
注意:
不应发送ICMP差错报告报文的情况:
ICMP的应用:
注意:
在2011年2月3日,IANA开始停止向地区互联网注册机构RIR分配IPv4地址,因为IPv4地址已经全部耗尽了。
解决IP地址耗尽的根本措施是采用具有更大地址空间的新版本IP——IPv6。
IPv6仍支持无连接传送。但将协议数据单元PDU称为分组,而不是IPv4的数据报。
IPv6的主要变化:
IPv6数据表分为两大部分:
注意:
IPv6基本首部的各个字段和含义:
序号 | 字段名 | 所占位数 | 含义 |
---|---|---|---|
1 | 版本 | 4位 | 指明协议的版本,IPv6该字段为6 |
2 | 通信量类 | 8位 | 区分数据报的类别和优先级 |
3 | 流标号 | 20位 | 所有属于同一个流的数据报都具有同样的流标号 |
4 | 有效载荷长度 | 16位 | 指明数据报除基本首部意外的字节数,最大值64KB |
5 | 下一个首部 | 8位 | 相当于IPv4的协议字段或可选字段 |
6 | 跳数限制 | 8位 | 防止数据报无限制在网络中存在 |
7 | 源地址 | 128位 | 发送端IP地址 |
8 | 目的地址 | 128位 | 接收端IP地址 |
流:IPv6提出了“流”的概念。所谓“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报,而在这个“流”所经过的路径上的路由器都保证指明的服务质量。
IPv6数据报的目的地址有三种基本类型:
IPv6使用冒号十六进制记法:把每个十六位的值用十六进制表示,各值之间用冒号分隔。
注意:
IPv6常见地址如下
地址类型 | 数量 | 其他 |
---|---|---|
未指明地址 | 1个 | 16字节全为0 |
环回地址 | 1个 | ::1 |
多播地址 | 占地址总数的1/256,前缀CIDR记法为FF00::/8 | |
本地站点单播地址 | 占总数的1/1024 | 用途和IPv6的专用地址一样 |
本地链路单播地址 | 占总数的1/1024 | 在单一链路上使用 |
全球单播地址 | 使用最多 |
因为现在互联网规模太大,所以从IPv4到IPv6过渡只能采用逐步演进的方法。
同时,还必须使新安装的IPv6系统能够向后兼容(能够接收和转发IPv4分组)。
两种向IPv6过渡的策略:
使一部分主机(或路由器)同时装有IPv4和IPv6两种协议栈。
双协议栈主机即能和IPv6的系统通信,又能和IPv4的系统通信。
双协议栈的主机记为IPv6/IPv4,表明同时具有IPv6和IPv4地址。
双协议栈主机采用域名系统DNS查询来决定采用哪一种地址。若DNS返回的是IPv4地址,则主机使用IPv4地址。如果返回的是IPv6地址,则使用IPv6地址。
双协议栈需要付出的代价太大,因为要安装上两套协议。因此在过渡时期,最好采用隧道技术。
在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报,使整个IPv6数据报变成IPv4数据报的数据部分。当IPv4数据报离开IPv4网络中的隧道时,再把数据部分(即原IPv6数据报)交给主机IPv6协议栈。
要使双协议的主机知道IPv4数据报里面封装的数据是一个IPv6数据报,就必须在IPv4首部的协议字段的值设置为41.
IPv6不保证数据报的可靠交付,需要使用ICMP来反馈一些差错信息。新版本称为ICMPv6。
ICMPv6是面向报文的协议,利用报文来报告差错,获取信息,探测邻站或管理多播通信。
ICMPv6报文归类:
路由选择协议规定了互联网中有关的路由器应如何相互交换信息并生成路由表。
从算法能否岁网络通信量或拓扑自适应调整变化,路由算法分为两大类:
互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议。
互联网采用分层次的路由选择协议的原因:
可以把整个互联网划分为许多较小的自治系统AS。
自治系统AS是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
路由选择策略划分为两种:
域间路由选择:自治系统之间的路由选择。
域内路由选择:自治系统内部的路由选择。
RIP是内部网关协议IGP中最先得到广泛使用的协议。中文译名为路由信息协议。
路由表中最主要的信息:
路由表更新的原则是找出到每个目的网络的最短距离,这种更新算法那称为距离向量算法。
距离向量算法流程如下
RIP报文更改具体操作:
RIP报文由首部和路由部分组成。
在路由部分中有自治系统号ASN(因为可能收到本自治系统以外的路由选择信息)
RIP存在的一个问题是坏消息传播得慢。即当网络出现故障时,要经过比较长的时间才能将此信息传到所有的路由器。
解决方案:
如让路由器记录收到的某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送。
OSPF中文译名为开放最短路径优先。
它是为了克服RIP缺点而开发的。
其他特点:
注意:
为什么在不同AS间不能使用RIP或OSPF协议?
互联网规模太大,使得AS间路由选择非常困难。
AS间的路由选择必须考虑有关策略。(由于相互连接的网络的性能相差很大,根据最短路径找出来的路径,可能并不合适)
边界网关协议BGP只能力求选择出一条能够到达目的网路前缀且比较好的路由,并非要计算出一条最佳路由。
BGP采用了路径向量路由选择协议。
BGP协议并非只运行在AS之间,还要运行在AS内部。
自治系统中有两种不同功能的路由器:
边界路由器(边界网关)
内部路由器
eBGP连接:当两个边界路由器进行通信时,必须先建立TCP连接(端口号179),这种连接称为eBGP连接。
iEGP连接:边界路由器把获得的BGP路由,转发给AS内部的其他路由器。在AS内部,两个路由器间还需要建立iBGP连接(iBGP使用TCP连接传送BGP报文)。
注意:
BGP路由的格式:
B G P 路 由 = " 前 缀 , B G P 属 性 ” = “ 前 缀 , A S − P A T H , N E X T − H O P ” BGP路由 = "前缀,BGP属性” = “前缀,AS-PATH,NEXT-HOP” BGP路由="前缀,BGP属性”=“前缀,AS−PATH,NEXT−HOP”
AS可归类为三大类:
AS类别 | 是否付费 | 特点 |
---|---|---|
末梢AS | 必须向所连接的AS付费 | 比较小的AS。 直接发送或直接接受分组,不会把其他AS的分组再转发到另一个AS |
穿越AS | 为其他AS有偿转发分组 | 往往拥有很好告诉通信干线的主干AS。任务是为其他AS转发分组 |
对等AS | 彼此不收费 | 经过事先商量的两个AS互相转发分组 |
假如有多条BGP路由可供选择,那么会根据以下原则,按照先后次序,选择一条较好的BGP路由。
OPEN(打开)报文:用来与BGP连接对等端建立关系
UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的路由。
KEEPALIVE(保活)报文:用来周期性地正是与对等端的连通性
NOTIFICATION(通知)报文:用来发送检测到的差错
BGP报文作为TCP报文的数据部分传送。
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
路由器的转发分组正是网络层的主要工作。
路由器结构可以分为两大部分:
注意:
交换结构(交换组织)的作用是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。
交换结构把分组从一个输入端口转移到合适的输出端口,实现交换主要有三种常见的方法:
IP多播(非考点,暂略)
IP多播的基本概念
在局域网上进行硬件多播
网际组管理协议IGMP和多播路由选择协议
本地地址:在机构内部使用的计算机,由本机构自行分配的IP地址。
全球地址:向互联网管理机构申请的全球唯一有效IP地址。
为了防止本地IP地址和互联网中的IP地址重合出现的地址二义性,RFC1918指明了一些专用地址。
专用地址只能用作本地地址而不能用作全球地址。
在互联网中的所有路由器,对目的地址是专用地址的数据报,一律不进行转发。
三个IPv4专用地址块:
采用这样的专用IP地址的互连网络称为专用互联网或本地互联网(简称专用网)。
当机构的许多部分分布的范围很广,可以使用虚拟专用网VPN。
VPN利用公用的互联网作为本机构专用网之间的通信载体。
内联网:有场所A和B的内部网路所构成的VPN。(AB属于同一个机构)
外联网:一个机构的VPN有某些外部机构(如合作伙伴)参加进来。
注意:
远程接入VPN:用于在外地的员工与公司主机建立VPN隧道。
采用网络地址转换,可以实现让已经分配了本地IP地址的主机和互联网上的主机通信。
使用NAT,需要在专用网连接到互联网上的路由器上安装NAT软件,这个路由器需要有至少一个有效的外部全球IP地址。
注意:
现在常用的NAT转换表把运输层的端口号也利用上,可以使多个拥有本地地址的主机共用一个全球主机IP地址。
网络地址与端口号NAPT:使用端口号的NAT。
传统的NAT:不适用端口号的NAT。
多协议标签交换MPLS(非考点,暂略)
MPLSDE工作原理
MPLS首部的位置与格式
新一代的MPLS
软件定义网络SDN简介
本文是对《计算机网络(第八版)》谢希仁著的学习总结