计算机网络(第7版)谢希仁著 学习笔记


第四章链接
第六章链接

第四章 网络层

4.3划分子网和构造超网 p134

4.3.1划分子网

  • 之前的IP地址是两级IP(网络号|主机号),由于不够灵活1958年在IP地址中增加了子网号段,使IP地址变为了三级IP(网络号|子网号|主机号),也称为划分子网。
  • 因为无法看出一个IP地址是否进行了子网划分,所以有了子网掩码。
  • IP地址和子网掩码按位与得出网络地址,无论该网络是否划分了子网。
  • 划分子网增加了IP地址的灵活性,但却减少了能连接在网络上的主机总数。(现在全1和全0的子网号也可以使用了)
  • 在进入一个划分了子网的网络前,其子网掩码是就是网络位长度,进入后该网络内部的路由表上的IP地址的子网掩码即为带上子网号的后的长度。

4.3.2使用子网时分组的转发

  • 子网划分后路由表包含:目的网络地址(不是IP地址)、子网掩码、下一跳地址(是IP地址)
  • 路由器分组转发顺序:直接交付→特定主机路由→遍历路由表→默认路由
  • 路由器分组转发步骤:
    ①提取目的IP地址D
    ②直接交付:遍历直连网络(用各网络子网掩码和D按位与,看是否与相应的网络匹配)。若匹配发给该直连网络。【只要不是一个子网,就要交给路由器进行间接交付】
    ③特定主机路由:查找路由表内有无目的地址为D的特定主机路由。若有发给其指定地址。
    ?疑问,那路由表中的特定主机路由的目的网络地址,是直接是完整IP地址吗?
    ④遍历路由表:遍历路由表(用D与每行子网掩码按位与,看是否与其目的网络地址匹配)。若匹配发给下一跳地址。
    ⑤默认路由:若有指定默认路由,直接发给其指定的默认路由。
    ⑥报告转发分组出错
    自己错误理解:②和④的区别就是②的下一跳地址就是自己,即目的地址=下一跳地址。真正主要区别是②不经过路由器直接交付,而④需要经过路由器间接交付。

4.3.3无分类编址CIDR(构建超网)

  • 背景:IETF研究出CIDR(无分类域间路由选择)。2011年2月3日IANA宣布IPV4地址耗尽。
  • CIDR完全打破了传统分类地址与子网划分概念,又成为了二级IP(网络前缀|主机号)
  • CIDR使用了斜线记法,即IP地址后加/然后写上网络前缀的位数。
  • CIDR使用32位的地址掩码,也可继续称为子网掩码。
  • CIDR把网络前缀都相同的连续IP地址组成一个CIDR地址块,这些地址的聚合称为路由聚合。
  • 使用CIDR时路由表包含:网络前缀、下一跳地址。此时使用最长前缀匹配原则。
  • 使用CIDR后需要匹配最长前缀,所以如何减少查找时间成了重要问题,书中提到常用的是二叉线索查找,没有细看(p146-147)。

4.4网际控制报文协议ICMPp147

  • 背景:为更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。ICMP报文封装在IP数据报的数据部分。
    在这里插入图片描述

4.4.1 ICMP报文的种类

  • ICMP报文有两种:
    ①ICMP差错报告报文有四种:终点不可达、时间超过、参数问题、改变路由(重定向)。
    ICMP差错报告报文中的数据字段都具有同样的格式:把IP数据报的首部和数据字段的前8个字节【为得到运输层端口号(TCP、UDP),运输层报文发送序号(TCP)】提取出来作为ICMP报文的数据字段。再加上ICMP差错报告报文的前8个字节,构成了ICMP差错报告报文。在这里插入图片描述
    ②ICMP询问报文有两种:回送请求和回答、时间戳请求和回答。

4.4.2 ICMP的应用举例

  • 一个重要应用就是分组网间探测PING(Packet InterNet Grouper)。
  • 另一个重要应用是Traceroute(UNIX)、tracert(Windows),返回到达主机所经过的路由器的IP地址。
    在这里插入图片描述

4.5路由选择协议

