IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络(谢希仁第7版)- 网络层 -> 正文阅读

[网络协议]计算机网络(谢希仁第7版)- 网络层

网络层

网络层提供的两种服务

1、无连接的网络服务(数据报服务)

2、面向连接的服务(虚电路服务)

中间设备

1、物理层使用的中间设备叫转发器(repeater)

2、数据链路层使用的中间设备叫网桥或桥接器(bridge)

3、网络层使用的中间设备叫路由器(router)

4、在网路层以上使用的中间设备叫网关(gateway)用网关连接两个不兼容的系统需要在高层进行协议的转换。

地址解析协议ARP(Address Resolution Protocol)

ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。

用途:从网络层使用的IP地址解析出数据链路层使用的硬件地址。

方法:每个主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上各主机和路由器的IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。

当主机A欲向本局域网上的某个主机B发送IP数据报时,先从其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址,即直接交付。如无,ARP进程在本局域网上广播发送一个ARP请求分组,主要内容是“我的IP地址是209.0.0.5,硬件地址是00-00-C0-15-AD-18,我想知道IP地址位209.0.0.6的主机的硬件地址“,本局域网上除主机B之外的主机收到该请求时,只把主机A的IP地址和硬件地址写入自己的ARP高速缓存中,不做出回应,主机B收到此分组后,把主机A的IP地址和硬件地址映射写入自己的ARP高速缓存中,同时在本局域网内广播一条ARP请求分组,本局域网上其他主机收到此广播后把B主机的IP地址和硬件地址的映射写入高速缓存中。

网际协议IP

IP地址现在由互联网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。

第一阶段:分类的IP地址

? 将IP地址分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机或路由器所连接到的网络。第二个字段是主机号(host-id),它标志该主机。一个IP地址在整个互联网内是唯一的。

? IP地址都是32位的二进制代码,把32位的IP地址中每8位后插入一个空格,用其等效的十进制数字表示,在这些数字之间加上一个点,这就叫做点分十进制记法(dotted decimal notation)。

? 各类地址中网络号字段为全0的IP地址代表本网络。网络号为127(即01111111)保留为本地软件环回测试(loopback test)本主机的进程之间的通信之用。

IP地址的特点:

1)每一个IP地址都由网络号和主机号两部分组成。IP地址管理机构只分配网络号,剩下的主机号则由得到该网络号的单位自由分配。路由器仅根据目的主机所连接的网络号来转发分组,使路由表中项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间。

2)当一台主机同时连接两个网络时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。

3)一个网络是指具有相同网络号net-id的主机的集合,用转发器或网桥连接起来的若干个局域网仍为一个网络。具有不同网络号的局域网必须使用路由器进行互联。

第二阶段:划分子网

划分子网实际就是设计子网掩码的过程。将一个网络划分为子网:采用借位的方式,从主机位最高位开始借位变成新的子网位,所剩余的部分则仍为主机位。于是两级IP地址就变成三级IP地址:网络号、子网号和主机号。

子网掩码

子网掩码是一个32位的2进制数,其对应网络地址的所有位置都为1,对应于主机地址的所有位置都为0。它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

借用主机位为网络位的位数n与被分成的子网数m之间关系为m=2^n-2。本分成的m个子网的子网掩码为网络位+n个1和主机位位数个0组成。

使用子网掩码的好处:不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的与运算,就立即得出网络地址来,这样在路由器处理到来的分组时就可以采用同样的算法。

在RFC950成为互联网的正式标准后,路由器在和相邻路由器交换路由信息时,除了要给出目的网络地址、下一跳地址外,还必须同时给出该网络的子网掩码。

第三阶段:无分类编址CIDR(构造超网)

无分类域间路由选择CIDR(Classless Inter-Domain Routing)

特点:1)消除了传统的A类、B类和C类地址以及划分子网的概念,把32位的IP地址划分为前后两个部分,前面部分是网络前缀(network-prefix),用来指明网络,后面部分则用来指明主机。

CIDR还使用斜线记法(slash notation),即在IP地址后面加上斜线/然后写上网络前缀所占的位数。

