第四章 网络互联_yongchaocsdn的博客-程序员宝宝

技术标签: 计算机网络  

4.1 网络层概述

  • 互联

网络互连的动力:更大范围的资源共享

网络互连:HOST-LAN,LAN-LAN/WAN

  • 互连在一起的网络要进行通信,会遇到许多问题需要解决,如:
  1. 不同的寻址方案
  2. 不同的最大分组长度
  3. 不同的网络接入机制
  4. 不同的超时控制
  5. 不同的差错恢复方法
  6. 不同的状态报告方法
  7. 不同的路由选择技术
  8. 不同的用户接入控制
  9. 不同的服务(面向连接服务和无连接服务)
  10. 不同的管理与控制方式
  • 异构网络

  1. 在体系结构和通信协议方面具有差异的计算机网络。
  2. 在寻址方法、分组长度、路由选择、差错恢复等方面不同,无法直接通信。
  • 互联互通需采用网络层中继系统对不同协议的语法、语义和时序进行转换。

  • 互联方法

  1. 两两互联的方式:共需N(N-1)个网络层中继系统。
  2. 与中立中继系统互联的方式:将自己协议映射到IP协议。
  • 网络互相连接起来要使用一些中间设备

  • 中间设备又称为中间系统或中继(relay)系统
  1. 物理层中继系统:转发器和集线器(repeater)。
  2. 数据链路层中继系统:网桥(bridge)。
  3. 网络层中继系统:路由器(router)。
  4. 网络层以上的中继系统:网关(gateway)。
  • 从体系层次观点考察网络互连

  • 物理层:在电缆段之间复制比特信号(无地址)


  • 数据链路层:在网段之间转发数据帧(根据物理地址)


  • 网络层:在网络之间转发分组(根据逻辑地址)


  • 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
  • 网关由于比较复杂,目前使用得较少。
  • 互联网都是指用路由器进行互连的网络。
  • 由于历史原因,许多有关TCP/IP的文献将网络层使用得路由器称为网关。

问题:分组在各种各样的网络之间如何传输?


因特网采用了一种与机器无关、操作系统无关、语言无关,中立的中继系统(IP系统)方式来解决异构网络互联问题


  • 所谓虚拟互联网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层看起来好像是一个统一的网络。
  • 使用IP协议的虚拟互连网络可简称为IP网

网络层提供了端系统端系统的通信服务

  • 底层的直接连接的网络可为异构,网络层提供互联互通 互联网可以由多种异构网络互连而成
  • 多跳传送分组,需要网间路由器进行分组转发和路由选择
  • 分组的直接交付和间接交付

  • 直接交付:将分组直接交付给目的主机而不需要通过路由器。
  • 间接交付:源与目的不在一个直接连接的网络中,分组通过路由器转发。



  • 如果我们只从网络层考虑问题,那么IP数据报就可以想象是在网络层中传送。

4.2 网络层服务模型

  • 在计算机网络领域,网络层应该向运输层提供怎样的服务("面向连接"还是"无连接")曾引起了长期的争论。
  • 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
  • 网络层提供的两种服务

  1. 无连接的网络服务:数据报(datagram)服务
  2. 面向连接的网络服务(虚电路(virtual-circuit,VC)服务


网络随时接受主机发送的分组(即数据报)网络为每个分组独立的选择路由。

  • 数据报服务

  1. 在网络层无呼叫建立
  2. 路由器:没有端到端连接的状态 无网络级"连接"的概念
  3. 分组使用目的主机地址转发 相同源和目的对,可能采用不同的路径

    主机H1先向主机H5发出一个特定格式的控制信息分组,要求进行通信,同时寻找一条合适路由。若主机H5同意通信就发回响应,然后双方就建立了虚电路。

  • 虚电路服务

  • 一条VC由下列组成:
  1. 从源到目的地的路径
  2. VC号是标识沿路径每条链路的号码
  3. 沿路径中路由器转发表的项
  • 属于VC的分组携带一个VC号
  • 每条链路的VC号必须改变
  1. 新的VC号来自转发表

  • 虚电路服务
  1. 用于建立、维护和拆除VC
  2. 用于ATM、帧中继

  • 虚电路是逻辑连接

  1. 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接
  2. 请注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
数据报服务和虚电路服务优缺点的归纳




  • 因特网采用的设计思路

  1. 网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。简单灵活、尽最大努力交付(best effort delivery)!
  2. 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。可靠性由网络的主机中的运输层负责。
  3. 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
  4. 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。

4.3 IP协议

  • 网际协议IP及其配套协议

  • IP数据报的格式

  • 一个IP数据报由首部和数据两部分组成。
  • 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
  • 在首部的固定部分的后面是一些可选字段,其长度是可变的。

  • 可变部分:从1个字节到40个字节不等,取决于所选择的项目
  • 版本:占4bit,指IP协议的版本,目前的IP协议版本号为4(即IPv4)
  • 首部长度:占4bit,可表示的最大数值 是15个单位(一个单位为4字节) 因此IP的首部长度的最大值是60字节
  • 区分服务:占8位,用来获得更好的服务,在就标准中叫做服务类型,但实际上一直未被使用过。1998年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段
  • 总长度:占16bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。
  • 标识(identification):占16bit,它是一个计数器,用来产生数据报的标识。
  • 标志(flag):占3位,目前只有前两位有意义。标志字段的最低位是MF(More Fragment)。MF=1表示后面"还有分片"。MF=0表示最后一个分片。标志字段中间的一位是DF(Don't Fragment)。只有当DF=0时才允许分片。
  • 片偏移:12bit,较长的分组在分片后某片在原分组中的相对位置。片偏移以8个字节为偏移单位。
  • 分组分片

  • 回顾最大传输单元(MTU)的定义
  1. 物理网络对帧的数据部分的最大字节数限制
  2. 由硬件决定
  • 数据封装提出的问题

1.IP分组的大小由软件定义


2.选择合适的分组长度适应不同的MTU

  • 选择网络中最小的MTU:在MTU较大的网络传输会造成硬件能力浪费
  • 选择网络中最大的MTU:在MTU较小的网络不能实现数据报到帧的封装

3.如何选择分组长度?如何实现数据封装?

  • 适应不同MTU的解决方案

  • 分组长度的定义原则
  1. 与硬件无关
  2. 以"方便"为原则(取本地网络的MTU)
  • 定义分片机制
  1. 在IP数据包长度大于网络MTU的情况下,将其分成若干较小的部分传输,每部分称为片。
  • 在何处实行分片

  • 分片方法



  • 生存时间:8bit,记为TTL(Time To Live) 表示数据报在网络中至多可经过多少个路由器。
  • 协议:8bit,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程

  • 受不检验和:16bit字段只检验数据报的首部不包括数据部分。这里不采用CRC检验码而采用简单的计算方法
  • 源地址和目标地址都各占4字节
  • 可选字段
  1. IP首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
  2. 选项字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
  3. 增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度称为可变的。这就增加了每一个路由器处理数据报的开销。
  4. 实际上这些选项很少被使用。
  • 什么是IP地址

  • 我们把整个因特网看成为一个单一的、抽象的网络。IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围唯一的32bit的标识符。
  • 最初,因特网赋号管理局(Internet Assigned Number Authrity,IANA)控制着所有分配的编号,并制定政策。
  • 后来,由因特网名字与号码指派公司(Internet Corporation for Assigned Names and Numbers,ICANN)行使IANA的职能。
  • 大多数单位从不会直接与ICANN联系,而是单位->本地ISP->更高一级的ISP->ICANN授权的地址注册机构
  1. APNIC,负责亚洲和太平洋地区(Asia/Pacific Region)。
  2. ARIN,负责北美区域(North America Region)。
  3. RIPE NCC,负责欧洲、中东、中亚等区域(Europen,the Middle East,and Central Asia)。
  4. LACNIC,负责拉美和加勒比海区域(Latin America and some Caribbean IsIands)。
  5. AFRINIC,负责非洲区域(Africa Region)。
  • 我国向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址。
  • IP地址的编址方法

  1. 分类编址:只是最基本的编址方法,在1981年就通过了相应的标准协议。
  2. 子网编址:这是对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。
  3. CIDR:这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。
  • IP地址的两种表示方法

  • 一个对比

  • IP的地址结构

  • 分类的IP地址

  1. 每一类地址都有两个固定长度的字段组成,其中一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号host-id,它标志该主机(或路由器)
  2. 两级的IP地址可以记为:IP地址::={<网络号>,<主机号>} ::=代表"定义为"

A类 大型网络

B类 中型网络

C类 小型网络

D类 多播

E类 试验目的


路由器转发分组的步骤

  • 先按所要找的IP地址中的网络号net-id把目的网络找到。
  • 当分组到达目的网络后,再利用主机号host-id将数据报直接交付给目的主机。
  • 按照整数字节划分net-id字段和host-id字段,就可以使路由器在收到一个分组时能够更快地将地址中的网络号提取出来

IP地址的分类/A类


  • 前1字节标识网络地址,后3字节标识主机地址。
  • 每个网络最多可容纳(2^24-2)台主机。
  • 从高位起,前1位为"0",第1字节用十进制表示的取值范围为"1-126"
  • 具有A类地址特征的网络总数为(2^7-2)个

IP地址的分类/B类


  • 前2个字节标识网络地址,后2字节标识主机地址
  • 每个网络最多容纳(2^16-2)台主机
  • 从高位起,前2位为"10",第1字节用十进制表示的取值范围为"128-191"
  • 具有B类地址特征的网络总数为2^14-1个

IP地址的分类/C类


  • 前3个字节标识网络地址,后1字节标识主机地址
  • 每个网络最多容纳(2^8-2)台主机
  • 从高位起,前3位为"110",第1字节用十进制表示的取值范围为"192-223"
  • 具有B类地址特征的网络总数为2^21-1个

IP地址的分类比较


IP地址

    从Internet的观点来看,具有相同net-id的主机属于同一个网络,同一个网络中不同的主机具有不同的host-id。

    不同的网络通过路由器进行相连!

特殊IP地址


1)回环测试地址

主机将IP数据报回传自身的地址-IP地址第一个字节为127 例:回送地址为127.0.0.1

可用的环回测试地址范围为:127.0.0.1-127.255.255.254

2)广播地址