4.5.1有关路由选择协议的几个基本概念

  • 理想的路由算法应该具备的特点
    ①算法必须是正确的和完整的
    ②算法在计算上应简单
    ③算法应能适应通信量和网络拓扑的变化(自适应性)
    ④算法应具有稳定性
    ⑤算法应是公平的
    ⑥算法应是最佳的

  • 从路由算法能否随网络的通信量或拓扑自适应地进行调整变化可分成两类:静态路由选择策略(非自适应路由选择)、动态路由选择策略(自适应路由选择)

  • 互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议

  • 出于互联网规模与隐私性考虑,可以把整个互联网划分为许多较小的自治系统(autonomous system),一般记为AS。

  • 一个AS对其他AS表现出的是一个单一的一致的路由选择策略。

  • 使用分层次的路由选择方法,可以将互联网把路由选择协议划分成两类:
    ①内部网关协议IGP:在一个自治系统内部使用的路由选择协议(如RIP、OSPF)
    ②外部网关协议EGP:不同自治系统的主机传递信息使用的路由选择协议(BGP)
    在这里插入图片描述

  • 自治系统之间的路由选择也叫作域间路由选择,自治系统内部的路由选择也叫作域内路由选择。

  • 早期有一个协议叫做EGP,后来设计了更好的外部网关协议BGP取代了EGP,需要辨析一下现在碰到的EGP大多是指路由选择协议的类别。

4.5.2内部网关协议RIP

  • RIP是一种分布式的基于距离向量的路由选择协议,RIP要求网络中的每一个路由器都维护自己到其他每一个目的网络的距离记录,这一组距离即为距离向量。
  • RIP中跳数达到16即为不可达,所以RIP只适用与中小互联网。
  • 学习路由选择协议是必须要清晰明白三个要点:①和哪些路由器交换信息②交换什么信息③在什么时候交换信息。
  • RIP的三要点:①和相邻路由器交换信息②交换本路由器所知道的全部信息(即路由表)③按固定的时间间隔交换。
  • 收敛:在自治系统中所有节点都得到正确的路由选择信息的过程。
  • 在一般情况下,RIP协议可以收敛,并且过程比较快,但是当网络出故障时收敛很慢(好消息传播快、坏消息传播慢)。
  • RIP路由表更新的原则是找出每个目的网络的最短距离,这种更新算法又称距离向量算法。
  • RIP中收到相邻路由器的更新步骤:
    ①地址为X的路由器发来RIP报文后,先将报文中所有项目修改,所有下一跳地址改成X,将所有距离字段+1。(每一行有三个关键数据:目的网络N、距离d、下一跳路由器X)
    ②若原来的路由表中没有目的网络N,则将该项目添加进去
    ③否则,则看下一跳地址。
    ③.1 若下一跳地址为X,则替换
    ③.2 否则,比较距离d,若比之前小则替换,否则什么都不做。
    ④若3分钟还没收到相邻路由器的更新路由表,则将此相邻路由器的距离设置成16(不可达路由器)。
  • RIP协议让一个自治系统中所有的路由器都和自己的相邻路由器定期交换路由信息,不断更新路由表,使每一个路由器到每一个目的网络的路由都是最短的(跳数最少)。
  • RIP2可以支持变长子网掩码和无分类域间路由选择CIDR,也支持多播及提供简单的鉴别。
  • RIP协议使用运输层的用户数据报UDP进行传送(使用UDP端口520)。
  • RIP报文由首部和路由部分组成。首部4字节,RIP1和RIP2首部相同。
    在这里插入图片描述
    路由标记自治系统号(ASN)。
  • RIP优点是实现简单、开销小,缺点是限制网络规模、坏消息传播慢。