2)CIDR把网络前缀都相同的连续IP地址组成一个CIDR地址块,只要知道CIDR地址块中任何一个地址,就可以知道这个地址块的起始地址和最大地址,以及地址块中的地址数。

CIDR使用32位的地址掩码(address mask),地址掩码由一串1和一串0组成,而1的个数就是网络前缀的长度。斜线记法中,斜线后面的数字就是地址掩码中1的个数。

由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络,这种地址的聚合常成为路由聚合(route aggregation),又被称为构成超网(supemetting)。

在使用CIDR时,路由表中的每个项目由网络前缀和下一跳地址组成,在查找路由表时,可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀的路由,这叫做最长前缀匹配(longest-prefix matching)

最常用的查找路由方法是二叉线索(binary trie)

IP地址与硬件地址

IP地址是网络层和以上各层使用的地址,是一种逻辑地址。物理地址是数据链路层和物理层使用的地址。IP地址放在IP数据报的首部,IP数据报到数据链路层就被封装成MAC帧,MAC帧首部中的源地址和目的地址都是硬件地址。

IP数据报格式

在这里插入图片描述

IP数据报首部的固定部分中的各字段

1)版本 占4字节,IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4,即IPv4。

2)首部长度 占4字节,可表示的最大十进制数值为15。首部长度所表示的单位是32位字(一个32位字是4字节)。IP首部固定部分长度是20字节,因此首部长度字段最小值是5(0101)。首部长度为最大值1111时(即十进制的15),表明首部长度达到最大值15个32位长,即60字节。当首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

3)区分服务 DS(Differentiated Services) 占8位,一般不使用。

4)总长度 占16位,指首部和数据之后的长度,单位为字节。数据报最大长度为2^16-1=65535字节。

5)标识(identification) 占16位,当数据报由于长度超过网络的MTU(数据链路层一个数据帧中数据字段的最大长度,即最大传送单元MTU Maximum Transfer Unit)而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的数据报片最后能正确的重装为原来的数据报。

6)标志(flag) 占3位,中间位记为DF(Don’t Fragment),DF=1为不能分片,DF=0标识可以分片。最低一位记为MF(More Fragment),MF=1表示后面还有分片,MF=0表示这已是若干数据报片中最后一个。

7)片偏移 占13位,表示较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。以8个字节为偏移单位,就是说每个分片的长度一定是8字节(64位)的整数倍。

8)生存时间 TTL(Time To Live) 占8位,单位是跳数,是指数据报在互联网中至多可经过多少个路由器。路由器在每次转发数据报之前就把TTL值减1,若TTL值减到0就丢弃这个数据报,不再转发。若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。最大值是255。

9)协议 占8位,指出此数据报携带的数据是使用何种协议,以便使目的主机IP层知道将数据部分上交给哪个协议进行处理。

在这里插入图片描述

10)首部检验和 占16位,只校验数据报的首部,不包括数据部分。方法:发送方把数据报首部划分为若干个16位字的序列,把校验和字段置为0,用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次,将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生变化,则结果必为0。

11) 源地址 占32位

12)目标地址 占32位

网际控制报文协议ICMP(Internet Control Message Protocol)

ICMP报文装在IP数据报中,作为其中的数据部分,加上数据报的首部,组成IP数据报。

ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。

ICMP报文的前4个字节是统一的格式,类型(1个字节)、代码(1个字节)和检验和(2个字节),接着的4个字节的内容与ICMP的类型有关,最后是数据字段,其长度取决于ICMP的类型。

ICMP差错报告报文

ICMP差错报告报文有4种:

1)终点不可达(类型的值是3),当路由器或主机不能交付数据报时就向源点发送终点不可达报文

2)时间超时(类型值是11),当路由器收到生存时间为0的数据报时,丢弃该数据报,并向源点发送时间超时报文。

3)参数问题(类型值是12),当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,丢弃该数据报,并向源点发送参数问题报文。

4)改变路由即重定向(类型的值是5),路由 器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。

ICMP差错报告报文格式:ICMP的前8字节+收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节。整个ICMP报文作为IP数据报的数据字段发送给源点。

不应发送ICMP的几种情况:

1)对ICMP差错报告报文,不再发送