1.直接广播地址

主机地址部分为全"1",用于向某个网络的所有主机广播。例:主机212.111.44.136 所在网络的广播地址为212.111.44.255

2.有限广播地址(255.255.255.255)

在未知本网络地址情况下用于本网广播

3)网络地址

主机地址部分全部定义为"0",用于区分网络

例:主机211.111.44.136,所在网络的地址为212.111.44.0

专用IP地址

  1. 10.0.0.0-10.255.255.255(1个A类网络)
  2. 172.16.0.0-172.31.255.255(16个连续的B类网络)
  3. 192.168.0.0-192.168.255.255(256个连续的C类网络)

具有以上IP地址的数据包会被路由器过滤,不会在Internet上传输。

自动专用IP地址

    主机如果设置为自动获取IP地址,当网络中没有架设DHCP服务器时,或者DHCP服务器出了问题的时候,操作系统会自动赋予本机一个类似169.254.x.x的IP地址。

    IANA把B类地址快169.254.0.0-169.254.255.255定义为自动专用IP地址(Automatic Private IP Addressing,APIPA),这些地址将不能在Internet上使用。

    APIPA使得在ad-hoc(不等)无线网络这样的局域网上的计算机可以互相通信而不需要配置DHCP服务器或静止IP地址。

    如果在提供有DHCP服务器的网路上计算机的IP地址是APIPA地址,就意味着该计算机无法联系上DHCP服务器。该计算机可能没有正确接入网络或者DHCP服务器掉线。

    注意APIPA地址永远不会有默认网关,以为APIPA设计为只在单一子网上工作

    使用APIPA IP地址的计算机会定期尝试与DHCP服务器联系,以免DHCP服务器在客户端计算机启动后才联机上线。

子网编址

划分子网

从两级IP地址到三级IP地址

  • 在ARPANET的早期,IP地址的设计确实不够合理。
  1. IP地址空间的利用率有时很低。
  2. 给每一个物理网络分配一个网络号,浪费了地址空间
  3. 两级的IP地址不够灵活。
  • 从1985年起在IP地址中又增加了一个"子网号字段",使两级的IP地址变成为三级的IP地址
  • 这种做法叫做划分子网(subnetting)。划分子网已成为因特网的正式标准协议。

什么是子网

    将网络进一步划分为相对独立的组成部分,每个部分称为这一网络(或更高一级子网)的子网。

    划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。


如何划分子网

  • 根据地理分布特点划分

- 易于组网技术实现

楼群内采用局域网技术构成子网

楼群间选择合适的传输媒体和互连设备使不同子网互连。

- 节省经费

  • 根据网络应用特点划分

- 将共享相同网络资源的主机划分为同一子网,减少子网间的网络传输流量,提高系统性能。

- 将具有相同安全密级程度的主机划分为同一子网,保障系统的安全。

划分子网的基本思路

  • 从主机号借用若干个比特作为子网号subnet-id,而主机号host-id也就相应减少了若干个比特。即IP地址::={<网络号>,<子网号>,<主机号>}
  • 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id,先找到连接在本单位网络上的路由器。
  • 然后此路由器在收到IP数据报后,再按目的网络号net-id和子网号subnet-id找到目的子网。
  • 最后就将IP数据报直接交付给目的主机。

子网地址特性


划分子网后的IP地址


子网掩码定义

  • 从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网的划分
  • 使用子网掩码(subnet mask)可以找出IP地址中的子网部分。



总结:子网掩码中"1"的长度表示:

1)没有划分子网时,表示net-id的长度

2)划分了子网时,表示net-id+subnet-id的长度

A类、B类和C类IP地址的默认子网掩码


子网掩码的作用

1)划分子网

例如:一个公司有一个C类地址,想把公司内部网络划分为6个子网,那么它采用的子网掩码是什么?


例如:一个公司有一个C类地址(202.117.128.0),采用掩码255.255.255.224,写出所有子网地址。


2)获得主机网络地址

IP地址 & 掩码 = 网络地址


举例1:


举例2:


子网掩码应用举例

例:主机IP地址:202.112.32.62

                            -.-.-.00111110

       默认子网掩码:255.255.255.0(C类地址)

       实际子网掩码:255.255.255.224