4.5.3内部网关协议OSPF

  • 开发最短路径优先OSPF(Open Shortest Path First),开放表明OSPF协议不是受一家厂商控制而是公开发表的,最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF。

  • OSPF使用分布式的链路状态协议。

  • OSPF的三个要点(Who、What、When):
    ①向自治系统中所有路由器发送消息(洪泛法?不是泛洪),路由器通过输出端口向所有相邻路由器发送信息,然后每个收到信息的路由在向它所有相邻路由器(除去刚刚发来信息的路由器)发送信息,直到整个区域的路由器都收到这个信息的副本。
    ②发送的信息就是本路由器相邻的所有路由器的链路(网络)状态,即本路由器与哪些路由器相邻,以及该链路的度量(网络管理人员设置)。
    ③只有当链路状态发生变化时,路由器才向所有路由器用泛洪法发送此信息。

  • 在OSPF中,由于各路器之间频繁交换链路状态信息,所以所有路由器最终都能建立一个链路状态数据库,这个数据库就是全网的拓扑结构图。

  • OSPF的链路状态数据库能较快地进行更新,OSPF的更新过程收敛得快是其重要优点。

  • OSPF将一个自治系统再划分为若干个更小的范围叫做区域(一个区域内路由器最好不超过200个)。

  • 划分区域的好处是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,这样减少了整个网络上的通信量。

  • 在一个区域内部的路由器只知道本区域的完整网络拓扑,为使每个区域能和其他区域通信,OSPF使用层次结构的区域划分,在上层的区域叫做主干区域,用来连通其他下层区域。

  • 从其他区域来的信息都通过区域边界路由器进行概括,每个区域都至少应当有一个区域边界路由器,在主干区域内的路由器叫做主干路由器(可以同时是区域边界路由器),在每个主干区域内还需要有一个自治系统边界路由器专门负责与其他自治系统交换路由信息。
    在这里插入图片描述

  • OSPF采用分层次划分区域的方法,使每一个区域内交换路由信息的通信量大大小减小,因而可以用于很大规模的自治系统中。

  • OSPF不用UDP而是直接用IP数据报传送(IP数据报首部协议字段为89),OSPF构成的数据报很短(所以无需分片)。

  • OSPF首部字段:
    在这里插入图片描述
    类型是OSPF五种分组类型之一,路由器标识符是发送改分组的路由器接口IP地址。

  • OSPF特点:
    ①允许管理员给每条路由指派不同的代价(1-65535),OSPF对于不同类型的业务可计算出不同的路由。
    ②若到同一个网络有多条代价相同的不同路径,OSPF可以将通信量分配给多条路径,实现多路径间的负载平衡。
    ③所有在OSPF路由器之间交换的分组,都具有鉴别功能。
    ④OSPF支持可变长度的子网划分和无分类的编址CIDR。
    ⑤OSPF每个链路状态都有一个32位的序号,序号越大状态就越新(增长速率不能超过5s/次)。

  • OSPF的五种分组类型:
    ①Hello分组,用来发现和维持邻站的可达性。
    ②数据库描述分组,向邻站发送自己的链路状态数据库中各链路状态的摘要信息(有哪些路由器的链路状态信息及序号已经写入数据库)。
    ③链路状态请求分组,向对方发送某些链路状态项目的详细信息。
    ④链路状态更新分组,用洪泛法对全网更新链路状态。(OSPF最核心部分)
    ⑤链路状态确认分组,对链路更新分组的确认。

  • OSPF规定,相邻路由器每隔10s要交换一次Hello分组来确定哪些邻站是可达的。在正常情况下网络中传达的绝大部分OSPF分组都是Hello分组,若40s没有收到某邻站的Hello分组则视为该邻站不可达,应立即修改链路状态数据库重新计算路由表。
    -OSPF除Hello分组以外的四种分组都用来进行链路状态数据库的同步,同步是指不同路由器的链路状态数据库完全相同,两个同步的路由器叫做完全邻接路由器,不是完全邻接的路由器则只是在物理上是相邻的而其链路状态数据库并没有达到一致。
    在这里插入图片描述

  • OSPF路由器使用的是可靠的洪泛法,就是在收到更新分组后要发送确认(收到重复分组只需要发送一次确认)。
    在这里插入图片描述

  • 为确保链路状态数据库与全网的状态保持一致,OSPF规定每隔一段时间要刷新一次数据库中的链路状态,

  • OSPF协议对多点接入的局域网采用了指定的路由器,指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。