2)对第一个分片的数据报片的所有后续数据报片,都不发送

3)对具有多播地址的数据报不发送

4)对特殊地址(如127.0.0.0或0.0.0.0)的数据报,不再发送

ICMP询问报文

1)回送请求或回答 是由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。用来测试目的站是否可达以及了解其有关状态。

2)时间戳请求和回答 ICMP时间戳回答报文中有一个32位的字段,写入的整数代表从1900年1月1日起到当前时刻的秒数。时间戳请求和回答报文用于时钟同步和时间测量。

3)掩码地址请求和回答报文

4)路由器询问和通过报文

ICMP应用举例

1、分组网间探测PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING是应用层直接使用网络层ICMP的一个例子,它没有通过运输层的TCP和UDP。

Windows上命令行工具键入cmd,键入ping hostname(要测试连通性的主机名或它的IP地址),按回车后就可看到结果。

2、traceroute,它用来跟踪一个分组从源点到终点的路径,Windows中这个命令是tracert

Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一次把数据报的生存时间TTL设置为1,到达第一个路由后由于TTL减一后为0,第一个路由发送ICMP超时差错报告报文,第二次把TTL设置为2,直到最后一个数据报到达目的主机时,TTL为1,但由于IP数据报中是不可交付的UDP用户数据报,目的主机向源主机发送ICMP终点不可达差错报告报文。

互联网的路由选择协议

一个理想的路由算法应具有如下特点:

1)算法必须是正确的和完整的 2)算法在计算上应简单 3)算法应能适应通信量和网络拓扑的变化 4)算法应具有稳定性 5)算法应是公平的 6)算法应是最佳的

把整个互联网划分为许多较小的自治系统(autonomous system),记为AS。自治系统AS是在单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的度量。一个AS对其他AS表现的是一个单一的和一致的路由选择策略。

内部网关协议IGP(Interior Gateway Protocol)也叫做域内路由选择(intradomain routing)

即在一个自治系统内部使用的路由选择协议,使用最多的有RIP和OSPF协议。

内部网关协议RIP

RIP是一种分布式的基于距离向量的路由选择协议,它要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

RIP协议的距离也称为跳数(hop count),RIP认为好的路由就是它通过的路由器的数目少,它允许一条路径最多只能包含15个路由器。

特点:1)仅和相邻路由器交换信息 2)路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表 3)按固定的时间间隔交换路由信息

内部网关协议OSPF

开放最短路径优先(Open Shortest Path First),使用了Dijkstra提出的最短路径算法SPF,使用分布式的链路状态协议(link state protocol)

基本特点:1)向本自治系统中所有路由器发送信息,使用洪泛法(flooding),路由器通过所有输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再将此信息发往其所有的相邻路由器(不再发送给刚刚发来信息的那个路由器),最终整个区域中所有的相邻路由器都得到了这个信息的一个副本。2)发送的信息就是与本路由器相邻的所有路由器的链路状态,即本路由器都和哪些路由器相邻,以及该链路的度量。3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此消息。

其他优点:1)OSPF允许管理员给每条路由指派不同的代价。

2)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径,叫做多路径间的负载平衡(loading balancing)

3)所有在OSPF路由器之间交换的分组都具有鉴别的功能,保证了仅在可信赖的路由器之间交换链路状态信息。

4)OSPF支持可变长度的子网划分和无分类的编址CIDR。

5)由于网络中链路状态可能经常发生变化,因此每一个链路状态都带上一个32位的序号,序号越大状态就越新,增长的速率不得超过每5秒钟一次,保证600年内不重复。

由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库(link-state database)即全网的拓扑结构图,这个拓扑结构图在全网范围内是一致的,每个路由器都可以使用链路状态数据库中的数据,使用Dijkstra最短路径路由算法构造出自己的路由表。

OSPF的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表,更新过程收敛得快是其重要优点。

OSPF可以将一个自治系统再划分为若干个更小的范围,叫做区域,每个区域都有一个32位的区域标识符,每个区域内的路由器最好不超过200个。

划分区域的好处是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑。

