分享

熟悉基本通信协议(3)网络层

 刘刘贾贾 2010-09-11
第三、网络层协议框架

一、路由器在网际中的作用
(一)路由器的构成强调:它工作在第三层,即IP层或网络互连层,但是它包括物理层和数据链路层。路由器也具有操作系统,相当于一台小型计算机
  (1)当主机 A 要向另一个主机 B 发送数据报时,先要检查目的主机 B 是否与源主机 A 连接在同一个网络上
  (2)如果是,就将数据报直接交付给目的主机 B 而不需要通过路由器
  (3)但如果目的主机与源主机 A 不是连接在同一个网络上,则应将数据报发送给本网络上的某个路由器,由该路由器按照转发表指出的路由将数据报转发给下一个路由器。这就叫作间接交付
(二)典型路由器的结构
  “转发”和“路由选择”的区别
  (1)“转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去
  (2)“路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由
  (3)路由表是根据路由选择算法得出的。而转发表是从路由表得出的(实际中转发表是逻辑图而路由表是实际的线路图)
  (4)我们在讨论路由选择的原理时,往往不去区分转发表和路由表的区别
  输入端口对线路上收到的分组的处理
  数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延
  输出端口将交换结构传送来的分组发送到线路
当交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路
  分组丢弃分组又叫报文或IP数据包或数据报
  若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因(所以IP数据包是非面向连接的,高层才是面向连接)
  两个重要的路由协议:
  构成、维护路由表的协议是主动路由协议(routing);
  转发数据包的协议是被动路由协议(routed)。
二、互连网和因特网
(一)互连在一起的网络要进行通信,会遇到许多问题需要解决
  不同的寻址方案
  不同的最大分组长度
  不同的网络接入机制
  不同的超时控制
  不同的差错恢复方法
  不同的状态报告方法
  不同的路由选择技术
  不同的用户接入控制
  不同的服务(面向连接服务和无连接服务)
  不同的管理与控制方式
(二)网络互相连接起来要使用一些中间设备
  中间设备又称为中间系统或中继(relay)系统
  (1)物理层中继系统:转发器(repeater)特点是连个端口而集线器是多个端口
  (2)数据链路层中继系统:网桥或桥接器(bridge)
  (3)网络层中继系统:路由器(router)
  (4)网桥和路由器的混合物:桥路器(brouter)
  (5)网络层以上的中继系统:网关(gateway)