4.5.4外部网关协议BGP

  • 互联网的规模太大,使得自治系统AS之间路由选择非常困难,使自治系统之间交换可达性信息比较合理。

  • 自治系统之间的路由选择必须考虑有关策略,实际上最终是找一条能够达到目的地的较好的路由而不是最佳路由。

  • BGP就是寻找一条较好的路由,采用了路径向量路由选择协议。(RIP是距离向量协议,OSPF是链路状态协议)

  • 配置BGP时,每个AS里管理员都要最少选择一个路由器作为BGP发言人,BGP发言人往往就是BGP边界路由器。

  • BGP发言人与其他AS中的BGP发言人要交换路由信息,就要先建立TCP连接(端口号179),在此连接上交换BGP报文以建立BGP会话,建立此连接的两个BGP发言人彼此成为对方的邻站或对等站。

  • 每个BGP发言人在运行BGP协议的同时,还需要运行它所在的AS中所使用的IGP。

  • BGP所交换的网络可达性信息就是要到达某个网络所要经过的一系列AS,各BGP发言人根据所采用的策略从收到的路由信息中找出到达各自治系统的较好路由。
    在这里插入图片描述
    BGP发言人构造出的AS连通图是树形结构,不存在回路。

  • 互联网多级结构的网络拓扑决定了BGP路由选择协议的特点。

  • BGP协议交换路由信息的结点数量级是自治系统个数的数量级,这要比自治系统中的网络数少很多。

  • 要在许多AS之间寻找一条较好的路径,就是寻找正确的BGP发言人(或边界路由器),而在每一个AS中BGP发言人(或边界路由器)的数目是很少的,这样使AS之间的路由选择不过分复杂。

  • BGP支持CIDR,因此BGP的路由表应当包括目的网络前缀、下一跳路由器、到达目的网络所要经过的AS序列。

  • 当BGP发言人收到其他BGP发言人发来的路径通知,要检查本AS是否在此通知的路径中,若在则不能采用这条路径,因为兜圈子了。

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

  • BGP-4的四种报文:
    ①OPEN报文,用来与相邻的BGP发言人建立关系,使通信初始化。
    ②UPDATE报文(BGP核心内容),用来通告某一路由信息,以及列出要撤销的路由们。
    ③KEEPALIVE报文(只用BGP报文首部,19字节长),用来周期性地证实邻站的连通性。 ④NOTIFICATION报文,用来发送检测到的差错。

  • BGP协议的运行:
    ①开始想邻站商谈发送OPEN报文,若邻站接受建立关系就用KEEPALIVE报文响应。
    ②建立邻站关系后,两个BGP发言人就要周期性交换KEEPALIVE报文(一般间隔30s)。
    ③BGP发言人可以用UPDATE报文撤销(可以多条)它以前通知过的路由,也可以宣布增加(只能一条)新的路由。

  • 距离向量算法往往不能给出正确的选择,因为这些算法不能指出哪些邻站到目的站的路由是独立的。

  • BGP报文格式,四种类型BGP报文具有同样的通用首部:
    ①通用首部长度为19字节,分为三个部分:

    ①.1 标记字段用来鉴别(长16字节),不使用鉴别时设置全1。
    ①.2 长度字段指出包括首部在内整个BGP报文的长度(最小值19最大值4096)。
    ①.3 类型字段的值为1到4,分别对应BGP的四种报文。

在这里插入图片描述
②OPEN报文有6个字段。

②.1 版本(1字节)。
②.2 本自治系统号(2字节)是全球唯一的16位自治系统号(ICANN分配)。
②.3 保持时间(2字节),以秒计算保持为邻站关系的时间。
②.4 BGP标识符通常是该路由器的IP地址。
②.5 可选参数长度(1字节)。
②.6 可选参数。

③UPDATE报文有5个字段。

③.1 不可行路由长度(2字节),指明下一个字段的长度。
③.2 撤销的路由,列出所有要撤销的路由。
③.3 路径属性总长度(2字节),指明下一个字段的长度。
③.4 路径属性,定义在这个报文中增加的路径的属性。
③.5 网络层可达性信息NLRI,定义发出此报文的网络,包含网络前缀的位数、IP地址前缀。

④KEEPALIVE报文,只有BGP的19字节长的通用首部。
⑤NOTIFICATION报文有3个字段。

⑤.1 差错代码(1字节)。
⑤.2 差错子代码(1字节)。
⑤.3 差错数据,给出有关差错的诊断信息。

第六章 应用层

学习总述

应用层协议位于运输层协议之上,每个应用层协议都是为了解决某一类应用问题,问题的解决必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用之间的通信必须遵循严格的规则,应用层的具体内容就是精确定义这些通信规则。

6.1 域名系统DNS