为了使每一个区域能够和本区域以外的区域进行通信,OSPF使用层次结构的区域划分,在上层的区域叫做主干区域(backbone area),主干区域的标识符规定为0.0.0.0,主要用于连通其他在下层的区域。从其他区域来的信息都由区域边界路由器(area border router)进行概括。每个区域至少有一个区域边界路由器。在主干区域内的路由叫主干路由器。在主干区域还有一个路由器专门和本自治系统外的其他自治系统交换路由信息,这样的路由器叫做自治系统边界路由器

在这里插入图片描述

OSPF数据报24字节的固定长度首部各字段意义

1)版本 当前版本号是2

2)类型 可以是五中类型分组中的一种

3)分组长度 包括OSPF首部在内的分组长度,以字节为单位

4)路由器标识符 标志发送该分组的路由器的接口的IP地址

5)区域标识符 分组属于的区域标识符

6)检验和 用来检测分组中的差错

7)鉴别类型 目前只有两种0和1

8)鉴别 鉴别类型为0就填入0,鉴别类型为1则填入8个字符的口令。

OSPF的五种分组类型

1)问候分组,OSPF规定,每两个相邻路由器每隔10秒钟要交换一次问候分组,用来发现和维持邻站的可达性。若40秒没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的,应立即修改链路状态数据库,并重新计算路由表。

2)数据库描述分组(Database Description),向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。

3)链路状态请求分组(Link State Request),向对方请求发送某些链路状态项目的详细信息。

4)链路状态更新分组(Link State Update),用洪泛法对全网更新链路状态。

5)链路状态确认分组(Link Acknowledgment),对链路更新分组的确认。

所谓同步就是指不同路由器的链路状态数据库的内容是一样的。两个同步的路由器叫做完全邻接路由器。

OSPF让每一个路由器用数据描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。摘要信息主要就是指出由哪些路由器的链路状态信息已经写入了数据库。经过与相邻路由器交换数据描述分组后,路由器就使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。

外部网关协议EGP(External Gateway Protocol)也叫做域间路由选择(interdomain routing)

边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由。BGP采用了路径向量(path vector)路由选择协议。

在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的BGP发言人。一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。

一个BGP发言人与其他AS的BGP发言人要交换信息,就要先建立TCP连接(端口是179),然后在此连接上交换BGP报文以建立BGP会话。使用TCP连接能提供可靠的服务,也简化了路由选择协议。使用TCP连接交换路由信息的两个BGP发言人,彼此成为对方的邻站或对等站。

边界网关协议BGP所交换的网络可达性的信息就是要到达某个网络所要经过的一系列自治系统。当BGP发言人互相交换了网络可达性信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由。

BGP发言人构造出的自治系统连通图是树形结构,不存在回路。

BGP支持无分类域间路由选择CIDR,因此BGP路由表也就应当包括目的网络前缀,下一跳路由器,以及到达该网络所要经过的自治系统序列。

在BGP刚刚运行时,BGP与邻站是交换整个BGP路由表,但以后只需要在发生变化时更新有变化的部分。

在这里插入图片描述

四种类型的BGP报文具有同样的通用首部,长度19字节。

1、标记(marker)字段为16字节长,用来鉴别收到的BGP报文,不使用鉴别时,标记字段要置为全1。

2、长度字段指出包括通用首部在内的整个BGP报文以字节为单位的长度,最小是19,最大是4096

3、类型字段的值是1到4,分别对应四种报文。

BGP四种报文:

1)OPEN报文(打开),用来与相邻的另一个BGP发言人建立关系,使通信初始化。共有6个字段,即版本(1字节,现在值是4)、本自治系统号(2字节,使用全球唯一的16位自治系统号,由ICANN地区登记机构分配)、保持时间(2字节,以秒计算的保持为邻站关系的时间)、BGP标识符(4字节,通常就是该路由器的IP地址)、可选参数长度(1字节)和可选参数。

2)UPDATA报文(更新),用来通告某一个路由的信息,以及列出要撤销的多条路由。撤销路由可以一次撤销多条,但新增新路由时,每个更新报文只能增加一条。共5个字段,即不可行路由长度(2字节,指明下一字段的长度)、撤销的路由(列出所有要撤销的路由)、路径属性总长度(2字节,指明下一字段的长度)、路径属性(定义在这个报文中增加的路径的属性)和网络可达性信息NLRI(Network Layer Reachability Information)。最后这个字段定义发出此报文的网络,包括网络前缀的位数、IP地址前缀。