因此:

    未划分前的网络地址:202.112.32.0(无实际意义)

    划分后的网络地址:202.112.32.00100000

    直接广播地址:202.112.32.00111111

另一种表示法:202.112.32.62/27

例1:已知IP地址是141.14.72.24,子网掩码是255.255.192.0。试求网络地址。


例2:在上例中,若子网掩码改为255.255.224.0。试求网络地址,讨论所得结果。


不同的子网掩码得出相同的网络地址。但不同的掩码的效果是不同的。

使用子网掩码的分组转发过程

  • 在不划分子网的两级IP地址下,从IP地址得出网络地址是个很简单的事。
  • 但在划分子网的情况下,从IP地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。

因此,分组转发的算法也必须做相应的改动。







在划分子网的情况下路由器转发分组的算法

(1)从收到的分组的首部提取目的的IP地址D。

(2)先用路由器直接连接的网络的子网掩码和D逐比特相"与",看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。

(3)若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。

(4)对路由表中的每一行的子网掩码和D逐比特相"与",若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。

(5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)报告转发分组出错。

注意:

    为支持特定主机路由和默认路由,规定全"1"的掩码对应特定主机路由,全"0"的掩码对应默认路由。

无分类编址CIDR

当时面临的问题:

  • 随着Internet的飞速发展,可用的IP地址空间正在缩小。A类地址和B类地址的空间实际上已经耗尽。整个IPv4的地址空间最终将全部耗尽。

虽然可以用"分配多个C类地址"取代"分配一个B类地址",但是如果一个单位分配了256个C类地址而不是一个B类地址,则需要256个路由表项,而不是1个!

  • 因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个),核心的Internet路由器处理能力也逐渐耗尽。
  • 1987年,RFC1009就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码VLSM(Variable Length Subnet Mask)可进一步提高IP地址资源的利用率。
  • 在VLSM的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择CIDR(Classless Inter-Domain Routing)。

CIDR与之前的8位、16位、24位网络标识符(或前缀)限制相反。CIDR允许任意长度的网络地址前缀存在。即:CIDR使用各种长度的"网络前缀"(network-prefix)来代替分类地址中的网络号和子网号。


  • 在一个有类别的系统中,路由器确定一个地址的类别,并根据该类别识别网络位和主机位。
  • 在CIDR中,路由器使用前缀来描述有多少位是网络位,余下的则是主机位。

CIDR地址块

  • 128.14.32.0/20表示的地址块共有2^12个地址(因为斜线后面的20是网络前缀的比特数,所以主机号的比特数是12)。这里20 被称为网络前缀长度



注意:

只要知道这个地址块中的某个地址前缀长度,就可以确定该地址块的地址范围

例如,已知某个地址128.14.33.1/20,可先让该地址与掩码"与"操作,求得网路地址为128.12.32.0。然后便可以写出地址范围128.14.32.0至128.14.47.255

CIDR记法的其他形式


为什么使用CIDR?
  • 提高了IPv4的可扩展性和效率;
  • 将有类别的寻址方式替换成了更灵活、浪费更少的无类别方案;
  • 加强了路由聚合,亦即超网(Supernetting),它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。

路由聚合和超网

  • 超网

    超网是指用一个掩码将多个有类别的网络聚合成"单个网络"的过程。超网和路由聚合是同一方法的不同名称

    例如,一个单位可以将申请到的几个C类地址块合并为一个更大的地址块。但是这些C类地址必须满足下面的条件:

    (1)C类地址个数必须是2的整数次方(2,4,8,16)

    (2)这些地址必须是连续的(块与块之间没有间隙)



观察:8个网络地址中前21个比特相同,将它们合并到一个可以表示多个网络的公共网络号,这就是路由聚合。





通过使用前缀地址来汇总路由带来怎样的好处?
  • 更高效的路由选择
  • 重新计算路由表或者在路由表中查找匹配项所消耗的CPU时间大幅减少。
  • 对路由器的内存需求降低。



  • 超网与地址分配

例如:一个Z公司需要供400台主机使用的地址。在有类寻址系统中:(1)Z公司可以申请一个B类地址,(2)Z公司也可以申请两个C类地址

当Z公司采用方法(2),则因特网路由器将需要为Z公司维护2条路由表项,而不是一条。

    在无类寻址系统中,超网允许Z公司使用自身需要的地址空间而不造成浪费,而且不会增加不必要的路由选择开销。

- Z公司要做的是向它的网络服务器提供商申请一个地址块。

- 网络服务提供商ISP评估Z公司的需求,并从ISP的大CIDR地址块中分配一个地址空间给Z公司。

- 假设负责给Z公司分配地址块的ISP管理着一个大地址块:207.21.0.0/16 相当于有256个C类地址组成的地址块。

- ISP给Z公司分配一个地址块:207.21.2.0/23,改地址的主机有9位,可以满足400个主机地址的需求。




判定哪些子网的地址能够聚合:

条件1,也是基本条件,是多个IP地址块必须拥有相同的高位比特,且各子网间地址是连续的(这是地址聚合定义中所要求的);

条件2,要聚合的地址个数必须是2的幂;

条件3,要聚合的地址中最小的那个网络地址中要汇聚的那个字节的十进制必须是要聚合的地址个数的整数倍。



最长前缀匹配
  • 使用CIDR时,路由表中的每个项目由"网络前缀"和"下一跳地址"组成。在查找路由表时可能会得到不止一个匹配结果。
  • 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。
  • 网络前缀越长,其地址块就越小,因而路由就越具体。
  • 最长前缀匹配又称为最长匹配最佳匹配



可变长子网掩码VLSM(Variable-length subnet masks)
  • RFC 1878中定义了可变长子网掩码(VariableLength Subnet Mask,VLSM)。VLSM规定了如何在一个进行了子网划分的网络中的不同部分使用不同的子网掩码。这对于网络内部不同网段需要不同大小子网的情形来说非常有效。
  • VLSM实际上是一种多级子网划分技术。
  • 这种策略只能在所用的路由协议都支持的情况下才能使用。



    当为一个IP网分配不止一个子网掩码时,可以认为网络使用了可变长子网掩码VLSM。

    好处:能克服单一子网掩码所造成的固定数目、固定大小子网的局限。如果你想把你的网络分成多个不同大小的子网,可以使用可变长子网掩码,每个子网可以使用不同长度的子网掩码。

例如:将图中的子网172.17.3.0/24在划分为几个更小的子网。



将图中的子网172.17.3.0/24按同一个掩码/27划分


其中选择三个网络地址分配给三个子网。



再将其中一个/27子网更进一步划分成多个/30子网。


在其中选取三个网络地址分配给三个点到点链路。



切记:如果已经分配使用了某个子网中的地址,那这个子网不能再细化分。(下面标红的子网不能在划分!)


IP地址的配置

  • 为了让协议软件通用和便于移植,协议软件的编写者把协议软件参数化。
  • 不同的计算机,配置不同的协议参数。
  • 在协议软件运行之前,必须给每一个参数赋值。在协议软件中给出这些参数赋值的动作叫做协议配置。
  • 具体的配置信息有哪些则取决于协议栈。