(三)网络互连使用路由器
(1)当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络(也可以说第二层设备不会扩大LAN
(2)网关由于比较复杂,目前使用得较少
(3)互联网都是指用路由器进行互连的网络
(4)由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关
(四)虚拟互连网络的意义
  (1)所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性(异构的意思是:比如网络有的使用以太网、有的使用令牌环网等等,这叫异构)本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络
  (2)使用 IP 协议的虚拟互连网络可简称为 IP 网。(强调:虚拟的意思是人感觉到的,感觉是在一个网络上通信
  (3)使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节
(五)名词 internet 和 Internet 的区别:
  (1)以小写字母 i 开始的 internet(互联网或互连网)是一个通用名词,它泛指由多个计算机网络互连而成的虚拟网络。有的地方叫internetwork一般这样写,即是网络互连的意思
  (2)以大写字母 I 开始的的 Internet(因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用 TCP/IP 协议族,且其前身是美国的 ARPANET。
(六)因特网的网际协议 IP
  网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一 。与 IP 协议配套使用的还有四个协议:
  (1)地址解析协议 ARP (Address Resolution Protocol)
  (2)逆地址解析协议 RARP (Reverse Address Resolution Protocol)(备注:它是一个过时的协议,现在已经基本上不使用了。逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。
  (3)因特网控制报文协议 ICMP(Internet Control Message Protocol)
  (4)因特网组管理协议 IGMP(Internet Group Management Protocol)
三、分类的IP地址
(一)我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是惟一的 32 bit 的标识符。IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行。(备注:关于IP地址获得这部分我简单提一下:以前用bootp协议来分配IP地址,但是现在已经基本不用,它是静态的,被DHCP所取代,DHCP能够动态地分配IP地址,既可以完成bootp所完成的工作,也能完成它不能完成的工作。
(二)IP地址的编址方法
  (1)分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议
  (2)子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在 1985 年通过
  (3)构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用
(三)分类IP地址
  每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。两级的 IP 地址可以记为
  IP 地址 = { <网络号>, <主机号>}
  (1)A (0)类地址的网络号字段 net-id 为 1 字节
  (2)B(10)类地址的网络号字段 id 为 2字节
  (3)C(110)类地址的网络号字段 id 为 3 字节
  (4)D (1110)类地址是多播地址(注意和广播地址的区别:广播地址是一对全,而多播是一对多
  (5)E(11110)类地址是为了保留为今后使用
  (备注:括号中是第一个字节的前几位,用来区分类别)
(四)路由器转发分组的步骤
  (1)先按所要找的 IP 地址中的网络号 net-id 把目的网络找到
  (2)当分组到达目的网络后,再利用主机号host-id 将数据报直接交付给目的主机
  (3)按照整数字节划分 net-id 字段和 host-id 字段,就可以使路由器在收到一个分组时能够更快地将地址中的网络号提取出来
  说明:每隔 8 bit 插入一个空格能够提高可读性。采用点分十进制记法则进一步提高可读性。(备注:什么叫整数字节呢?就是8位一个字节的划分方法,有人可能迷糊,8位本来不就是一个字节吗?对,没错,如果你能想明白它为什么不用4位来作为一个网络号的原因,也就能明白8位一个字节的划分方法
(五)常用的三类IP地址
(1)A类:最大网络数为126(2的7次方-2)
  第一个可用的网络号是:1
  最后一个可用的网络号是:126
  每个网络中最大的主机数:16777214
(2)B类:最大网络数为16384(2的14次方)
  第一个可用的网络号是:128.0
  最后一个可用的网络号是:191.255
  每个网络中最大的主机数:65535
(3)C类:最大网络数为2097152(2的21次方)
  第一个可用的网络号是:192.0.0
  最后一个可用的网络号是:223.255.255
  每个网络中最大的主机数:254
六)IP地址的一些重要特点
  IP 地址是一种分等级的地址结构。分两个等级的好处是
  (1)第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
  (2)实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多接口主机(multihomed host)。由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址
  (3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的
  (4) 所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的(就是说没有什么优先级而言
  (备注:两个路由器直接相连的接口处,可指明也可不指明 IP 地址。就是说有可能两个路由器中间什么都没有除了线路,这种情况也可以给这个线路两端分配两个IP地址,它也算是一个网络,一般在长途网中使用,用的是串行口,这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址,用的是以太口。路由器的IP地址就是指某个端口的IP地址,如果用的是串行口,则下一跳IP地址是这个长途线路上的IP地址。
(七)IP地址与硬件地址
  (1)网络层及以上使用IP地址
  (2)链路层及其以下使用硬件地址
  (3)在 IP 层抽象的互联网上只能看到 IP 数据报,在具体的物理网络的链路层只能看见 MAC 帧而看不见 IP 数据报
  (4)两个路由器的 IP 地址并不出现在 IP 数据报的首部中
  (5)路由器只根据目的站的 IP 地址的网络号进行路由选择
  (6)IP层抽象的互联网屏蔽了下层很复杂的细节。在抽象的网络层上讨论问题,就能够使用统一的、抽象的 IP 地址
  (7)不变的是IP地址(因为源地址和目的地址不可能改变),在进行路由选择的时候。变化的是硬件地址。(备注:请读者想一下为什么MAC地址要变化?因为它要适应不同的局域网
(八)地址解析协议 ARP 和逆地址解析协议 RARP
  (1)不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
  (2)每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表
  (3)当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址
(九)ARP 高速缓存的作用
  (1)为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
  (2)当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
  (3)ARP协议映射地址的过程:整个转换过程是一台主机先向目标主机发送包含IP地址信息的广播数据包,即ARP请求,然后目标主机向该主机发送一个含有IP地址和MAC地址数据包,通过MAC地址两个主机就可以实现数据传输了。
  应用:在安装了以太网网络适配器的计算机中都有专门的ARP缓存,包含一个或多个表,用于保存IP地址以及经过解析的MAC地址。在Windows中要查看或者修改ARP缓存中的信息,可以使用arp命令来完成,比如在Windows XP的命令提示符窗口中键入“arp -a”或“arp -g”可以查看ARP缓存中的内容;键入“arp -d IPaddress”表示删除指定的IP地址项(IPaddress表示IP地址)。arp命令的其他用法可以键入“arp /?”查看到.(备注:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
(十)应该注意的问题
  (1)从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
  (2)只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址
(十一)为什么我们不直接使用硬件地址进行通信?
  (1)由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
  (2)连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的
(十二)IP数据报的格式
  (1)一个 IP 数据报由首部和数据两部分组成。
  (2)首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
  (3)在首部的固定部分的后面是一些可选字段,其长度是可变的。
(十三)IP数据报的详细解释:
(1)版本——占 4 bit,指IP协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)。
(2)首部长度——占 4 bit,可表示的最大数值,是 15 个单位(一个单位为 4 字节)。因此 IP 的首部长度的最大值是60字节
(3)服务类型——占 8 bit,用来获得更好的服务。这个字段以前一直没有被人们使用
(4)总长度——占 16 bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
(5)标识(identification) 占 16 bit,它是一个计数器,用来产生数据报的标识。
(6)片偏移(12 bit)指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。(举例:偏移 = 1400/8 = 175
(7)生存时间(8 bit)记为 TTL (Time To Live)数据报在网络中的寿命,其单位为秒。当TTL为0时,就会丢弃分组。
(8)协议(8 bit)字段指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程(将数据部分交给哪一个进程。)
(9)首部检验和(16 bit)字段只检验数据报的首部不包括数据部分。这里不采用 CRC 检验码而采用简单的计算方法。(之所以是这样:IP数据只作首部校验,它是尽力传递,只完成本层的功能即可,保证头部正确,即源地址和目的地址相同即可。
(10)源地址和目的地址都各占 4 字节
(11)标志—3位。标志数据包是否可拆分以及是否拆分后的数据包的最后一部分等信息;
(十四)IP 数据报首部的可变部分
  (1)IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
  (2)选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
  (3)增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。(备注:我记得在前面有这么一句话:两个路由器的IP地址并不出现在IP数据报的首部中,它只是一个导引作用,路由的作用,而我们IP数据包的首部中有源地址和目的地址是必须的。)
  (4)实际上这些选项很少被使用。
(十五)IP 层转发分组的流程
  路由器和结点交换机有些区别
  (1)路由器是用来连接不同的网络,而结点交换机只是在一个特定的网络中工作
  (2)路由器是专门用来转发分组的,而结点交换机还可接上许多个主机
  (3)路由器使用统一的 IP 协议,而结点交换机使用所在广域网的特定协议
  (4)路由器根据目的网络地址找出下一个路由器,而结点交换机则根据目的站所接入的交换机号找出下一跳(即下一个结点交换机)(备注:在路由表中,对每一条路由,最主要的是目的网络地址,下一跳地址
(十六)特定主机路由
  (1)这种路由是为特定的目的主机指明一个路由
  (2)采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由(特定主机路由顾名思义在特定情况下使用,一般不用,因为它比较占用路由器的资源
(十七)分组转换算法
(1) 从数据报的首部提取目的站的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则直接将数据报交付给目的站 D;否则是间接交付,执行(3)
(3) 若路由表中有目的地址为 D 的特定主机路由,则将数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)
(4) 若路由表中有到达网络 N 的路由,则将数据报传送给路由表指明的下一跳路由器;否则,执行(5)
(5) 若路由表中有一个默认路由,则将数据报传送给路由表中所指明的默认路由器;否则,执行(6)
(6) 报告转发分组出错
(十八)我要强调的是
  (1)IP数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”
  (2)当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入IP数据报,而是送交下层的网络接口软件
  (3)网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器
四、划分子网和构造超网
(一)划分子网。从两级 IP 地址到三级 IP 地址
  在ARPANET 的早期,IP 地址的设计确实不够合理
  (1)IP 地址空间的利用率有时很低
  (2)给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
  (3)两级的 IP 地址不够灵活
(二)三级的IP地址
  (1)从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址
  (2)这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议
(四)划分子网的基本思路 (三级的)
  (1)划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络
  (2)从主机号借用若干个比特作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个比特
IP地址 = {<网络号>, <子网号>, <主机号>}
  (3)凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器
  (4)然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网
  (5)最后就将 IP 数据报直接交付给目的主机
(五)划分子网后变成了三级结构
  (1)当没有划分子网时,IP 地址是两级结构,地址的网络号字段也就是 IP 地址的“因特网部分”,而主机号字段是 IP 地址的“本地部分”
  (2)划分子网后 IP 地址就变成了三级结构。划分子网只是将 IP 地址的本地部分进行再划分,而不改变 IP 地址的因特网部分
(六)子网掩码wildcard是通配符的意思,有些人瞎翻译,非得叫什么掩码,叫的这么神秘和高深而不能从字面意思来理解它
  (1)从一个 I P数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网的划分
  (2)使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分
  (3)默认的子网掩码:
  A类:255.0.0.0;B类:255.255.0.0 ;C类:255.255.255.0
  掩码的作用:
  子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。就是两台计算机各自的IP地址与子网掩码进行与操作(AND)运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。
(七)使用子网掩码的分组转发过程。
  (1)在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事
  (2)但在划分子网的情况下,从IP地址却不能惟一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息
  (3)因此分组转发的算法也必须做相应的改动。
(八)在划分子网的情况下路由器转发分组的算法
(1) 从收到的分组的首部提取目的 IP 地址 D
(2) 先用各网络的子网掩码和 D 逐比特相“与”,看是否和相应的网络地址  匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)
(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下  一跳路由器;否则,执行(4)
(4) 对路由表中的每一行的子网掩码和 D 逐比特相“与” 若其结果与该行的  目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,  执行(5)
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)
(6) 报告转发分组出错
五、无分类编址 CIDR
(一)划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在 1992 年因特网仍然面临三个必须尽早解决的问题,这就是:
  (1)B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕
  (2)因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)
  (3)整个IPv4 的地址空间最终将全部耗尽
(二)IP 编址问题的演进
  (1)1987年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率
  (2)在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)
(三)无分类的两级编址
  (1)无分类的两级编址的记法是:
IP地址= {<网络前缀>, <主机号>}
  (2)CIDR还使用“斜线记法”(slash notation),它又称为CIDR记法,即在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的比特数(这个数值对应于三级编址中子网掩码中比特 1 的个数)。
  (3)CIDR将网络前缀都相同的连续的 IP 地址组成“CIDR地址块”。
(四)CIDR 地址块
  (1)128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的比特数,所以主机号的比特数是 12)
  (2)这个地址块的起始地址是 128.14.32.0
  (3)在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
  (4)128.14.32.0/20 地址块的最小地址:128.14.32.0
  (5)128.14.32.0/20 地址块的最大地址:128.14.32.255
  (6)全 0 和全 1 的主机号地址一般不使用

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多