3)KEEPALIVE报文(保活),用来周期性地验证邻站的连通性。报文只有BGP的19字节长的通用首部。

4)NOTITICATION报文(通知)报文,用来发送检测到的差错。3个字段,差错代码(1字节)、差错子代码(1字节)和差错数据(给出有关差错的诊断信息)。

路由器的构成

路由器的结构

路由器是一种具有多个输入端口和多个输出端口的专业计算机,其任务是转发分组。

从路由器某个输入端口收到的分组,按照分组要去的目的地,把该分组从路由器的某个合适的输出端口转发给下一跳路由器。

路由器的转发分组正是网络层的主要工作。

路由器分为两大部分:路由选择部分和分组转发部分。

路由选择部分也叫控制部分,其核心构件是路由选择处理机,其任务是根据所选定的路由选择协议构造出路由表,同时经常或定期的和相邻路由器交换路由信息而不断的更新和维护路由表。

转发和路由选择的区别:

转发就是路由器根据转发表把收到的IP数据报从路由器合适的端口转发出去。转发仅仅涉及到一个路由器。

路由选择则涉及到很多路由器,路由表则是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,得出整个网络的拓扑变化情况,因而能够动态的改变所选择的路由,并由此构造出整个路由表。

路由表一般仅包含从目的网络到下一跳(用IP地址表示)的映射,而转发表时从路由表得出的。

转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。

分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口

交换结构(Switching fabric)又称为交换组织,它的作用就是根据转发表(forwarding table)对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。

三种常用的交换方法:

1)通过存储器进行交换,当路由器的某个输入端口收到一个分组时,进行目的地址的查找,并从输入端口复制分组到缓存中,路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。

2)通过总线进行交换,采用这种方式时,数据报从输入端口通过共享的总线直接传送到输出端口,而不需要路由选择机的干涉。但总线是共享的,同一时刻只能有一个分组在总线上传送。

3)通过纵横交换结构进行交换,这种交换机常称为互联网络,它有2N条总线,可以使N个输入端口和N个输出端口相连接,这取决于相应的交叉结点是使水平总线和垂直总线连通还是断开。

IPv6

IPv6主要变化:

1)更大的地址空间。IPv6把地址从IPv4的32位增大到4倍,即增大到128位。

2)扩展的地址层次结构。由于地址空间很大,因此可以划分为更多的层次。

3)灵活的首部格式。IPv6定义了许多可选的扩展首部。

4)改进的选项。IPv6的首部长度是固定的,可选参数部分放在有效载荷中,可以包含一些新的选项。IPv4可选参数是放在首部的可变部分,可选参数也是固定不变的,因此首部长度是不固定的。

5)允许协议继续扩充。

6)支持即插即用,即自动配置。

7)支持资源的预分配。

8)IPv6首部改为8字节对齐,即首部长度必须是8字节的整数倍。IPv4首部是4字节对齐。

IPv6数据报由两大部分组成:基本首部和有效载荷。

有效载荷也称净负荷,有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。

IPv6基本首部中各字段的作用:

1)版本(version) 占4位,指明协议的版本,对IPv6该字段是6。

2)通信量类(traffic class) 占8位,为了区分不同的IPv6数据报的类别和优先级。

3)流标号(flow label)占20位,IPv6的一个新的机制是支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。

IPv6提出流(flow)的抽象概念:所谓流就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输)而在这个流所经过的路径上的路由器都保证指明的服务质量,所有属于同一个流的数据报都具有同样的流标号。

4)有效载荷长度(payload length)占16位,指明IPv6数据报除基本首部以外的字节数,最大值是64KB(65535字节)。

5)下一个首部(next header) 占8位,相当于IPv4的协议字段或可选字段。

当出现扩展首部时,下一个首部字段的值就标识后边第一个扩展首部的类型。没有扩展首部时,下一个首部字段的作用和IPv4的协议字段一样,它的值指出了基本首部后面的数据应交付IP层上面的哪一个高层协议(例如:6或17分别应交付运输层的TCP或UDP)。