6.1.1域名系统概述

  • 域名系统DNS(Domain Name System)是互联网使用的命名系统。
  • 连接在互联网上的主机不只有IP地址还有方便记忆的主机名字,DNS能够把互联网上的主机名字转换为IP地址。
  • ARPANET时代整个网络只有数百台计算机,使用一个叫做hosts的文件列出所有主机名字和相应的IP地址,计算机就可以识别并转换。
  • 机器处理IP数据报使用IP地址而不是域名,是因为IP地址是定长的,机器处理起来方便。
  • 理论上讲整个互联网可以使用一个域名服务器,但是由于互联网的规模太大会使服务器过负荷无法正常工作,并且若此域名服务器出现故障会导致整个互联网瘫痪,所以DNS采用层次树状结构的命名方法,使用分布式域名系统DNS。(RFC 1034, 1035)
  • 互联网的域名系统DNS被设计成为一个联机分布式数据库系统,采用客户服务器方式。
  • DNS使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,所以DNS系统效率很高。
  • 域名到IP地址的解析是由分布在互联网上的许多域名服务器共同完成的。
  • 域名到IP地址的解析过程:
    ①有转换需求的进程调用解析程序并成为DNS的一个客户
    ②将待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。
    ③本地域名服务器查找域名后,把对应的IP地址放在回答报文中返回。
    ④若本地域名服务器不能回答该请求,则域名服务器暂时成为DNS的另一个客户。
    ⑤向其他域名服务器发出查询请求,直到找到能够回答该请求的域名服务器。
    ⑥应用进程获得目的主机IP地址后即可进行通信。

6.1.2 互联网的域名结构

  • 任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
  • 域可以划分子域,子域还可以划分为子域的子域,这样就形成了顶级域、二级域、三级域等。
    在这里插入图片描述
    DNS规定的命名规则:
    域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母,唯一能使用的标点符号就是连字符。级别最低的域名写在最左边,顶级域名写在最右边。由多个标号组成的完整域名总共不能超过255个字符。
  • DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么。
  • 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN管理。
  • 域名知识逻辑概念,并不代表计算机所在的物理地点。
  • 之前的顶级域名分为三类:①国家顶级域名nTLD②通用顶级域名gTLD③基础结构域名(这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名)。
  • ICANN于2011年6月20日的新加坡会议上正式批准新顶级域名,任何公司机构都有权申请(申请费18万美元),且有部分中文的顶级域名出现。
  • 我国把二级域名划分两类:
    ①类别域名(7个:ac、com、edu、gov、mil(国防)、net、org)
    ②行政区域名(34个:各省、自治区、直辖市)。
  • 互联网域名空间的结构是一个倒过来的树,最上面的是根,但没有对应的名字,根下面一级就是顶级域名,往下划分依次为二级域名、三级域名等。在这里插入图片描述

6.1.3 域名服务器

  • 具体实现域名系统规则的是使用分布在各地的域名服务器,DNS采用划分区的方式。
  • 一个服务器所管辖(有权限)的范围叫做区。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
  • 区可能等于或小于域,区是域的子集。
  • 当某个DNS服务器不能进行域名到IP地址的转换时,它就设法找互联网上别的域名服务器进行解析。
  • 每一个域名服务器都只对域名域名体系中的一部分进行管辖。
  • 根据域名服务器所起的作用可以分成以下四类:
    ①根域名服务器:截止2016年2月全世界已经有588个地点安装了根域名服务器,它们只使用了13个不同IP地址的域名,即a.rootservers.net——m.rootservers.net,每个域名下的根域名服务器由专门的公司或美国政府的某个部门负责运营。在每一个地点的根域名服务器往往由多台机器组成。由于根域名服务器采用了任播技术,所以当DNS客户想某个根域名服务器的IP地址发出查询报文时,互联网上的路由器就能找到离这个DNS客户最近的一个根域名服务器。在很多情况下,根域名服务器并不直接把待查询的域名直接转换成IP地址(根域名服务器也没有存放这种信息),而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。(?域名——IP,可以一对多么)
    ②顶级域名服务器:负责管理在该顶级域名服务器下注册的所有二级域名。
    ③权限域名服务器:负责一个区的域名服务器。
    ④本地域名服务器:也称为默认域名服务器,通常离用户较近,一般不超过几个路由器的距离。
  • DNS域名服务器通常把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。
  • 域名解析过程:
    ①递归查询:
    ②迭代查询:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值