对于一个使用TCP/IP协议栈的计算机,它的协议软件需要配置的项目有哪些?


  • 早期(在无盘计算机的情况下)

(1)操作系统和连网软件可以存储在ROM中。

(2)上述四条信息不能存储在ROM中,这些信息与机器的特定配置有关,说明了这台机器所连接到的网络。

(3)引导程序协议BOOTP可将协议配置信息提供给无盘计算机。

(4)BOOTP基于UDP,采用客户/服务器模式实现。


  • BOOTP为什么被淘汰?

(1)BOOTP是静态配置协议。客户的物理地址与IP地址的绑定必须是预先确定的。绑定信息由人工维护。

(2)BOOTP无法自动处理以下情况:若主机从某个物理网络移动到另一个物理网络?若一个新的主机加入到网络中?

现在广泛使用动态主机配置协议DHCP
  • DHCP和BOOTP向后兼容。
  • DHCP提供静态和动态地址分配,分配可以是人工或自动的。


  • DHCP有两个数据库:

    固定地把物理地址绑定到IP地址,支持静态地址分配。

    拥有可用IP地址池,支持动态地址分配。

  • 当DHCP服务器接收到请求后,首先检查它的静态数据库,如果存在所请求的物理地址项目,就返回相应的IP地址(永久)。如果静态数据库中不存在这个项目,DHCP服务器就从可用IP地址池中选择一个IP地址指派给客户,并把这个项目加到动态数据库中。
  • 从IP地址池获得的地址都是在有限时间内使用的临时IP地址。
DHCP工作过程


1.发现阶段

    需要IP地址的主机在启动时间就像DHCP服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为DHCP客户。

    注:客户发送请求报文时因为此时客户还不知道它本身的IP地址,所以IP首部中的源IP地址通常是0.0.0.0,目的IP地址为255.255.255.255。

2.提供阶段

    本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。

    DHCP服务器的回答报文叫做提供报文(DHCPOFFER)。

    凡收到DHCP发现报文的DHCP服务器都发出DHCP提供报文,因此DHCP客户可能收到多个DHCP提供报文。

3.选择阶段

    DHCP客户从多个DHCP服务器中选择其中的一个,并向所选择的DHCP服务器发送请求报文(DHCPREQUEST)。

4.确认阶段

    被选择的DHCP服务器发送确认报文(DHCPACK),进入已绑定状态,客户开始使用得到的临时IP地址了。

5.更新阶段

    当客户在确认阶段得到临时IP地址后,将根据服务器提供的租用期T设置两个计时器T1和T2,它们的超时时间分别是0.5T和0.875T。

    T1时间到时,客户发送DHCPREQUEST报文要求更新。

        若DHCP服务器发回确认报文DHCPACK。客户得到了新的租用期,重新设置计时器。

        若DHCP服务器发回否认报文DHCPNACK。客户必须立即停止使用原来的IP地址,重新申请IP地址。

        若服务器无响应,客户在2T时间到时,重新发送DHCPREQUEST报文。

6.重新登录

    客户不需要再发送DHCPDISCOVER报文了,而是直接发送包含前一次所分配的IP地址的DHCPREQUEST请求信息。

    当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCPACK确认信息。

7.主动解约

    客户可以随时提前终止DHCP服务器提供的租用期,这时只需向DHCP服务器发送释放报文(DHCPRELEASE)即可。可以使用命令:ipconfig /release

ARP

物理地址回顾
  • 定义:组成网络的各个站点都具有一个机器可以识别的地址,称为该站点的物理地址(或称为硬件地址)。
  • 特点:长度和格式有物理网络的硬件决定,不同网络具有各自的地址定义方式。物理地址不能保证在整个互联网上具有唯一性,但在同一网络上物理地址是唯一的 。


IP地址与硬件地址






为什么要将IP地址转换为物理地址

不管网路层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用物理地址。


  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的物理地址转换工作,因此几乎是不可能的事。
  • 连接到因特网的主机都拥有统一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用地址转换协议来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
如何实现地址转换





ARP分组的封装


ARP高速缓存的作用

为什么需要ARP高速缓存?

    在多部分情况下,两台主机之间不会仅传递一个数据报。如果每次传递数据报之前都要使用arp请求获取目标的物理地址,通信效率会受到很大影响。

    因此,

- 每个主机都在本地设置一个ARP高速缓存(ARP Cache),存放最近解析出来的IP/MAC映射关系。

- 发送方在发送数据之前,首先在本地ARP高速缓存中查找,如果找到直接使用,否则才会广播arp请求报文,进行地址解析。

    例如:主机A要发数据给主机E,但是不知道E的MAC地址,于是发起ARP请求。

  • 当E收到A的ARP请求分组时,以及当A收到E的ARP响应分组时,都会将对方主机的地址映射写入自己的ARP高速缓存中。以后给对方发送数据报时就更方便了。例如:
  • 当主机A欲向本局域网上的某个主机E发送IP数据报时,就先在其ARP高速缓存中查看有无主机E的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。


ARP命令

格式:arp -参数

ARP命令仅对ARP高速缓存操作,不会发送ARP请求!




跨网通信时ARP的使用方法

问题:

    ARP是解决同一个物理网络内的主机或路由器的IP地址和硬件地址的映射问题。(直接交付)但是,大部分情况下,源站与目的站并不在同一个物理网络内,且他们之间可能会跨越多个路由器(间接交付)。这种情况下,ARP如何工作呢?


(1)主机A判断D是否与自己处于同一物理网络,如果不是(急需间接交付),则必须将数据发送给它的默认网关--路由器R,再由R转发给D.

发送前,先利用ARP获取E0的物理地址MAC3

然后发送 IP数据报:IP1->IP2    MAC帧:MAC1->MAC3

(2)路由器R把数据从E1端口转发给主机D。

转发前,利用ARP获取D的物理地址MAC2

然后发送 IP数据报:IP1->IP2   MAC帧MAC4->MAC2

使用ARP的四种典型情况
  • 发送方是主机,要把IP数据报发送到本网络上的另一个主机(直接交付)。这时用ARP找到目的主机的硬件地址。
  • 发送方是主机,要把IP数据报发送到另一个网络上的一个主机(间接交付)。这时用ARP找到本网络上的默认网关路由器的硬件地址。剩下的工作由这个路由器来完成。
  • 发送方是路由器,要把IP数据报转发到本网络上的一个主机(直接交付)。这时用ARP找到目的主机的硬件地址。
  • 发送方是路由器,要把IP数据报转发到另一个网络上的一个主机(间接交付)。这时用ARP找到下一跳路由器的硬件地址。剩下的工作由这个路由器来完成。


ICMP

  • 为了提高IP数据报交付成功的机会,在网际层使用了因特网控制报文协议ICMP(Internet Control Message Protocol)。
  • ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
  • ICMP不是高层协议,而是IP层的协议
  • ICMP保文作为IP层数据报的数据,加上IP首部,组成IP数据报发送出去。



  • Type:定义ICMP报文的类型(功能)。
  • Code:每种类型可再根据Code字段来定义各种不同用途
  • Checksum:长度为2Bytes,记录ICMP报文的错误检验码
ICMP报文分类



ICMP(Type=3:Destination Unreachable)