6)跳数限制(hop limi) 占8位,用来防止数据报在网路中无限期的存在。最大跳数为255。

7)源地址 占128位,是数据报的发送端的IP地址。

8)目的地址 占128位,是数据报的接收端的IP地址。

IPv6扩展首部:

IPv6把原来IPv4首部中可选参数字段的功能放在扩展首部中,并把扩展首部留给留给路径两端的源点和终点的主机来处理,数据报途中经过的路由器除了逐跳选项扩展首部外都不处理。

六种扩展首部:

1)逐跳选项 2)路由选择 3)分片 4)鉴别 5)封装安全有效载荷 6)目的站选项

每一个扩展首部都有若干个字段组成,长度各不相同,但第一字段都是8位的下一首部字段。

当使用多个扩展首部时,应按以上先后顺序出现,高层首部总是放在最后。

IPv6的目的地址

三种基本类型地址:

1)单播(unicast) 即传统的点对点通信。

2)多播(multicast) 多播是一点对多点的通信,数据报发送到一组计算机中的每一个。

3)任播(anycast) 任播的终点是一组计算机,但数据报只交付距离最近的那一个。

IPv6使用冒号十六进制记法(colon hexadecimal notation,简写colon hex)

IPv6把每个16位的值用十六进制值表示,各值之间用冒号分隔,允许把数字前面的0省略,允许零压缩,即一连串连续的零可以用一对冒号所取代,但任一地址中只能使用一次零压缩。

冒号十六进制记法可结合使用点分十进制记法的后缀,如0:0:0:0:0:0:128.10.2.1,这种记法中冒号所分隔的每个值是两个字节(16位)的量,但每一个点分十进制部分的值则指明一个字节(8位)的值,再使用零压缩即可得出 ::128.10.2.1。

CIDR的斜线表示方法任然可用。

IPv6地址分类:

1)未指明地址 16字节全0地址,可缩写位“::”,该地址不能用做目的地址,可记为::/128

2)环回地址 IPv6的环回地址是0:0:0:0:0:0:0:1,可缩写为::1,也可记为::1/128

3)多播地址 功能和IPv4的一样

4)本地链路单播地址

5)全球单播地址

从IPv4向IPv6过渡

两种过渡策略:双协议栈和使用隧道技术

双协议栈:

双协议栈(dual stack)是指在完全过渡到IPv6之前,使一部分主机或路由器装有双协议栈,一个IPv4和一个IPv6,双协议栈的主机或路由器记为IPv6/IPv4,同时具有两种 IP地址,和IPv6主机通信采用IPv6地址,和IPv4主机通信采用IPv4地址,通过域名系统DNS来查询目的主机是IPv4还是IPv6。

隧道技术:

隧道技术是在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成IPv4数据报的数据部分,把IPv4首部的协议字段的值设置为41,当数据报离开IPv4网络中的隧道时,再把数据部分交给主机的IPv6协议栈。

ICMPv6

ICMPv6是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信,地址解析协议ARP和网际组管理协议IGMP的功能都已被合并到ICMPv6中。

ICMPv6报文包括差错报文、信息报文、邻站发现报文(ND协议)和组成员关系报文(MLD协议)。

IP多播

在互联网上进行多播就是IP多播,IP多播所传送的分组需要使用多播IP地址。

多播服务器只需把多播分组当做多播数据报来发送,只需发送一次,路由器在收到转发分组时,需要把收到的分组复制成多个副本,向每一个与其相邻路由器发送一个复制的副本,当副本到达局域网时,采用硬件多播的方式进行多播。

多播组的标识符就是IP地址中的D类地址,前四位是1110,地址范围是224.0.0.0到239.255.255.255。

多播数据报和一般IP数据报的区别就是它使用D类IP地址作为目的地址,并且首部中的协议字段是2,表明使用网际组管理协议IGMP。

多播转发必须动态地适应多播组成员的变化。

多播路由器在转发多播数据报时,不能仅仅根据多播数据报的目的地址,而是还要考虑这个多播数据报从什么地方来要到什么地方去。

