概述
1.了解网络层的主要功能
主要功能就是:将源端数据包一路送到接收方。
无连接服务的实现:数据报子网
对于无连接服务来说每个数据包都独立地被注入到网络中,并且每个数据包独立路由,不需要建立任何设置(X.25, ATM)。
面向连接服务的实现:虚电路子网
面向连接的服务,需要一个虚电路网络,虚电路的目的是避免为每个数据包选择一条新路径,当建立一个连接时,从源机器到目标机器之间的一条路径就被当做这个连接的一部分被确定下来。(IP)
2.理解路由算法原理
- 静态路由选择算法
- Dijkstra
- flooding
- 动态路由选择算法
- 距离矢量路由(DV)
- 链路状态路由(LS)
最优化原则:如果一个路由器 J 处在路由器I到路由器K的最优路径上,那么,从路由器J到路由器K的最优路径也在同样的这条路径上。
沉落树( sink tree )、汇集树:从所有的源到一个给定的目的的最优路径形成的一棵树,树根是目的结点。汇集树不必是唯一的。
什么时候使用静态/动态路由?
静态路由:管理员手工配置的路由
- 适合小型的、静态的网络,开销小
动态路由:由路由选择协议动态地建立、更新和维护的路由
- 适合大型的、经常变动的网络,需要维护开销
- 减少了网络管理员的负担
3.理解Dijkstra算法
Dijkstra算法:使用权重计算通信线路中的最短(优,代价最小)路径。
算法步骤:
1. 初始化
2. 找到一个不在集合 N 中的节点w ,但它的D(w)最小,把w加入到集合 N 中;那么,所有不在集合N中的节点,使用 min[D(v), D(w) + l(w,v)] 去替换 D(v):
3.重复第二步,直到所有的节点都包含在集合N中。
例子:
求下图以A为根的沉落树。
解答:
扩散/泛洪法(Flooding)
每个到达分组都被从除了到达端口外的所有其它端口转发出去(不计算路径,有路就走)
重复分组解决办法:
- 在分组头增加一个计数器(counter),每经过一个节点,计算器减 1 ,当计数器变为零时,报文被丢弃。
- 每个节点设立一个登记表,当分组第二次到达时,被丢弃。
- 选择性扩散
缺点:重复分组太多,浪费带宽
优点:可靠性高、路径最短/优,常用于军事
4.掌握距离矢量路由算法DV及DV实例Rip
距离矢量路由选择:每个路由器维护一张表,表中列出了当前已知的到每个目标的最佳距离,以及为了到达那个目标,应该从哪个目标转发的线路(端口)。这些表通过邻居之间相互交换信息而不断更新,最终每个路由器都了解到达每个目的地的最佳链路。
DV的工作原理
- 每个路由器(节点)维护两个向量,Di和Si ,分别表示从该路由器到所有其它路由器的距离及相应的下一跳(next hop)
- 在邻居路由器之间交换路由信息(矢量)
- 每个路由器(节点)根据收到的矢量信息,更新自己的路由表
- di1:从节点i到节点1的度量(代价)
- si1 :沿着从节点i到节点1的最优路径上的下一跳
- n :网络中的节点数
当邻居间交换了矢量信息之后:
- 更新距离: dij= Min[dix+ dxj] ( x ∈A ) 【A—节点i的邻居集合】
- 更新下一跳: Sij= x
例子:
一个网络拓扑如下,某个时刻,路由器C接收到三个邻居发过来的矢量如下:
A B C D E F
From router B:(5, 0, 8, 12, 6, 2)
From router D:(16, 12, 6, 0, 9, 10)
From router E:(7,6, 3, 9, 0, 4)
现在,路由器C到 B、 D 和 E 的代价分别是 6、3 和 5,试回答路由器C更新后的路由表
解答:
分析:通过路由器 B、 D 和 E进行转发的话,路由器C的矢量分别是:
Via router B:( 11, 6, 14, 18, 12 , 8)
Via router D: ( 19, 15, 9, 3, 12, 13)
Via router E: ( 12 , 11, 8, 14, 5, 9)
所以,路由器C更新后的路由表如下:
( 11, 6, 0, 3, 5, 8)
( B, B, -, D, E, B)
D-V算法的特点
优点
- 简单
缺点
- 交换的信息太大了
- 路由信息传播慢,可能导致路径信息不一致
- 收敛慢,度量计数到无穷
- 不适合大型的网络
RIP的主要特点
- RIP是一种典型的D-V路由选择协议
- RIP采用了跳数(hop)作为量度(metric)
- 当量度超过 15 跳,目的被认为不可达
- 默认地,每30秒钟交换一次矢量/向量信息(全部路由表)
RIP的主要缺陷
- 不能到达量度超过15跳的目标网络
- RIP的度量(代价)是跳数,即沿途经过的路由器的个数,有时候,并不合理,不能真正反映网络的状况
- 实际运行中,会遇到度量计数到无穷、收敛慢等问题
DV路由可能遇到的问题
问题表现
- 路由环路(routing loop)
- 计数到无穷问题(Count toinfinite)
- 收敛慢的问题(slowConvergence)
原因
- 相信错误的路由信息导致
解决方法:
- 定义路径度量(代价)的最大值
- 提高收敛速度:
-
- 水平分割
- 毒性逆转
- 抑制定时器
- 触发更新
5.掌握链路状态路由算法LS及LS的实例OSPF
链路状态路由的主要思想包括如下5个部分:
- 发现它的邻居节点们,了解它们的网络地址
- 设置到它的每个邻居的成本度量
- 构造一个分组,包含它所了解到的所有信息
- 发送这个分组给所有其他的路由器
- 计算到每个路由器的最短路径
LS的工作原理:
1. 发现邻居节点
- 当一个路由器启动的时候,在每个点到点的线路发送一个特别的HELLO分组
- 收到HELLO分组的路由器应该回送一个应答,应答中有它自己的名字
- (当两个或更多的路由器被一个LAN连接起来,这个LAN被看作一个节点)
2. 设置链路成本
- 为了决定线路的开销,路由器发送一个特别的 ECHO 分组,另一端立刻回送一个应答
- 通过测量往返时间(round-trip time) ,发送路由器可以获得一个合理的延迟估计值
3. 构造链路状态分组
- 链路状态分组构造后被发送给其他的路由器,分组中包含这些信息:
- 发送方的标识(ID of the sender)
- 序列号(sequence number )
- 年龄(age )
- 邻居列表(list of neighbors )
- 到邻居的成本/量度(delay to eachneighbor )
4. 发布链路状态分组
基本算法:
- 每个分组都包含一个序列号,序列号随着新分组产生而递增
- 路由器记录下他看见的所有 (源路由器,序列号)对
- 当一个的新的分组到达时,路由器根据它的记录:
- 如果该分组是新的,就被从除了来线路外的所有其他线路转发出去 ( flooding,泛洪)
- 如果是重复分组,即被丢弃(喜新厌旧)
- 如果该分组的序列号比对应的源路由器发送的到过此地的分组的最大序列号还小,则该分组被当作过时的信息而被拒
5. 计算新的路由路径
- 一旦一个路由器获得了全部的链路状态分组就可以构造出全网络图来了(Graph)
- 现在,可以使用 最短路径算法来计算路由器之间的最短路径了
- 计算结果是一棵树,会形成相应的路由,安装在路由表中,引导数据分组的转发
发布链路状态分组基本算法遇到的问题:
- 序列号回转,引起新老分组识别混淆
- 解决办法:使用 32-bit 的序列号,即使每秒产生一个分组,也需要137年才发生号码回转
- 如果一台路由器崩溃,那么他将丢失自己的序列号记录,如果他再从0开始,新分组将被当作旧分组被拒绝
- 如果一个序列号被破坏了,比如发送方的序列号是4,但是由于产生了1位错误,序列号被看作65540,那么,序列号为 5 – 65540的分组都被当作过时分组而被拒绝
- 解决上述的路由器崩溃和序列号损坏的方法是:每个分组的序列号之后是年龄(age) ,并且每秒钟年龄减1
- 当年龄为零 ( zero )时,来自该路由器的信息被丢弃
- 通常地,每隔一段时间,比如10秒钟,一个新分组就会到来,所以,只有路由器down机才可能导致超时(或者,连续6个间隔因为丢失,没有收到新的分组)
L-S 路由算法的特点
优点:
- 每个路由器的认识一致
- 收敛快
- 适合在大型网络里使用
缺点:
- 每个路由器需要较大的存储空间
- 计算负担很大
OSPF开放的路径优先(Open shortest path first)
- 使用图(graph)来表述真实的网络
- 每个路由器/Lan都是一个节点
- 测量代价/量度( metric)
- 计算最短路径
OSPF分组(packet)类型:
OSPF数据包类型 | 描述 |
Type 1-Hello | 与邻居建立和维护毗邻关系。 |
Type 2-数据库描述包(DD) | 描述一个OSPF路由器的链路状态数据库内容。 |
Type 3-链路状态请求(LSR) | 请求相邻路由器发送其链路状态数据库中的具体条目 |
Type 4-链路状态更新(LSU) | 向邻居路由器发送链路状态通告 |
Type 5-链路状态确认(LSA) | 确认收到了邻居路由器的LSU |
OSPF的运行步骤:
- 建立路由器毗邻关系
- 选举DR和BDR
- 发现路由
- 选择最佳路由
- 维护路由信息
OSPF状态:
- Down
- Init(初始)
- Two-way(双向)
- ExStart(准启动)
- Exchange(交换)
- Loading(加载)
- Full adjacency(全毗邻)
比较DV 和 LS
距离矢量路由 DV | 链路状态路由 LS |
从邻居看网络 | 整个网络的拓扑 |
在路由器间累加距离 | 计算最短路径 |
频繁、周期更新:慢收敛 | 事件触发更新:快收敛 |
在路由器间传递路由表的拷贝 | 在路由器间传递链路状态更新 |
6. 理解拥塞控制
拥塞:当一个子网或子网的一部分出现太多分组的时候,网络的性能急剧下降,这就是拥塞(Congestion )
导致拥塞的因素(拥塞根源:负载 > 资源)
- 输入流量速度大于输出线路的容量
- 慢速的处理器也可能引起拥塞,如线路容量充足,但处理器来不及处理
- 线路容量和处理器能力需要平衡
拥塞控制vs. 流控
拥塞控制(Congestion control)
- 任务:确保子网能够承载所到达的流量
- 这是个全局的问题,涉及到主机、路由器,存储转发的过程等方方面面的问题
流控(Flowcontrol)
- 只与特定的发送方和接收方之间的点到点流量有关
- 确保一个快速的发送方不会持续地以超过接受方接收能力的速率传输数据
怎么知道拥塞了? --拥塞量度
- 因为缺乏缓存空间而丢弃的分组百分比
- 平均队列长度
- 超时和重传的分组数
- 平均分组延迟
- 分组延迟的标准方差(standard deviation)
- 上述这些度量,数值越大表示拥塞的程度越重
怎样解决拥塞问题?
增加资源
- 在某些点之间使用更多的通道增加带宽(比如:广深)
- 把流量分散到多条路径
- 启用空闲或备份的路由器
降低负载
- 拒绝为某些用户提供服务(比如:春节车票提价,限行)
- 给某些用户的服务降低等级(比如:黄金周旅游)
- 让用户更有预见性地安排他们的需求(比如:年假制)
拥塞控制算法:
1. 流量感知路由
在计算路由时考虑链路负载,把热点地区的流量转移出去。最直接的方法是吧链路权重设置成一个链路带宽、传输延迟、平均排队延迟的函数。
缺点:可能导致路由摇摆
2. 准入控制:
- 防止拥塞进一步恶化和加剧
- 基本思想:一旦出现拥塞信号,则不再创建任何虚电路,直到问题得到解决
准入控制可以与流量感知相结合,允许建立新的虚电路,但是仔细选择线路,绕开问题区域
3. 流量调节
拥堵路由器通告源机发送慢下来(抑制包)
4. 负载丢弃/载荷脱落
- 这是处理拥塞的最极端的方法
- 当路由器收到的分组超载了,一些分组会被丢掉
- 丢掉哪些分组呢?
- 随机丢弃(random)
- 丢弃新到达的 (葡萄酒策略,适合文件传输类)
- 丢弃早到达的分组 (牛奶策略,适合多媒体类)
- 丢弃不太重要的(less important )分组(需要发送方在它们的分组中标明优先级)
5. 随机早期检测RED(防患于未然)
- 当情况变得恶化无可救药之前就开始丢弃分组
- 为了确定什么时候开始丢弃分组,路由器维护着最近的队列平均长度
- 当某条线上的队列平均长度超过了某阈值时,该线路被认定是拥塞的,可以采取相应的措施
- 告诉源机关于拥塞的情况有两种可能
- 发送抑制分组
- 仅仅丢弃,不做任何报告
抖动控制
分组到达时间的变化量(标准方差 standard deviation)叫做抖动(jitter)
如何做抖动控制(续)
- 通过计算出沿途每一跳的期望传输时间,就可以控制抖动。
- 当一个分组到达路由器,路由器检查这个分组,看它是来晚了还是来早了
- 如果分组来早了,那么它可能多停留一些时间,以便回到预定的时间点上
- 如果分组来晚了,路由器应该尽可能快地将他转发出去
- 当几个分组都要使用同一根输出线路转发出去,哪一个分组优先呢?
- 路由器总是让偏离预定时间最远的那个分组优先转发
流量整形
- 调节数据传输的平均速率(和突发数据流)
- 算法
- 漏桶( leaky bucket)
- 令牌桶( token bucket)
- 其它:资源预留、准入控制、分组调度等
- 可以减少拥塞
7. 理解漏桶算法
算法描述:
- 每个主机连接到网络的接口中都有一个漏桶,即一个优先长度的内部队列
- 当桶中有分组的时候,输出速率是恒定的,当桶空的时候,输出速率是0
- 当一个分组到达满的桶的时候,分组将被丢弃(满则溢)
- 每个时钟嘀嗒( tick ),仅允许一个分组或固定数量的分组发送出去
算法效果:
主机内用户进程产生的分组流往往是一个不稳定的流,漏桶可以让它输出到网络时变成一个稳定流,抹平了突发尖峰,极大地减少了发生拥塞的机会
漏桶的缺点
- 当漏桶满了之后,数据将被丢弃
- 不能大量地突发数据
- 改进:令牌桶
8. 理解令牌桶算法
算法描述:
- 当大量数据突发的时候,令牌桶算法允许输出加快到某种程度
- 令牌桶拥有令牌(tokens),且以每△T秒产生一个令牌的速度往桶中输入令牌
- 一个分组要发送的时候,它必要从桶中取出和获取到一个令牌
- 令牌桶算法允许累积令牌,但最多可以累积n(令牌桶的容量)个令牌
和漏桶算法相比:
- 令牌桶允许突发,但是最大突发受制于令牌桶容量的限制
- 当桶满的时候,令牌桶算法丢掉的是令牌(不是分组)
9. 理解网络互联要解决的问题
事实上,总存在很多不同的网络
- 不同的网络的安装基数都很大且在增长(如: TCP/IP,SNA, ATM,Novell NCP/IPX, AppleTalk, wireless, 等)
- 随着计算机和网络变得越来越便宜,购买设备的决策权正在向下迁移,这容易导致一个大公司安装了不同的网络
- 不同的网络 (如: ATM 和无线网络)使用完全不同的技术
网络可以通过不同的设备联接起来:
- 物理层 - repeaters or hubs 中继器或集线器
- 数据链路层 - bridges and switches 网桥和交换机(可能作小小的协议转换,如从Ethernet 到 FDDI 或到802.11)
- 网络层 – routers(多协议路由器)
- 传输层 - transport gateways(传输层连接之间的接口,如允许TCP连接和SNA连接粘结起来,分组可畅通无阻)
- 应用层 - application gateways(翻译消息语义,如不同的email格式转换)
隧道技术
隧道(Tunneling)一种通用的特殊的网络互连方式
- 源和目的都处于同种网络,但是中途经过不同类型的网络
- 中间的WAN部分可被看成一个大的隧道,从一个多协议路由器延伸到另一个多协议路由器
互联网路由
- 互联网路由类似于单个子网内部的路由,但是,前者比后者更加复杂一些
- 两级路由算法
- 每个网络内部采用内部网关协议( IGP, interior gateway protocol )
- 网络之间使用外部网关协议( BGP, exterior gateway protocol )
- 互联网上的每个网络都是独立于所有其他的网络,所以每个网络通常称作一个自治系统(Autonomous System ,AS)
- 互联网路由和网络内部路由的差别是:
- 互联网路由可能需要跨越国际边界,不同的法律可能会介入进来
数据包分段
每个网络都会限制其分组的最大长度,最大长度存在不同,当一个较大的分组想要通过一个最大分组长度较小的网络时,需要采取数据包分段。
MTU(路径最大传输单元)
两种不同的分段策略
- 透明分段( transparent )
- 非透明分段( non-transparent)
- 透明分段
- 分段行为对其他网络来说是不可见的,换句话说,在该网络分段的分组,在离开这个网络的时候需要将它重组恢复
- 非透明分段
- 每个网络遇到不能承载的分组即对其进行分段,不负责重组恢复,目的机收到分割后的分组,完成重组恢复
10. 理解路由器的功能
收到数据报后路由器的工作步骤:
- 打开数据报
- 确定目标网络地址
- 根据路由表,重新打包后转发到相应的接口
上面的步骤完成了路由器的基本功能:
- 路由选择
- 转发(交换)
- 其它功能(维护路由表、通告其他路由器等)
路由表
- 主要包括网络地址、接口、计量值(跳数)、网络掩码、网关等信息。
- 除了路由表,路由器内部有一张ARP表——所有子网设备的IP-MAC映射(包括网关)
IP寻址与Mac寻址的比较
- 适用的网络范围不同,MAC寻址只适合于小型网络;
- 所依赖的地址结构不同,MAC是平面地址,IP是结构化、层次化地址,其本身携带了位置信息;
- 所处的OSI模型层数不同;MAC介质访问控制子层,IP网络层
- 地址数目的限制,IP地址有一定的额度,而MAC地址无限制;
- 两种地址的格式不一样。
11. 理解IP分组格式
IP分组格式:
所以IP数据报报头的最小长度为20个字节
固定部分(前20字节):
(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。
(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位,但目前只有2位有意义。
● 标志字段中的最低位记为MF(MoreFragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
● 标志字段中间的一位记为DF(Don’tFragment),意思是“不能分片”。只有当DF=0时才允许分片。
(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,除了最后一个分片,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1.若TTL值减少到零,就丢弃这个数据报,不再转发。因此,现在TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255.若把TTL的初始值设为1,就表示这个数据报只能在本局域网中传送。
(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
(11)源地址 占32位。
(12)目的地址 占32位。
可变部分:
IP首部的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。新的IP版本IPv6就将IP数据报的首部长度做成固定的。
目前,这些任选项定义如下:
(1)安全和处理限制(用于军事领域)
(2)记录路径(让每个路由器都记下它的IP地址)
(3)时间戳(Time Stamp)(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)
(4)宽松的源站路由(LooseSource Route)(为数据报指定一系列必须经过的IP地址)
(5)严格的源站路由(StrictSource Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)
这些选项很少被使用,并非所有主机和路由器都支持这些选项。
12. 掌握IP地址及其分类
IP地址:网络号和主机号
- 唯一的
- 每个主机至少有一个
- 表示方法:点分十进制表示
IP地址的分类:
13. 掌握IPv4的保留地址空间
网络地址:主机部分全为“0”的 IP 地址
广播地址:主机部分全为“1”的 IP 地址
例子:
分析地址172.16.20.200
分析:
B类地址
子网部分:172.16
主机部分:20.200
网络地址:172.16.0.0
广播地址:172.16.255.255
保留的IP地址:
- 32位全为0,0.0.0.0
- 这个主机、这个网络
- Cisco路由器指定的默认路由
- 32位全为1,255.255.255.255 Flood Broadcast(受限的广播,路由器并不转发该地址的数据包)
- 主机部分全为0,如172.16.0.0 网络地址
- 主机部分全为1,如172.16.255.255 广播地址
- 127.0.0.0 Lookback Network
- 127.0.0.1 Lookback test
14. 掌握子网及子网划分
- 局域网不断增长,越来越难于管理,必须将它分割成子网
- 一个网络被分隔成几个部分(子网),但是在外界看来,该网络仍被看成一个整体 (体现在路由表例上,就是外部的路由器只对应一条路由)
- 这也允许不同的子网在一个组织内部连接起来
子网掩码
- 路由器使用子网掩码决定分组往哪个子网转发
- 子网掩码可用点分十进制表示( 1表示网络位, 0表示主机位),也可用“ /网络位数+子网位数” 表示
- 255.255.255.224
- 202.10.23.102/27
- 路由器采用“ AND ”操作(目的IP和子网掩码),得到目的网络地址
- 使用这种机制,路由器不必记录全部主机的IP地址,缩减了路由器的规模
子网规划
- 将大网络分割成小网络
- 划分子网实际上建立了一个由网络、子网和主机构成的三级层次结构,从而降低了路由器的表空间
- 构建子网是通过从网络地址的主机部分借位来进行
- 子网规划将导致IP地址空间的损失
确定可用主机数量的公式 2n-2
借位规则:
- 从主机域的高位开始借位;
- 主机域至少保留 2 位。
可变长子网掩码 (VLSM)
- VLSM允许将网络空间分为大小不等的部分。
- 子网掩码将依据为特定子网所借用的位数而变化。
- 先对网络划分子网,然后再将子网进一步划分子网。
- 根据需要重复此过程,以创建不同大小的子网
15. 理解IPv6
IPv6的主要改进:
- 地址从32位升为128位
- 简化了分组头
- 更好地支持选项
- 安全方面的改进
- 服务质量的改进
IPv6地址空间:2128=3.4×1038=340涧(1涧=10^36)
IPv6地址首选格式:冒分十六进制
- 4位一组,中间用“:”隔开,如: 2001:12FC:….
- 若以零开头可以省略,全零的组可用“::”表示,如: 1:2::ACDR:….
- 地址前缀长度用“/xx”来表示,如: 1::1/64
IPv6地址分类:
- 单播地址(Unicast Address)
- 组播地址(Multicast Address)
- 任播地址(Anycast Address)
- 特殊地址
IPv6地址子网规划
IPv6 子网划分是根据路由器的数量及它们所支持的网络来构建寻址分层结构
IPv4与IPv6的共存策略、迁移技术
共存策略
- 短时期内从IPv4迁移到IPv6几乎是不可能的
- Pv6在IPv4的基础上进行改进,在一定的时间内,IPv6将和IPv4共同存在共同运行
问题:
- 解决IPv6网络的成熟与稳定
- 解决IPv6网络与IPv4的网络之间通信的问题。
三种基本技术(RFC1933):
- 双协议栈(Dual Stack)(网络设备、网络系统必须有双协议栈的支持)
- 隧道(Tunnel)(通过隧道,IPv6分组被作为无结构无意义的数据,封装在IPv4的数据报中,被IPv4网络传输)
- 地址转换技术(不仅发生在网络层,还有传输层和应用层,当双栈和隧道都无法使用的时候,才使用)
16. 掌握CIDR基本思想
无类别域间路由—CIDR
- 缓解了地址枯竭的趋势;控制甚至缩减了路由表的开销
- 分配IP地址的时候不再以类别来分,而是按照可变长的地址块来分配
- 路由表必须扩展,增加一个 32-bit 的子网掩码
- 每个路由表有一个三元组 (IP address, subnet mask, outgoing line)
- 当一个分组到来到的时候
- 分组中的目标IP地址(Destination IP)被检查
- 目标IP和子网掩码进行与操作,获得目标网络地址,以查找路由表.
- 如果路由表中有多个表项匹配 (这些表项有不同的子网掩码) ,使用子网掩码最长的那个表项
17. 掌握NAT/PAT基本原理
NAT:net address translate NAT
私有IP地址和公有IP地址之间的转换。
PAT:port address translate(超载)
将多个私有IP地址影射到同一个公有IP地址的不同端口
NAT--一个IP地址耗尽的快速修补方案
- 内部网络使用私人地址,当内网需要和外网通信的时候,私人地址转换成合法的global 的地址
- 由NAT转换器(盒子)完成这种转换;NAT转换器能够转换并且维护一个地址转换表,以便回来的分组找到它的去处
- 当回来的分组到达NAT转换器的时候,它查找地址转换表(以源端口作索引),获得目标机的私人地址,并转换地之后发往目标机
NAT 带来的问题
- NAT违背了IP的结构模型 –每个IP地址唯一地标识了一台机器
- NAT将互联网改变成了“面向连接”的网络,NAT转换器维护着连接的状态,一旦它崩溃,连接也没有了
- NAT违背了最基本的协议分层原则
- 如果传输层不是采用TCP或UDP,而是采用了其它的协议,NAT将不再工作
- 有些应用会在payload中插入IP地址,然后接收方会提取出该IP地址并使用,但是NAT转换器对此一无所知,导致该类应用不再有效
- NAT让一个IP地址可以承载61,440(65536-4096)个私人地址(超载,PAT)
NAT/PAT的评价:
优点
- 节省了公有IP地址;
- 提供了内部网访问外网的灵活性;
- 有一定的保密性。
缺点
- 影响了部分协议和应用的通信;
- 增加了网络延时;
- NAT转换设备的性能可能成为网络的瓶颈;
- 影响了路由追踪工具的使用。
18. 理解ICMP及其应用
用来报告意外的事件或测试互联网
ping的工作原理
- 使用ping命令(即调用ping过程)时,将向目的站点发送一个ICMP回声请求报文(包括一些任选的数据),
- 如目的站点接收到该报文,必须向源站点发回一个ICMP回声应答报文,源站点收到应答报文(且其中的任选数据与所发送的相同),则认为目的站点是可达的,否则为不可达。
tracert命令
- tracert过程是通过ICMP数据报超时报文来得到一张途经的路由器列表
- 源主机向目的主机发一个IP报文,并置TTL为1,到达第一个路由器时,TTL减1,为0,则该路由器回发一个ICMP数据报超时报文,源主机取出路由器的IP地址即为途经的第一个路由端口地址
- 接着源主机再向目的主机发第二个IP报文,并置TTL为2,然后再发第三个、第四个IP数据报,……直至到达目的主机
- 但互联网的运行环境状态是动态的,每次路径的选择有可能不一致,所以,只有在相对较稳定(相对变化缓慢)的网络中,tracert才有意义
19. 掌握地址解析协议的功能和原理(ARP/RARP)
ARP (地址解析协议): IP 地址-> MAC 地址
RARP (逆向地址解析协议):MAC 地址 -> IP 地址
ARP的工作原理:
为了让ARP的工作更加高效,下面是几种优化措施:
- 缓存 ARP 结果
- 在ARP请求中包括源机的 IP-to-MAC 地址的映射
- 每台机器在启动的时候,广播它的IP-MAC地址对
缺省网关(代理 ARP)
- 当源设备需要的目的地址与自己不在同一个网络时,如果源不知道目的MAC地址,它必须使用路由器的服务使它的数据达到目的,当路由器在这种方式下使用时,称为缺省网关。
- 缺省网关是与源设备所处的网段相连的路由器接口上的IP地址
ARP表:
- IP地址到MAC地址的映射表,储存在存储器(RAM)中,自动维护。(掉电消失)
- 为了减少ARP请求的次数,每个设备拥有自己的ARP表,包括路由器。
自动维护ARP表
- 通过广播ARP请求中的源设备信息添加更新表;
- 利用自己的ARP请求之应答信息来添加、更新表;
- 删除超过一定时限的信息
RARP的工作原理:
20. 了解IP地址的分配方式
IP地址的分配方式:
- 静态分配
- 动态分配
IP地址的动态分配方式(RARPBootpDHCP)
DHCP:动态主机配置协议
- 可以灵活分配IP地址,节约IP地址的使用
- 使一台主机迅速并动态地获取一个IP地址
- 通过DHCP获取的 IP是租来的,可能会过期
最后
以上就是个性路人为你收集整理的《计算机网络》第5章 网络层的全部内容,希望文章能够帮你解决《计算机网络》第5章 网络层所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复