IP路由过程中,若出现以下问题,路由器或目的主机便发出"目的不可达"ICMP报文通知源端:

  • 路由器无法将IP数据报传送出去。
  • 目的主机无法处理收到的IP数据报。


ICMP(Type=11:Time Exceeded)



ICMP(Type=8/0:Echo Request/Echo Reply)

确认事项:

B主机存在且运作正常

A、B之间的网络连接状况正常

A、B之间的IP路由正常




NAT

  • 为了解决IPv4地址短缺的问题,IETF提出了NAT。
  • IP地址分为公有地址(Global address),私有地址(Private address)
  • NAT技术的主要作用是将私有地址转换为公有地址。

公网(Public Network),也被称为全局网络(Global Network)或外网(External Network)。公网结点使用的地址为公有地址或称全局地址。

私网(Private Network),也被称为本地网络(Local Network)和内网(Internal Network)。私网结点使用的地址为私有地址或称内部地址。





Basic NAT




NAPT

NAPT(Network Address Port Translation)

  • 网络地址端口转换。
  • NAT通过转换表中的TCP和UDP端口号进行映射的区分。
  • 端口号16bit,所以一个内部全球地址理论上可以对应2^16个内部专有地址。
  • NAT设备要指定供分配的公有地址池
  • NAPT试图保持原有的端口号

  • 试图保持NAPT端口号,如果这个原始的端口号已被分配,NAT将查找其他可用端口,如果没有,将转移到下一个IP地址,并试图再次分配原始的原端口号。


Easy IP

  • NAT设备直接使用出接口的IP地址作为转换后的源地址;
  • 不用预先配置地址池
  • 工作原理与普通NAPT相同,是NAPT的一种特例;
  • 适用于动态获得IP地址的场合。


NAT的主要缺点:

    增加了延迟

    丧失了端到端的IP追踪能力。当分组在多个NAT跳上经历了许多次的地址转换后,要跟踪该分组是很困难的。当然这样黑客也很难确定分组的源了,也是优点。

4.4 路由选择协议及其算法

路由的概念

  • 路由是指导IP数据报发送的路径信息


  • 路由表是路由器转发报文的判断依据。


  • 理想的路由算法应具有的特性

1)算法必须是正确的和完整的

2)算法在计算上应简单

3)算法应能自适应通信量和网络拓扑的变化

4)算法具有稳定性

5)算法应该是公平的

6)算法应是最佳的

路由选择

路由选择协议:目的:决定从源到目的地通过网络的"好的路径(路由器序列)"


路由选择分类

静态路由选择--非自适应的路由选择

管理员将路由信息输入路由器配置中,只要网络拓扑改变,管理员必须手动更新这些静态路由条目。

动态路由选择--自适应的路由选择

管理员输入配置命令启动动态路由选择后,只要从互连网络中收到新的信息,路由选择进程就自动更新路由信息。

静态路由选择的应用

当一个网络只有一条路径可以到达时,可以使用静态路由,避免了动态路由选择的开销。




静态路由选择的优点

1)简单直接

2)无需路由软件

3)不需要传播路由信息,因此不消耗带宽

动态路由选择

动态路由选择允许网络快速的更新和适应于变化。


Internet采用的路由选择协议


什么是自治系统(Autonomous System,AS)

  • 自治系统指在单一实体管理之下的路由器和网络群组。它的典型管理实体是ISP,此外,一些公司企业、大学或政府机构也可能拥有自己的自治系统。
  • 可以把AS看成一个路由器组
  • 每个自治系统都有一个全局唯一的编号,即:自治系统号(ASN)
  • ASN由ICANN地区注册机构负责分配,它是一个16bit的标识符,范围为1-65535(其中64512-65535保留不分配)
  • 当一个自治系统向其它自治系统传播可达性信息时,使用自治系统编号来标识自己。
  • 一个AS有时也被称为是一个路由选择域(routing domain)
  • AS自主地决定在本系统内应采用何种路由选择协议。
  • 一个AS内的所有路由器在本系统内必须是连通的。
  • 一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
一句话:自治系统就是拥有独立而统一的路由策略,在同一管理机构下,由一系列路由器和网络构成的系统。


路由选择算法的分类

对于内部网关协议,可以根据路由选择算法是分布式的还是全局的区分。

  • 分布式路由选择算法
  • 全局路由选择算法
    分布式路由选择算法
  • 路由器知道:物理相连的邻居,它到邻居的链路费用。
  • 通过迭代计算及与相邻结点交换信息的过程,使各个结点能够计算出到达某个目的结点的最低费用路径。
  • 代表算法:距离向量(Distance-Vector)算法
     全局路由选择算法
  • 以所有结点之间的连通性及所有链路的费用为输入,计算最有路径。
  • 要求每一个路由器知晓完全的网络拓扑、链路费用信息。
  • 代表算法:链路状态(Link-State)算法
距离向量算法基本思想

    一个路由器知道到达邻居的距离,如果邻居知道到达目的地的距离,则能算出本路由器到达目的地的距离。

  • 每个节点周期性的向其邻居发送自己的距离向量(DV);
  • 当结点X接收到来自邻居v的新距离向量时,它使用Bellman-Ford方程更新自己的距离向量:



路由器定期向邻居发送路由更新,邻居路由器根据收到的路由更新来更新自己的路由表,然后在向外发送更新后的路由。


每个路由器收到来自相邻路由器的路由表信息。



RIP协议(Routing Information Protocol)

  • 路由信息协议RIP是内部网关协议IGP中简单的、最先得到广泛使用的协议。
  • RIP基于举例向量路由,使用Bellman-Ford算法计算路由表。
  • RIP协议要求网络中的每一个路由器都要维护从它自己到其每一个目的网络的距离记录。
  • 每一个路由器都要维护一个路由表(Routing Table)
  • 其中包含该路由器到达每个目的网络的条目。


关于RIP中的"距离"

  • RIP协议中的"距离"也称为"跳数"(hop count),因为每经过一个路由器,跳数就加1。
  • 从一个路由器到直接连接的网络的距离定义为1.
  • 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加1.
  • RIP认为一个好的路由就是它通过的路由器的数目少,即"距离短"。
  • RIP允许一条路径最多只能包含15个路由器。"距离"的最大值为16时即相当于不可达。


RIP的三个要点:
  • Sharing hnowledge about the entire AS以自治系统为范围(指该路由器目前了解到的目的网络,不一定包括当前AS内所有目的网络。),每个路由器分享自己到达目的网络的信息。
  • Sharing only with neighbors 仅和相邻路由器分享。
  • Sharing at regular intervals 按固定的时间间隔分享信息(当前路由表的全部信息),例如,每个30秒。












发现故障

RIP存在的一个问题是当网络出现故障时,要经过比较长的时间才能将"坏消息"传送到所有的路由器。







发现故障引起的问题

- 网络1的无效更新会不断循环下去,计数到无穷大(16)。

- "网络1不可达"这样的坏消息一直不被得知,网络中的路由器仍然认为网络1可达

- 网络状态长时间无法收敛

解决方法

    通过水平分割(split horizon)消除路由选择环路




  • 解决方法

通过路由毒化+抑制时间,能够在一定程度上避免路由环路产生。