多播数据报可以由没有加入多播组的主机发出,以可以通过没有组成员接入的网络。

网际组管理协议IGMP

IGMP协议是让连接在本局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。

从概念上讲,IGMP的工作可以分为两个阶段:

1、当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员,本地多播路由器在收到IGMP报文后,要利用多播路由器由选择协议把这种组成员关系转发给互联网上其他多播路由器。

2、组成员关系是动态的,本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要由一台主机对某个组响应,那么多播路由器就认为这个组时活跃的。一个组在经过多次探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都已离开了这个组,也就不再把这个组的成员关系转发给其他多播路由器。

具体措施:

1、在主机和多播路由器之间的所有通信都是使用IP多播

2、多播路由器在探询组成员关系时,只需对所有组发送一个请求信息的询问报文,而不需要对每个组发送一个询问报文,默认询问速率是每125秒发送一次。

3、当同一个网络上有几个多播路由器时,它们能够迅速和有效的选择其中一个来探询主机的成员关系。

4)在IGMP的询问报文中有一个数值N,它指明一个最长响应时间默认是10秒。

5)同一个组内的每一台主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。

多播路由选择协议

多播路由选择实际就是要找出以源主机位根节点的多播转发树,在多播转发树上,每一个多播路由器向树的叶节点方向转发收到的多播数据报。

在转发多播数据报时使用的三种方法:

1、洪泛和剪除,适用于较小的多播组,所有的组成员接入的局域网也是相邻接的。

采用叫做反向路径广播RPB的策略。每一个路由器在收到一个多播数据报时,先检查数据报是否是从源点经最短路径传送来的,如是就向除进入方向除外的所有方向转发刚才收到的多播数据报,否则丢弃不转发。

2、隧道技术,适用于多播组的位置在地理上很分散的情况。在经过不支持多播的网络时,先对多播数据报进行再次封装,即再加上普通数据报的首部,使之成为向一个目的站发送的单播数据报,然后通过隧道发送到目的路由器,目的路由器收到报文后剥去其首部,把它恢复成多播数据报继续向多个目的站转发。

3、基于核心的发现技术,这种方法对于多播组的大小在较大范围内变化时都适合。

这种方法是对每一个多播组指定一个核心路由器,核心路由器创建出对应于多播组的转发树,如果有一个路由器R1向这个核心路由发送数据报,那么它在途中经过的每一个路由器都要检查其内容。

建议使用的多播路由选择协议:

1)距离向量多播路由选择协议DVMRP。2)基于核心的转发树CBT。3)开放最短通路优先的多播扩展MOSPF。4)协议无关多播-稀疏方式PIM-SM。5)协议无关多播-密集方式PIM-DM

虚拟专用网VPN

RFC 1918指明了一些专用地址(private address),这些地址只能用于一个机构的内部通信,而不能用于和互联网上的主机通信,专用地址只能用做本地地址而不能用做全球地址,在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。

三个专用地址块:

1)10.0.0.0到10.255.255.255,或记为10.0.0.0/8,它又称为24位块

2)172.16.0.0到172.31.255.255,或记为172.16.0.0/12,它又称为20位块

3)192.168.0.0到198.168.255.255,或记为192.168.0.0/16,它又称为16位块

采用这样的专用IP地址的互联网络称为专用互联网或本地互联网,或叫专用网。这些专用地址仅在机构内部使用,也叫做可重用地址。

利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(Virtual Private Network)。

如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。

实现虚拟专用网的两种方式:

1)使用IP隧道技术实现,一个机构要构建字节的VPN系统就必须位它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址。每一个场所内的通信量都不经过互联网。不同场所之间的主机之间的通信要经过互联网,路由器收到内部数据报后,发现目的网络必须通过互联网才能到达,就把整个内部数据报经过加密,然后重新加上数据报的首部,封装成为互联网上发送的外部数据报,目的路由器在收到数据报后将其数据部分取出进行解密,恢复出原来的内部数据报,再交付目的主机。

2)远程接入VPN(remote access VPN),远程主机通过拨号接入互联网,远程主机内的VPN软件将此主机与需要连通的主机之间建立VPN隧道,通过隧道进行通信。

