网络层
网络层的功能
- 设计思路:向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务;
- 优势:网络的造价大大降低,运行方式灵活,能够适应多种应用;
异构网络互联
- 中继系统
- 物理层中继系统:中继器,集线器;
- 数据链路层中继系统:网桥或交换机;
- 网络层中继系统:路由器;
- 网络层以上的中继系统:网关;
- 使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,他依然是同一个网络,一般并不称为网络互联;因此网络互联通常是指用路由器进行网络互联和路由选择;
- 虚拟互联网络:
- 逻辑互联网络;
- 互联起来的各种物理网络的异构性本来是客观存在的,但是通过IP就可以使这些性能各异的网络层看起来好像是一个统一的网络;
- 这种使用IP的虚拟互联网络可简称为IP网络;
- 好处:
- 当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互联的具体的网络异构细节;
路由与转发
- 路由选择:
- 根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表;
- 按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由;
- 分组转发:
- 处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等;
- 路由器根据转发表将用户的IP数据报从合适的端口转发出去;
拥塞控制
- 判断网络进入拥塞状态方法:观察网络的吞吐量与网络负载的关系
- 随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已经进入“轻度拥塞”状态;
- 如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已经进入拥塞状态;
- 如果网络的负载继续增大,而网络的吞吐量下降到0,那么网络就可能已进入死锁状态;
- 流量控制和拥塞控制的区别:
- 流量控制往往是指在发送端和接收端之间的点对点通信量的控制,流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收;
- 拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性问题,涉及网络中所有主机、路由器及导致网络传输能力下降的所有因素;
- 拥塞控制的两种方法:
- 开环控制:
- 静态的预防方法;
- 在设计网络时,事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞;
- 一旦整个系统启动并运行,中途就不需要再修改;
- 在决定前不考虑当前网络的状态;
- 闭环控制:
- 基于反馈环路的概念,动态方法;
- 事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题;
- 开环控制:
路由算法
静态路由与动态路由
- 静态路由算法:
- 非自适应路由算法,指由网络管理员手工配置的路由信息;
- 当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息;
- 不能及时适应网络状态的变化,对于简单的小型网络,可以采用静态路由;
- 动态路由算法:
- 自适应路由算法;
- 路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果;
- 能改善网络的性能并有助于流量控制;
距离-向量路由算法
- 所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点,这种路由选择表包括:每条路径的目的地;路径的代价;
- 更新路由选择表的情况:
- 被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由;
- 发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离较小的代价,这种情况下,就用经过发送路由信息结点的新路由替换路由表中到达那个目的地的现有结点;
- 距离-向量路由算法实质:
- 迭代计算一条路由中的站段数或延迟时间,从而得到达到一个目标的最短(最小代价)通路;
- 要求每个结点在每次更新时都能将他的全部路由表发送给所有相邻结点;
- RIP算法,采用“跳数”作为距离的度量;
链路状态路由算法
- 要求每个参与该算法的结点都具有完全的网络拓扑信息;
- 两项任务:
- 主动测试所有邻接结点的状态,两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络;
- 定期地将链路状态传播给所有其他结点;
- 三个特征
- 向本自治系统中所有路由器发送信息使用的是泛洪法,即路由器通过所有端口向所有相邻端口的路由器发送信息,而每个相邻路由又将此信息发往其所有相邻路由器(除刚刚发来信息路由器);
- 发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的的部分信息;
- 链路状态:说明本路由器与哪些路由器相邻及该链路的“量度”;
- 对于OSPF,链路“量度”主要用来表示费用、距离、时延、带宽等;
- 链路状态:说明本路由器与哪些路由器相邻及该链路的“量度”;
- 只有当链路状态发生变化时,路由器才向所有路由器发送此信息;
- 优点:
- 每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的计算;
- 链路状态不加改变的传播,易于查找故障;
- 就有更好的规模可伸展性;
层次路由
- 当网络规模扩大时,路由器的路由表成比例的增大,这不仅会消耗越来越多地路由缓冲区空间,而且需要用更多CPU时间来扫描路由表,用更多地带宽来交换路由状态信息,因此路由选择必须按照层次的方式进行;
- 两大类路由选择协议:
- 一个自治系统内部所使用的路由选择协议称为内部网关协议IGP,也称域内路由选择,具体协议有RIP和OSPF等;
- 自治系统之间所使用的路由选择协议称为外部网关协议EGP,也称域间路由选择,用于不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优路径,具体协议有BGP;
路由协议
自治系统
- 单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由;
- 一个自治系统的所有路由在本自治系统内都必须是连通的;
域内路由与域间路由
内部网关协议IGP
- 在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用什么路由选择协议无关;
外部网关协议EGP
- 将路由信息传递到另一个自治系统中所使用的协议称为外部网关协议;
- 自治系统和内部网关协议、外部网关协议
路由信息协议RIP
- 分布式的基于距离向量的路由选择协议,最大优点是简单;
RIP规定
- 网络中的每个路由器都要维护从他自身到其他目的网络的距离记录,称为距离向量;
- 距离也称跳数,规定从一个路由器到直接连接网络的距离为1,而每经过一个路由器,距离跳数就加1;
- RIP认为好的路由就是他通过路由器的数目少,即优先选择跳数少的路径;
- RIP允许一条路径最多只能包含15个路由器,因此距离等于16时表示网络不可达;
- 默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表;
- 在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同;但在新的RIP2中,支持变长子网掩码和CIDR;
RIP的特点
- 仅和相邻路由器交换信息;
- 路由器交换的信息是当前路由器知道的全部信息,即自己的路由表;
- 按固定的时间间隔交换路由信息,如每隔30秒;
- 经过若干次RIP广播后,所有路由器都最终知道了整个IP网络的路由表,成为RIP最终是收敛的,通过RIP收敛后,每个路由器到每个目标网络的路由的都是距离最短的,哪怕还存在另一条高速低时延但路由较多的路由;
距离向量算法
- <目的网络N, 距离d, 下一跳路由器地址X>
- 步骤:
- 对地址为X的相邻路由器发来的RIP报文,先修改此报文中所有项目:把“下一跳”字段中的地址都改为X,并把所有“距离”字段加1;
- 对修改后的RIP报文中的每个项目,执行如下步骤:
- 当原来的路由表中没有目的网络N时,把该项目添加到路由表中;
- 当原来的路由表中有目的网络N,且下一跳路由器地址时X时,用收到的项目替换原路由表中的项目;
- 当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中好的项目,否则什么也不做;
- 如果180秒还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,把距离设置为16;
- 返回;
- 优点:
- 实现简单,开销小,收敛过程较快;
- 缺点:
- RIP限制了网络的规模,它能使用的最大距离为15;
- 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也就越大;
- 网络出现故障时,会出现慢收敛现象,俗称,坏消息传得慢,使更新过程的收敛时间长;
- 慢收敛:需要较长时间才能将此信息传送到所有路由器;
开放最短路径优先OSPF协议
OSPF协议的基本特点
- 对不同的链路可以根据IP分组的不同服务类型TOS而设置成不同的代价,因此对有不同类型的业务可计算出不同的路由,十分灵活;
- 如果到同一目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径,称为多路径间的负载平衡;
- 所有在OSPF路由器之间交换的分组都有鉴别功能,因而保证了仅在可依赖的路由器之间交换链路状态信息;
- 支持可变长度的子网划分和无分类编址CIDR;
- 每个链路状态都带上一个32位的序号,序号越大,状态就越新;
OSPF的基本工作原理
- 路由器最终建立一个链路状态数据库,这个数据库实际上就是全网的拓扑结构图,在全网范围内是一致的;
- 每个路由器根据全网拓扑结构图,使用dijkstra最短路径算法计算从自己到各个目的网络的最优路径,依此构造自己的路由表;
- 链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路由表;
OSPF的五种分组类型
- 问候分组:用来发现和维持邻站的可达性;
- 数据路描述分组:向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息;
- 链路状态请求分组:向对方请求发送某些链路状态项目的详细信息;
- 链路状态更新分组:用洪泛法对全网更新链路状态;
- 两路状态确认分组:对链路更新分组的确认;
注意 :OSPF使用IP数据报传送,RIP报文作为UDP数据报的数据部分;
边界网关协议BGP
- BGP使用环境不同的原因
- 因特网的规模太大,使得自治系统之间路由选择非常困难;
- 对于自治系统之间的路由选择,要寻找最佳路由非常困难;
- 自治系统间的路由选择必须考虑有关策略;
- BGP是应用层协议,是基于TCP的;
- 工作原理;
- 每个自治系统的管理员要选择至少一个路由器作为该自治系统的BGP发言人;
- 一个BGP发言人要与其他自治系统中的BGP发言人交换信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息;
- 所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由;
- 每个BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议;
- BGP特点:
- BGP交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少很多;
- 每个自治系统中的BGP发言人的数目是很少的,这样就使自治系统之间的路由选择不致过分复杂;
- BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列;
- BGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需在发生变化时更新有变化的部分,这样做对节省网络带宽和减少路由器的处理开销都有好处;
- BGP-4的4中报文:
- 打开报文:用来用相邻的另一个BGP发言人建立关系;
- 更新报文:用来发送某一路由的信息,以及列出要撤销的多条路由;
- 保活报文:用来确认打开报文并周期性地证实邻站关系;
- 通知报文:用来发送检测到的差错;
三种协议的比较
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换结点 | 和本结点相邻地路由器 | 网络中的所有路由器 | 和本结点相邻的路由表 |
交换内容 | 当前本路由器知道的全部信息,即自己的路由器 | 与本路由器相邻的所有路由器的链路状态 | 首次:整个路由表;非首次:有变化的部分 |
IPv4
IPv4分组
- 现在普遍使用的IP(版本4);
- IP定义数据传输的基本单元:IP分组以及确切的数据格式;
IPv4分组格式
-
由首部和数据部分组成;
-
首部长度固定,共20B,是所有IP分组必须有的;
-
在首部固定部分后面有一些可选字段,长度可变,用来提供错误检测及安全等机制;
-
IP数据报格式
-
IP首部重要部分字段含义:
- 版本:指IP的版本,目前广泛使用的版本号为4;
- 首部长度:占4位,可以表示的最大十进制数为15,以32位为单位,最大值位60B,最常用首部长度是20B,此时不使用任何选项;
- 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报最大长度为216-1 = 65535B,以太帧的最大传送单元MTU为1500B,因此当一个IP数据报封装成帧时,数据报的总长度一定不能超过下面的数据链路层的MTU值;
- 标识:占16位,是一个计数器,每产生一个数据报就加1,并赋值给标识字段,但他不是序号(IP是无连接服务),当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报;
- 标志:占3位,最低位MF,MF = 1表示后面还有分片,MF = 0表示最后一个分片;中间位DF,只有当DF = 0 才允许分片;
- 片偏移:占13位,较长的分组在分片后,某片在原分组中的相对位置,片偏移以8个字节为偏移单位,即每个分片的长度一定是8B的整数倍;
- 生存时间TTL:占8位,数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环,路由器在转发分组前,先把TTL减1,若TTL被减为0,则该分组必须丢弃;
- 协议:占8位,指出此分组携带的数据使用哪种协议,6为TCP,17为UDP;
- 首部校验和:占16位,IP数据报首部校验和之校验分组的首部,而不校验数据部分;
- 源地址字段:占4B,标识发送方的IP地址;
- 目的地址字段:占4B,标识接收方的IP地址;
注意
在IP数据报首部中有三个关于长度的标记,其对应单位分别是:首部长度4B,总长度1B,片偏移8B;
IP数据报分片
- IP分片例子
网络层转发分组的流程
- 路由器执行分组转发算法:
- 从数据报的首部提取目的主机的IP地址D,得出目的网络地址N;
- 若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付;
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;
- 若路由表中有到达网络N的路由,则把数据报传送给路由表所指明的下一跳路由器;
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
- 报告转发分组出错;
注意
- 得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将IP地址通过ARP转换成MAC地址,将其放到MAC帧的首部,然后根据这个MAC地址找到下一跳路由器;
- 在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥再转发帧时,不改变帧的源地址;
IPv4地址与NAT
IPv4地址
-
连接到因特网上的每台主机或路由器都分配一个32比特的全球唯一标识符,即IP地址;
-
IP地址 := {<网络号> <主机号>};
-
网络号标志主机或路由器所连接到的网络,一个网络号在整个因特网范围内必须是唯一的;
-
主机号标志该主机或路由器;
-
分类的IP地址
-
不用做主机的IP地址
- 主机号全为0表示本网络本身;
- 主机号全为1表示本网络的广播地址,又称直接广播地址;
- 127.0.0.0保留为环回自检地址,表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上;
- 32位全为0,即0.0.0.0表示本网络上的本主机;
- 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址;
-
常用的三种类别IP地址的使用范围
网络类别 | 最大可用网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中的最大主机数 |
---|---|---|---|---|
A | 27-1 | 1 | 126 | 224-2 |
B | 214-1 | 128.1 | 191.255 | 216-2 |
C | 221-1 | 192.0.1 | 223.255.255 | 28-2 |
- IP地址特点
- 由网络号和主机号两部分组成,是一种分等级的地址结构;
- 分等级好处:
- 在分配IP地址时只分配网络号,主机号由网络单位自行分配,方便了IP地址的管理;
- 路由器仅根据目的主机所连接网络号来转发分组,减小了路由表所占的存储空间;
- 分等级好处:
- 是标志一台主机或路由器和一条链路的接口;
- 用转发器或网桥连接的若干LAN仍然是同一个网络,同一个广播域;
- 所有分配到网络号的网络都是平等的;
- 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的,路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址;
- 由网络号和主机号两部分组成,是一种分等级的地址结构;
网络地址转换
- 通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址;
- 使得整个专用网只需要一个全球IP地址就可以与因特网相连通,由于专用网本地IP地址可重用,所以NAT大大节省了IP地址的消耗;
- 私有IP地址网段:
- A类:1个A类网段,10.0.0.0 ~ 10.255.255.255
- B类:16个B类网段,172.16.0.0 ~ 172.31.255.255;
- C类:256个C类网段,192.168.0.0 ~ 192.168.255.255;
- 在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发,这种采用私有IP地址的互联网称为专用互联网或本地互联网,私有IP地址也称可重用地址;
注意
普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址,而NAT路由器在转发IP数据报时,一定要更换其IP地址,转换源地址或目的地址,普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号;
子网划分与子网掩码、CIDR
子网划分
- 两级IP地址的缺点:
- IP地址空间的利用率有时很低;
- 给每个目的网咯分配一个网络号会使路由表变得太大而使网络性能变坏;
- 两级的IP地址不够灵活;
- 子网划分的基本思路:
- 子网互粉纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络;
- 从主机号借用若干比特作为子网号,当然主句号也就相应减少了相同的比特;
- 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器,然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网,最后把IP数据报直接交付给目的主机;
子网掩码
- 使用子网掩码来表达对原网络中的主机号的借位;
- 路由器在相互之间交换信息时,必须把自己所在网络或子网的子网掩码告诉对方,路由表中的每个条目,除要给出目的网络地址和下一跳地址外,还要同时给出该目的网络的子网掩码;
- 使用子网掩码时路由器的分组转发算法如下:
- 从收到的分组首部提取目的IP地址,记为D;
- 先判断是否为直接交付,对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配,若匹配则将分组直接交付;
- 若路由表中由目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;
- 对路由表的每一行中的子网掩码和D逐位相“与”,其结果为N,若N与该行的目的网络地址相配,则将该分组传送给该行指明的下一跳路由器;
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;
- 报告转发分组出错;
无分类域间路由选择(CIDR)
- 主要特点:
- 消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间;
- 将网络前缀都相同的连续IP地址组成“CIDR地址块”;
- CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将五分类编址地路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找,最常用地数据结构就是二叉线索;
ARP、DHCP和ICMP
IP地址与硬件地址
- IP地址式网络层使用的地址,是分层次等级的;
- 硬件地址是数据链路层使用的地址,他是平面式的;
注意
- 在IP层抽象的互联网上只能看到IP数据报;
- 虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择;
- 在局域网的数据链路层,只能看见MAC帧,而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装,因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断变换的,这也决定了无法使用MAC地址跨网络通信;
- 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节,只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信;
- 路由器由于互联多个网络,因此他不仅有多个IP地址,也有多个硬件地址;
地址解析协议(ARP)
- 完成IP地址到MAC地址的映射;
- ARP工作在网络层,其工作原理为:
- 首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系;
- 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址;
- 此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址;
- 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致;
- 如果不相同就忽略此数据包;
- 如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据报,告诉对方自己是它需要查找的MAC地址;
- 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据报,表示ARP查询失败;
- ARP的4种典型情况:
- 发送方是主机时,要把IP数据报发送到本网络上的另一台主机,这时用ARP找到目的主机的硬件地址;
- 发送方是主机时,要把IP数据报发送到另一个网络的一台主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成;
- 发送方式路由器时,要把IP数据报转发到本网络上的一台主机,这时用ARP找到目的主机的硬件地址;
- 发送方式路由器时,要把IP数据报转发到另一个网络上的一台主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成;
动态主机配置协议(DHCP)
- DHCP是应用层协议,是基于UDP的;
- DHCP服务器聚合DHCP客户端的交换过程如下:
- DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址;
- DHCP服务器找到“DHCP发现”消息后,像网络中广播“DHCP提供”消息,其中包括提供DHCP客户机的IP地址和相关配置信息;
- DHCP客户机收到“DHCP提供”消息,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址;
- DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机;
- 采用UDP而不采用TCP的原因:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接;
网际控制报文协议(ICMP)
- ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去,ICMP是IP层协议;
- ICMP报文种类:ICMP差错报告报文和ICMP询问报文;
- 5种类型:
- 终点不可达:当路由器或主机不能交付数据报时;
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时;
- 时间超过:当路由器收到生存时间TTL为零的数据报时;
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段值不正确时;
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器;
- 不应发送ICMP差错报文的几种情况:
- 对ICMP差错报告报文不在发送ICMP差错报告报文;
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文;
- 对具有组播地址的数据报都不发送ICMP差错报告报文;
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文;
- ICMP询问报文:
- 回送请求和回答报文;
- 时间戳请求和回答报文;
- 掩码地址请求和回答报文;
- 路由器询问和通告报文;
IPv6
IPv6的主要特点
- 解决“IP地址耗尽”问题的措施:
- 采用无分类编址CIDR,使IP地址的分配更加合理;
- 采用网络地址转换NAT方法以节省全球IP地址;
- 采用更大地址空间的新版本的IPv6;
- 前两种方法只是延长了IPv4地址分配完毕的时间,只有第三种方法从根本上解决了IP地址耗尽的问题;
- IPv6主要特点:
- 更大的地址空间:IPv6将地址从IPv4的32位增大到128位,字节数16B是IPv4字节数4B的平方;
- 拓展的地址层次结构;
- 灵活的首部格式;
- 改进的选项;
- 允许协议继续扩充;
- 支持即插即用、自动配置;
- 支持资源的预分配;
- IPv6只有在包的源节点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上来说,IPv6不允许分片,不允许类似IPv4的路由分片;
- IPv6首部长度必须是8B的整数倍,而IPv4是4B的整数倍;
- 增大了安全性,身份验证和保密功能是IPv6的关键特征;
IPv6地址
- IPv6地址可以是一下三种基本类型:
- 单播:传统的点对点通信;
- 多播:一点对多点通信,分组被交付到一组计算机的每台计算机;
- 任播:目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机;
- IPv6拓展了IPv4地址的分级概念:
- 第一级指明全球都知道的公共拓扑-顶级;
- 第二级指明单个场点-场点级;
- 第三级指明单个网络接口;
- 作用:使路由器能够更快地查找路由;
- IPv4向IPv6过渡的两种策略:
- 双协议栈技术
- 在一台设备上同时装有IPv4和IPv6协议栈,这台设备既可以和IPv4网络通信,又可以和IPv6网络通信;
- 路由器:不同结构分别配置;
- 计算机:同时拥有两个地址;
- 隧道技术
- 将整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报可以在IPv4网络的隧道中传输;
- 双协议栈技术
IP组播
组播的概念
- 让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机,被他们正确接收;
- 组播一定仅应用于UDP,他对将报文同时送往多个接收者的应用来说非常重要;
- 主机使用一个称为IGMP(因特网组管理协议)的协议加入组播组,它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望,通过拓展路由器的路由选择和转发功能,可以在许多路由器互联的支持硬件组播的网络上面实现因特网组播;
- 单播与组播的比较
IP组播地址
- 组播数据报和一般IP数据报的区别:
- 前者使用D类IP地址作为目的地址,并且首部中的协议字段为2,表明使用IGMP;
注意
- 组播数据报也是“尽最大努力交付”,不提供可靠交付;
- 组播地址只能用于目的地址,不能用于源地址;
- 对组播数据报不产生ICMP差错报文;
- 若在PING命令后键入组播地址,则永远不会受到响应;
- 并非所有的D类地址都可以作为组播地址
-
IP组播
- 只在本局域网上进行硬件组播;
- 在因特网的范围内进行组播;
-
由于组播IP地址与以太网硬件地址的映射关系不唯一,因此收到组播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃;
IGMP与组播路由算法
- 使路由器知道组播成员的信息;
- IGMP让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组;
- IGMP应视为TCP/IP的一部分,其工作可分为两个阶段:
- 第一阶段
- 当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员;
- 本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器;
- 第二阶段
- 组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍存在时组的成员;
- 只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的;
- 一个组在经过几次探询后仍然没有一台主机响应,则不再将该组的成员关系转发给其他地组播路由器;
- 第一阶段
- 组播路由选择实际上就是要找出以源主机为根节点地组播转发树,每个分组在每条链路上只传送一次
- 不同多播组对应于不同的多播转发树;
- 同一个多播组,对不同源点也会有不同地多播转发树;
- 路由选择算法
- 基于链路状态地路由选择;
- 基于距离-向量的路由选择;
- 可以建立在任何路由器协议上,称为协议无关的组播PIM;
移动IP
移动IP的概念
- 支持移动性的因特网体系结构与协议共称为移动IP,他是为了满足移动结点在移动过程中保持其连接性而设计的;
- 基于IPv4的移动IP定义三种功能实体
- 移动结点、归属代理、外埠代理;
- 归属代理和外埠代理又统称为移动代理;
- 移动结点
- 具有永久IP地址的移动结点
- 本地代理
- 在一个网络环境中,一个移动结点的永久“居所”被称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体称为归属代理,他根据移动用户的转交地址,采用隧道技术转交移动结点的数据包;
- 外部代理
- 在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理;
- 移动IP与动态IP
- 动态IP指的是局域网中的计算机可以通过网络中的DHCP服务器动态地获得一个IP地址,而不需要用户在计算机的网络设置中指定IP地址;
- 动态IP和DHCP经常会应用在我们实际工作环境中;
移动IP通信过程
- 移动结点的本地地址与当前转交地址的联合称为移动绑定或简称绑定;
- 当移动结点得到一个新的转交地址时,通过绑定向本地代理进行注册,以便让本地代理即时了解移动结点的当前位置;
- 移动IP技术的基本通信流程:
- 移动结点子本地网时,按传统的TCP/IP方式进行通信(在本地网中由固定的地址);
- 移动结点漫游到一个外地网络时,仍然使用固定的IP地址进行通信;
- 为了能够收到通信对端发给他的IP分组,移动结点需要向本地代理注册当前的位置地址,这个位置地址就是转交地址(它可以是外部代理的地址或动态配置的一个地址);
- 本地代理接收来自转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给移动结点的IP分组通过隧道送到转交地址处;
- 在转交地址处解除隧道封装,恢复原始的IP分组,最后送到移动结点,这样移动结点在外网就能够收到这些发送给他的IP分组;
- 移动结点在外网通过外网的路由器或外部代理向通信对端发送IP数据包;
- 移动结点来到另一个外网时,只需向本地代理注销转交地址,就可继续通信;
- 移动结点回到本地网时,移动结点向本地代理注销转交地址,这时移动给点又将使用传统的TCP/IP方式进行通信;
网络层设备
路由器的组成和功能
- 路由器是一种具有多输入/输出端口的专用计算机,其任务时连接不同的网络并完成路由转发,在多个逻辑网络互联时必须使用路由器;
- 如果源主机和目标主机在同一个网络上,那么直接交付而无须通过路由器;
- 如果源主机和目标主机不在同一个网络上,那么路由器按照转发表指出路由将数据报转发给下一个路由器,这称为间接交付;
- 路由器体系结构
路由表与路由转发
-
路由表是根据路由选择算法得出的,主要用途是路由选择;
-
一个简单的网络拓扑
-
上图网络拓扑的R1路由器
目的网络IP地址 | 子网掩码 | 下一跳IP地址 | 接口 |
---|---|---|---|
202.114.1.0 | 255.255.255.0 | direct | E1 |
202.114.2.0 | 255.255.255.0 | direct | L0 |
202.114.3.0 | 255.255.255.0 | 202.114.2.2 | L0 |
0.0.0.0 | 0.0.0.0 | 202.114.2.2 | L0 |
- 转发和路由选择的区别
- 转发:路由器根据转发表把收到的IP数据报从合适的端口转发出去,仅涉及一个路由器;
- 路由选择:涉及很多路由器,路由表是许多路由器协同工作的结果;