抑制时间:当一条路由的距离值变为无穷大时,该路由进入抑制状态。在被抑制状态,只有来自同一邻居,且度量值小于16的路由更新才会被路由器接收,取代不可达路由项。

确保不可达信息不被错误的可达信息取代。

基于距离向量的路由选择协议特点总结

  • 收敛速度慢

(1)路由器在分发路由信息前必须重新计算其距离向量。

(2)坏消息循环问题,即计数到无穷问题,距离向量必须被来回传送多次;

  • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

OSPF

  • 和RIP一样,OSPF也用于AS内部路由选择。
  • RIP是基于举例向量的路由选择协议,OSPF是基于链路状态的路由选择协议。
  • OSPF被认为是RIP的继任者,并且有许多先进特性。1987年IETF提出,广为熟悉的版本v2由RFC2328(1998年4月)定义。
  • Neighborship:

直接相连(adjacence)的Router之间的关系。

  • Link State Database:

相邻的Router交换Link State Advertisement;

建立、并更新数据库,记载网络上个Router及网络连接的基本信息。

  • Forwarding Table:

记载通过SPF(Shortest Path First,最短路径优先)算法--Dijkstra算法,计算出的到达目的地的最佳路径。

  • 区域(Area)

在RIP协议中:

    AS是一个平面结构,并无区域的定义。

    AS范围就是一个RIP路由域

在OSPF路由协议中:

    讲一个AS划分为若干个较小的范围,叫做区域(area)。每个区域都运行自己的OSPF算法,区域内每台路由器都向该区域内其他路由器广播其链路状态。

为什么要划分区域?

当网络越来越庞大时,带来以下问题:

    LSA传送频繁,带宽需求增加;

    SPF计算过于频繁,Router负担增加;

    Routing Table(Forwarding Table)不稳定。


  • 一个OSPF路由域可以划分为多个路由器群集,即一个AS被划分为多个编号的区域。区域不能相互重叠。
  • 每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。在一个区域的外部来看,该区域的拓扑结构和细节是不可见。

    每个AS中有一个主干区域,称为0号区域。其他所有区域都要求连接到主干区域上,所以,从AS的任何一个区域出发,经过主干区域,总有有可能到达该AS的任何其他区域。



- Area ID为32bit数字 可用IP位址格式表示   也可用十进制数字显示(例:Area 0.0.0.0,or Area 0)

- 0.0.0.0或0保留作为表示Backbone Area

- 其他Area都须与Backbone直接透过Area Border Router联系。

  • OSPF区分4种路由器分类

1)内部路由器(Internal Routers),完全在一个区域的内部;内部路由器上仅仅运行其所属区域的OSPF运算法则。

2)区域边界路由器(Area Border Router),连接两个或多个区域,正常情况下必须要与Area0连接。区域边界路由器运行与其相连的所有区域定义的OSPF运算法则。

3)主干路由器(Backbone Router),若路由器有一个接口位于主干区域。

4)AS边界路由器(Autonomous System Border Router),负责与其他AS交换路由信息,位于主干区域。

4中路由器允许重叠,例如:

    所有的边界路由器自然就是主干的一部分。

    在主干区域内的路由器,如果它并不属于其它的区域,那它也是一台内部路由器。


AS内部的OSPF路由选择的一般步骤

源区域内的路由选择:分组被路由到一个ABR

主干路由选择:分组从源区域ABR被路由到目的区域ARB

目的区域内的路由选择:分组从目的区域ABR被路由到目的地

Metric

OSPF协议允许管理员给路由器指定cost,被称为metric,metric可以基于一种服务类型(如最小时延、最大吞吐量等)。


  • 链路状态

链路状态信息包括:当前路由器与那些路由器相邻;当前路由器到达邻居的度量值(metric)

  • 链路状态路由(LInk State Routing)

Link State Routing是一个过程,在这个过程中,每个路由器与这个Area内的所有其他路由器分享"自己的链路状态信息"。

  • 链路状态路由(Link State Routing)的三个要点



问题:

    链路状态协议采用Flooding可靠传播的过程中如何防止收到重复的链路状态信息?

    为了传播自己的链路状态信息,每个结点会创建一个更新分组,这个分组带有一个序号。一个结点产生一个新的更新分组,序号就加1.这样是为了确保 旧的链路状态被新的链路状态代替。



链路状态路由协议依靠两种机制:






  • OSPF在同步了Link State DataBase后,稳定的状况下不会交换信息。

除非:

  • 在路由器初始启动期间,或在该路由器上的路由协议过程启动期间;
  • 每个30分钟固定地Link State更新同步;
  • 网络有变动,送出的更新;
  • 定期送出的Hello。


链路状态数据库(LSDB)特点

  • 所有在同一个Area中的Router的LSDB的内容是一致的。
  • 不同的Area的LSDB是各自独立的,ABR与一个以上的Area连接,维护与其相连的每个区域的LSDB。
  • 不同的Area的LSDB的SPF算法是分开进行运算的。
五种OSPF的分组类型


Hello(问候)

    用来发现和维持邻居的可达性。若40秒没有收到问候,就认为不可达

Database Description Packet(数据库描述)

    向邻居给出自己的链路状态数据库中的所有链路状态的摘要信息。

Link State Request Packet(链路状态请求)

    当一个路由器关于路由信息需要知道更详细的内容时,它可以发送一个或多个Link State Request Packet给邻居,请求邻居发送其链路状态数据库的特定相详细信息。

    对方会用Link State Update Packet作回答。

Link State Update Packet(链路状态更新)

    向邻居发送链路状态通告(洪泛全区域)

    LInk State Update Packet是OSPF的核心;

    路由器使用这种分组将其链路状态通知给邻站

Link State Acknowledgment Packet(链路状态确认)

    对Link State Update Packet确认

    每个路由器通过Link State Acknowledgment Packet,确认收到了邻居发来的每个Link State Update Packet


OSPF支持四种链路类型











七种OSPF状态

Down

Init

Two-Way(双向)

ExStart(准启动)

Exchange(交换)

Loading(加载)

Full adjacency(去毗邻)

Down

    Down状态下,OSPF进程还没有与任何邻居交换信息,OSPF在等待进入"Init"状态。

Init(Initiage)

    当一个接口收到第一个Hello分组时,路由器就进入Init状态。

    这意味着,路由器知道有个邻居正在等待将关系发展到下一步(Two way基本关系,full Adjacency高级关系)

Two-Way(双向状态)

    当一台路由器看到自己出现在一台邻居路由器的发来的hello分组中,它就进入了Two way状态。

    要进一步建立毗邻关系,不仅依赖于Hello分组,还有其他4种分组。

ExStart(准启动)

    ExStart是迈向全毗邻的第一步,两个邻居路由器用Hello分组来协商它们之间谁是主,谁是从,当它们之间确定了主从角色后,它们就进入了Exchange状态,并开始发送路由信息。

Exchange(交换)

    在Exchange状态,双发使用类型2分组Database Description Packet来描述它们的链路状态数据库,并将所学到的信息与自己现存的链路状态数据库比较。

Loading(加载)

    在Loading状态下,双方类型3分组Link State Request Packet(用于请求有关某链路状态的完整更新信息)和类型4分组Link State Update Packet(含有确切的链路状态信息LSA)进行交互。LSU分组由类型5分组LSAcks确认。