网络地址转换NAT(Network Address Translation)

专用网内部的一些主机需要和互联网上的主机通信,需要在专用网连接到互联网上的路由器上安装NAT软件,所有使用本地地址的主机和外交通信时,都要在NAT路由器上将其本地地址转换为全球IP地址,才能和互联网连接。

通过NAT路由器的通信必须由专用网内的主机发起,专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。

使用端口号的NAT也叫做网络地址与端口转换NAPT(Network Address and Rort Translation)。

NAPT把专用网内不同的源IP地址都转换为同样的全球IP地址,对源主机所采用的TCP端口号转换为不同的新的端口号,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从NAPT转换表中找到正确的目的主机后再交付。

多协议标记交换MPLS

MPLS利用面向连接技术,使每个分组携带一个叫做标记的小整数,当分组到达交换机时,交换机读取分组的标记,并用标记来检索分组转发表,然后利用硬件进行转发。

工作原理:

MPLS在MPLS域的入口处,给每一个IP数据报打上固定长度标记,然后对打上标记的IP数据报用硬件进行转发,这使得IP数据报转发的过程大大加快了。采用硬件技术对打上标记的IP数据报进行转发就称为标记交换。交换也表示在转发时不再上升到第三次查找转发表,而是根据标记在第二层(链路层)用硬件进行转发。可使用多种链路层协议,如PPP、以太网、ATM及帧中继等。

MPLS域是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持MPLS技术的标记交换路由器LSR。LSR同时具有标记交换和路由选择这两种功能。

基本工作过程:

1)MPLS域中的各LSR使用专门的标记分配协议LDP交换报文,并找出和特定标记相对应的路径,即标记交换路径LSP。各LSR根据这些路径构造出转发表。

2)当一个IP数据报进入到MPLS域时,MPLS入口结点就给它打上标记,并按照转发表把它转发给下一个LSP,以后所有的LSR都按照标记进行转发。

3)由于在全网内统一分配全局标记数值是非常困难的,因此一个标记仅仅在两个标记交换路由器LSR之间才有意义。分组每经过一个LSR,LSR就要做两件事:一是转发,二是更换新的标记,即把入标记更换为出标记,这叫做标记对换。

4)当IP数据报离开MPLS域时,MPLS出口结点就把MPLS的标记去除,把IP数据报交付非MPLS的主机或路由器,以后就按照普通的转发方式进行转发。

MPLS首部的位置和格式:

MPLS首部处在网络层和数据链路层之间,在把IP数据报封装成以太网帧之前要先插入一个MPLS首部,在封装成以太网帧时,以太网的类型字段在单播的情况下设置为8847(16)多播情况下为8848(16),16为下标,接收方可以用帧的类型来判决这个帧是携带了MPLS的帧还是一个常规的IP数据报。

MPLS首部:

1)标记值 占20位。2)试验 占3位,目前保留用于试验。3)栈S 占1位,在有标记栈时使用。4)生存时间TTL 占8位。

标记,并按照转发表把它转发给下一个LSP,以后所有的LSR都按照标记进行转发。

3)由于在全网内统一分配全局标记数值是非常困难的,因此一个标记仅仅在两个标记交换路由器LSR之间才有意义。分组每经过一个LSR,LSR就要做两件事:一是转发,二是更换新的标记,即把入标记更换为出标记,这叫做标记对换。

4)当IP数据报离开MPLS域时,MPLS出口结点就把MPLS的标记去除,把IP数据报交付非MPLS的主机或路由器,以后就按照普通的转发方式进行转发。

MPLS首部的位置和格式:

MPLS首部处在网络层和数据链路层之间,在把IP数据报封装成以太网帧之前要先插入一个MPLS首部,在封装成以太网帧时,以太网的类型字段在单播的情况下设置为8847(16)多播情况下为8848(16),16为下标,接收方可以用帧的类型来判决这个帧是携带了MPLS的帧还是一个常规的IP数据报。

MPLS首部:

1)标记值 占20位。2)试验 占3位,目前保留用于试验。3)栈S 占1位,在有标记栈时使用。4)生存时间TTL 占8位。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:51:11  更:2021-07-13 17:53:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 13:47:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计