Full adjacency(全毗邻)

    Loading状态结束后,路由器变成full adjacency状态。此时,路由器与其他路由器的链路状态数据库已同步。

OSPF vs RIP

  • RIP使用平面拓扑。OSPF使用层次拓扑。
  • OSPF在维护路由表时比RIP使用较少的带宽。
  • RIP基于跳数选路,有可能选择了很慢的路径。OSPF基于和带宽相关的度量进行选路。OSPF选择最快的无环路径。
  • RIP简单,使用路由器的内存和处理器资源较少。
  • RIP最大跳数15,限制了网络规模。OSPF路由信息不受物理跳数的限制。
  • RIP在收到路由信息后要先更新自己的路由表,再把更新后的路由表发出去,即先本地计算再把路由信息发送出去,所以收敛速度慢
  • RIP是本路由器把到达域内其它结点的度量告诉他的邻居。OSPF是本路由器将自己的链路状态信息告诉所有其他结点。
  • RIP域中每个路由器只知道自己到达其他结点的度量,但不知道网路完整的拓扑信息。OSPF中每个路由器知道网络中任意两个相邻结点间的度量。

OSPF特点总结

  • 支持分层次的系统,定义了区域,多个区域连接到主干域,可以减少路由选择开销,加快收敛,限制某个区域,提高网络性能。
  • 链路状态信息通过链路状态公告(LSA)发布到网络上的每台路由器。
  • 每台路由器通过LSA信息建立一个关于网络的拓扑数据库
  • 使用触发的路有更新,快速反应网络变化,减小协议本身对网络流量的占用。
  • 具有健壮性和可扩展性,支持大型网络。

外部网关协议(域间路由选择协议)

问题:距离向量路由选择和链路状态路由选择都是域内路由选择协议。它们是否适合在自治系统之间的路由选择,为什么?

分析:当域变得很大时

    可能超越距离向量路由选择协议的距离限制。

    链路状态路由选择就需要非常大的资源来计算路由表,由于使用了洪泛,会产生很大的通信量。

域间路由需要有第三种路由选择协议,称之为"路径向量路由选择"

路径向量路由选择----BGP

全称:Border Gateway Protocol,边界网关协议。目前唯一用来在AS之间的动态路由选择协议。




  • 关心可达性。而不是根据度量寻找最佳路由。因为每个AS使用的度量并不统一。
  • AS之间必须考虑策略。

因此,BGP没有依度量值进行路由计算的算法,BGP只是力求寻找一条能够到达目的网络,符合策略,且避免路由环路的好路由。

工作原理:

    在一个AS中的BGP发言人创建一个路由表,并把它通知给相邻AS中的BGP发言人。

    以上这点和"距离向量路由选择"中的处理方法是一样的,但是通知的内容不同,每个发言人不是定期告诉邻居们关于到达每个目的网络的距离向量,而是告诉它们到达每个目的网络的确切路径(路径向量)。







BGP路由信息中携带了所经过的全部AS序列,这样,接收该路由信息的BGP路由器可以明确地知道此路由信息是否源于自己。

方法是:它会检查自己的自治系统是否出现这条路径中。如果是,就忽略此路由信息。


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

4.5 路由器工作原理

路由器概述

  • 工作在第三层(网路层)
  • 具有多个输入/输出端口的专用计算机。
  • 每个输入/输出端口都与一个网络相连。路由器在网络之间进行分组转发。
  • 帧经过输入端口,解封为第三层分组后,路由器将其目的IP地址与路由表的条目做匹配,找到合适的输出端口,再封装将对应的帧发送出去。






转发与路由选择

转发表对比

  • 交换机的转发表是"MAC地址-端口"表,存放的是端口与目的MAC地址之间的关系,要用帧中的MAC地址查表;
  • 路由器中的转发表示"网络地址-端口"表,存放的是端口与目的网络地址之间的关系,故要从IP数据报中提取IP地址,并解析出其中的网络前缀来查表。
  • 转发是当交换结点收到分组后,根据其目的地址查找转发表,并找出应从结点的哪一个接口将该分组发送出去。
  • 路由选择是构造路由表的过程

关系:路由表是根据一定的路由选择算法得到的,而转发表又是根据路由表构造出的。




控制器卡

  • 执行路由选择协议,通过与网络中的其他路由器交换网络拓扑和路由选择信息,维护本地路由器转发表。
  • 根据分组中的目的IP地址,在路由转发表中查找匹配,确定分组的输出端口。
  • 执行路由器中的网络管理功能。

大型网络主干路由器的路由转发表往往有成千上万个条目,怎样设法减小路由表的查找时间就成为一个非常重要的问题。

解决办法:

  •  路由转发表存放在一个称为二叉线索的数据结构中。
  • 根据进行查找的最长前缀构造一颗二叉线索。
  • 树中的每一级对应于目的地址之中的一个比特。查找一个地址从树根开始。





4.6 移动IP技术

概念

    IP结点只有通过一个配置了IP地址的接口才能通信。

    问题:结点移动了位置怎么办?

    传统方法:改变网络连接位置时,移动的结点必须只能中断先前正在进行的通信,重新配置接口的IP地址,才能进行下一次网络通信。

    当结点在接入网络之间移动时,仍能维持正在进行的连接的无线技术,称为移动IP(mobil IP)




移动网络寻址


  • 一个移动站必须有一个原始地址,即永久地址或归属地址(home address)。
  • 假定将移动结点较为固定的居所(或移动结点初始申请入网的位置)称为归属网络(home network)
  • 永久地址和归属网络的关联是不会改变的。


  • 在归属网络中代表移动结点执行移动管理功能的实体称为归属代理(home agent)


  • 在外部网络中帮助移动结点执行移动管理功能的实体称为外部代理(foreign agent)


  • 外部代理的任务一是:要为移动站创建一个临时地址,叫做转交地址(care of address),其网络前缀与被访问网络一致。


  • 外部代理的任务二是:及时把移动站的转交地址通知给归属代理。

注意:转交地址(care of address)是供移动站、归属代理、以及外部代理使用的,各种应用程序都不使用转交地址。


4.7 IPv6

IPv6数据报的首部

  • 将首部长度变为固定的40字节,称为基本首部(base header)。
  • 将不必要的功能取消了,首部的字段数减少到只有8个了。
  • 取消了首部的检验和字段,加快了路由器处理数据报的速度。
  • 在基本首部的后面允许有零个或多个扩展首部。
  • 所有的扩展首部和数据合起来叫做数据报的有效载荷(payload)或净负荷

IPv6数据报的一般形式



  • 将扩展首部留给路径两端的源站和目的站主机来处理。
  • 数据报途中经过的路由器都不处理这些扩展首部(只有一个例外,即逐跳选项扩展首部)。
  • 这样就大大提高了路由器的处理效率。

在RFC 2460中定义了六种扩展首部:

  • 逐跳选项
  • 路由选择
  • 分片
  • 鉴别
  • 封装安全有效载荷
  • 目的站选项

IPv6编址

IPv6数据报的目的地址可以是以下三种基本类型地址之一:

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

(2)多播(multicast)多播是一点对多点的通信。

(3)任播(anycast)这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报只交付其中的任意一个即可,通常是距离最近的一个。

注:IPv6没有明确地广播地址的概念。

IPv6将实现IPv6的主机和路由器均称为结点。

IPv6地址是分配给结点上面的接口。

  • 一个结点可以有多个单播地址。
  • 一个结点接口的单播地址可用来唯一地标志该结点。

IPv6具有更大的地址空间,它将地址从IPv4的32位增大到了128位,使得地址空间约含有2^128个IP地址,其数量是IPv4的2^96倍。

为了便于阅读和记忆,RFC1884规定的标准语法建议采用"冒号十六进制记法",即把IPv6地址的128位(16个字节)写成8个16位的无符号整数,每个整数用4个十六进制数表示,这些整数之间用冒号(:)分开。其书写格式为x:x:x:x:x:x:x:x,其中每一个x代表四位十六进制数。例如:









从IPv4向IPv6过渡

  • 方法一:双协议栈首部转换。双协议栈(dual stack)是指在完全过渡到IPv6之前,使一部分主机(或路由器)装有两个协议栈,一个IPv4和一个IPv6.


  • 方法二:隧道技术。IPv6数据报进入IPv4网络之前,将整个IPv6数据报作为数据部分,封装为IPv4。离开IPv4网络时,再恢复。








版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yongchaocsdn/article/details/80068492

智能推荐

win10 无法访问samba文件,提示SMB1是不安全协议解决方案_wellnw的博客-程序员宝宝

方式一:修改win10,增加SMB1支持https://blog.csdn.net/maxzero/article/details/81410620方式二:修改samba服务配置(GL.iNet路由)ssh登录到路由后台,执行sed -i 's/security = share/security = user/' /etc/samba/smb.conf.template/et...

陷门函数Trapdoor Function_Black_BearB的博客-程序员宝宝_陷门函数

陷门函数:正向计算是很容易的,但若要有效的执行反向计算则必须要知道一些secret/key/knowledge/trapdoor(知识?),也称为伪随机置换,可用于构造公钥密码系统。若 f 为陷门函数,则 y = f (x) 是很容易计算的,但若要计算 x = f(-1) (y) 则是困难的,若已知一些额外的knowledge(trapdoor/key) k , 则计算  x = f(-1...

机器学习笔记--SVM实现人脸识别_svm人脸识别代码_憨豆的小泰迪的博客-程序员宝宝

上述代码可以用以下代码代替,博主在ORL数据集上测试发现两者符号相反,数值相等;但由于后面对验证集进行pca降维时,需要用到训练集的参数进行标准化(原因见。③load_dataset()和train_test_split可以用以下函数代替,在ORL数据集上测试发现准确率有随机性,但相差不大;②运行gen_data.py生成数据集文件dataset.npy。),所以建议还是使用sklearn自带的api进行降维处理;4--SVM实现人脸识别。

vue跨域解决方法_乘风破浪kk的博客-程序员宝宝

vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' header is present on the requested resource.” 这种跨域错误。要想本地正常的调试,解决的办法有三个:一、后台更改header12header('Access-Control-Allow-...

java继承activity_Android中如何继承自定义的Activity_小七不要胖的博客-程序员宝宝

一直困扰我的Activity继承问题解决了。通过这样的方式继承,可以简化具有相同样式的Activity的代码。比如一个项目中会有很多自定义ActionBar的Activity顶部是只包含返回按钮和标题,在父类中实现有这些共性,返回按钮和设置标题的工作就无需在子类中再做了。只需在父类中实现点击返回时finish,设置标题的文字,子类拿过去就可以用,很方便,大大简化了代码和初始化的工作。public ...

部署kafka集群_一只行走鸟的博客-程序员宝宝

zookeeper简介:&nbsp;&nbsp;&nbsp; ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是大数据生态中的重要组件。它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户&nbsp;&nbsp;&nbsp;Zookeeper工...

随便推点

Review of RGB-T and MFGNet: Dynamic Modality-Aware Filter Generation for RGB-T Tracking_大别山伧父的博客-程序员宝宝

许多RGB-T跟踪器试图利用自适应加权方案(或注意力机制)来实现鲁棒特征表示。与这些工作不同的是,我们提出了一种新的动态模态感知滤波器生成模块(MFGNet),在实际跟踪中,通过自适应调整卷积核来增强可见光数据和热数据之间的信息通信。给定图像对作为输入,首先用骨干网对其特征进行编码。然后,我们将这些特征映射连接起来,生成带有两个独立网络的动态模态感知滤波器。使用可见滤波器和热滤波器分别对其对应的输入特征图进行动态卷积运算。受残差连接的启发,将生成的可见和热特征图与输入特征图进行汇总。增强后的特性映射将被输入

Genetic Algorithm遗传算法,两个代码实现例子_链巨人的博客-程序员宝宝

通过了解遗传算法的概念,应用和代码实现,来充分理解和学习遗传算法。什么是遗传算法?可参考这篇文章:link应用:(1)工程设计(2)旅行商问题(3)机器人(4)著名的组合优化问题「背包问题」比如,你准备要去野游 1 个月,但是你只能背一个限重 30 公斤的背包。现在你有不同的必需物品,它们每一个都有自己的「生存点数」(具体在下表中已给出)。因此,你的目标是在有限的背包...

eclipse通过类名搜索源码的快捷键_myCat、的博客-程序员宝宝

ctrl+shift+t ,如下所示输入源码的类名就可以了。

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生比赛信息管理系统38iiq_浩焱毕设程序源码的博客-程序员宝宝

对于即将毕业或者即将做课设的同学而言,由于经验的欠缺,面临的第一个难题就是选题,确定好题目之后便是开题报告,如果选题首先看自己学习那些技术,不同技术适合做不同的产品,比如自己会些简单的Java语言,会使用数据库,以及会web前端,那管理类系统、电商系统等都是不错的选择。ssm基于渐进式框架Vue的“I咖啡”定制化选购系统的设计与实现bv508。ssm基于web的佳茗天香茶品销售平台的设计与实现z2m56。ssm基于ssm框架的动漫网站设计与实现q6dcx。ssm基于ssm框架的流浪动物保护平台68249。

vtk实战(十六)——解析STL文件_挥剑段天涯的博客-程序员宝宝_vtk对stl文件采样少

主要采用vtkSTLReader()类读取“.stl” 文件,文件为ASCII或二进制文件,vtkSTLReader()类会自动检测文件是否是ASCII或二进制。#include vtkPolyData.h>#include vtkSTLReader.h>#include vtkSmartPointer.h>#include vtkPolyDataMapper.h>#include v

Addressable,打包exe后资源加载失败_Wayne-wyj的博客-程序员宝宝_unity addressables打包後加載不到

Addressable,打包exe后资源加载失败这里的问题不是指写的代码有误,而是官方长久以来的版本Bug,打包出的BundleName跟Hash似乎有所冲突,导致加载失败.具体信息参考原址:https://forum.unity.com/threads/invalid-path-in-assetbundleprovider-on-android-device.1048286/简要说来,就是需要更改Group的BundleName设置默认应该是AppendHash,笔者为了方便识别自行调成了NoH

推荐文章

热门文章

相关标签