计算机网络12

拥塞控制

拥塞控制的基本原理

  1. 监控系统

    检测拥塞在什么时候、什么位置发生。

  2. 把拥塞信息传递到可以采取措施的地方

  3. 调整系统的运行方式,消除或缓解拥塞问题

避免拥塞路径

choke分组

抑制源端的流量(拥塞是因为源端的流量过多)

choke packet(阻塞包) 一跳一跳地往回传,让上游把流量降下来

有两种:

只影响源端的 choke packet

逐跳生效的 hop-by-hop choke packet

RED(random early detection)

重要!!!

  • 思想: 在缓冲区还没被完全占满之前,就提前、随机地丢弃部分分组。

  • Threshold(阈值):

    设置若干队列长度的阈值,用来决定什么时候开始"早丢弃"。

  • How to tell the source about the problem? 如何把拥塞情况告诉源端?

    • 发送一个抑制分组(choke packet);

    • 或者直接丢掉选中的分组而不显式报告(让上层通过丢包自己察觉)。

  • Application 应用场景

    • 使用"丢包 → 源端降速"机制的协议,例如 TCP;

    • 典型用于有线网络。

5.4 服务质量

需求/为了实现良好QoS可以使用的具体技术手段/综合服务/区分服务/标签交换与MPLS

四个 QoS 指标是什么?
  • Reliability 可靠性

    分组丢不丢、是否出错。对"文件""邮件"这类应用,一点错都不行,所以写 High

    对语音、视频,偶尔丢一点人耳、眼睛能忍受,所以写 Low

  • Delay 时延

    从发送到接收的时间。

    • 邮件、文件:慢一点无所谓 → Low;

    • 远程登录、语音、视频通话:必须"及时" → High 或 Medium。

  • Jitter 抖动

    分组到达时间的不均匀程度(时延的波动)。

    • 文件、邮件:只要最后都到了,不在乎顺不顺畅 → Low;

    • 音视频、电话:到达时间忽快忽慢会卡顿、声音不连贯 → High。

  • Bandwidth 带宽

    单位时间内可传多少数据。

    • 邮件、登录、语音(压缩后)数据量很小 → Low;

    • 文件传输、网页、多媒体尤其是视频 → 需要 Medium 或 High。

Techniques for achieving good QoS

(实现良好QoSd的具体技术手段)

  1. 过量提供资源

做起来简单,现实中常见好用,但是很贵

  1. 在客户端缓冲

用缓存抹平网络抖动

3.流量整形

两种经典的流量整形算法:

✓ The Leaky Bucket Algorithm 漏桶算法

✓ The Token Bucket Algorithm 令牌桶算法

漏桶算法的两种实现:

在令牌桶约束下,一个流最多可以以"峰值速率 M"连续突发多久

在一个令牌桶参数为 (B, R) 的系统里,如果你想以峰值速率 M 连续发数据,最长只能发 S 秒,超过这个时间桶里的令牌就用完了,之后只能降到 R 附近的平均速率

分组调度

资源预留:

带宽/缓冲区空间,给某些流预留一部分队列/处理器时间,预留处理时间,保证包能被及时转发

调度方法

先来先服务;丢包策略,队列满后把新来的包丢掉;公平队列(不再只有一条队列,而是**每个流/每个连接一条队列,**调度器按某种公平规则在这些队列之间轮流取包发送)

5.5 连接网络

网络如何被连接?

不同网络在很多方面都可能不同,例如:

  • Service offered 服务类型

    • 无连接(datagram,像 IP) vs 面向连接(virtual circuit,像 ATM、MPLS)。
  • Addressing 地址方式

    • 地址长度不同、是否分层(平lat / 分层 hierarchical),比如以太网 MAC、IP 地址等。
  • Broadcasting 广播能力

    • 有的网络支持广播/组播,有的完全不支持。
  • Packet size 分组大小

    • 各种网络的最大分组长度(MTU)不同:以太网常见 1500 字节,某些链路更大/更小。
  • Ordering 交付顺序

    • 有的保证按顺序交付,有的可能乱序。
  • QoS、Reliability、Security

    • 有的提供 QoS 保证、有的没有;

    • 丢包率、错误率不同;

    • 安全机制、隐私保护、加密能力不同。

  • Parameters、Accounting

    • 参数:超时值、流规格等都可能不同;

    • 计费方式:按连接时间、按分组数、按字节,或干脆不计费。

结论:

现实中的网络高度异构,所以要把它们连成一个 Internet,需要一套"统一抽象"和一些"适配手段"。

靠共同网络层IP互联

用一个共同的网络层协议------IP,把底下各种异构链路统一起来。

各种底层网络靠适配器/路由器转换链路层头,IP 层在端到端保持一致。

隧道

(简答题问什么是隧道)

当中间网络根本不支持某协议时,用封装隧道的方式"借道而行":

  • 边界路由器给分组套一层中间网络能懂的头;

  • 穿过中间后再脱掉,继续用原来的协议

5.6 网络层

网络的设计原则

IP数据报的基本结构

(问你,每个部分结构的含义)

IHL ip header length

头部组成

IP 数据报 = 头部(Header)+ 正文(Payload)

  • 头部最少 20 字节,最多可以有"选项"字段,变长;

  • 正文里装的是上层数据(通常是 TCP/UDP 报文段)。

  • Version(版本)

    4 位,表示 IP 版本。IPv4 的值是 4,IPv6 的是 6。

  • IHL(Internet Header Length,首部长度)

    4 位,以 4 字节为单位

    • 最小值 5 → 5×4 = 20 字节(无选项);

    • 如果有 Options,就会更大。

  • Differentiated Services(区分服务 / TOS)

    8 位,用于 QoS 标记:

    • 现在主要用里面的 DSCP/ECN 指示优先级、拥塞通知等。
  • Total length(总长度)

    16 位,整个 IP 数据报的总长度(头 + 数据),单位是字节,最大 65535。

  • Identification(标识)

    16 位,用来标识一个原始数据报。

    • 当一个大数据报被分片成多个小片时,这些片的 Identification 相同,方便目的端重组。
  • Flags 标志位 D/F/MF (图里那小灰块 D、M)

    一共 3 位:

    • 第一位保留;

    • DF (Don't Fragment):不要分片,=1 时禁止中途分片;

    • MF (More Fragments):是否还有后续分片,

      • 对于中间片 =1,最后一个片 =0;

      • 未分片的数据报 MF=0。

  • Fragment offset(片偏移)

    13 位,表示当前分片在原始数据报中的偏移位置 ,以 8 字节为单位

    重组时靠它把各个片拼回正确顺序。

  • Time to live(TTL,生存时间)

    8 位,最初设计为"秒",实际上基本按"跳数限额"用:

    • 每经过一个路由器就减 1;

    • 减到 0 时该包被丢弃,并发 ICMP 报文通知源端;

    • 用来防止路由环路导致数据报在网内无限循环。

  • Protocol(协议号)

    8 位,指明 上层使用的协议

    • 6 = TCP

    • 17 = UDP

    • 1 = ICMP

    • ...

      目的主机收到 IP 包后,根据这个字段把数据交给对应的传输层模块。

  • Header checksum(首部校验和)

    16 位,只对 IP 首部做校验(不含数据部分):

    • 每到一个路由器,TTL 会减 1,导致首部变动,所以都要重新计算校验和;

    • 如果校验错误,说明首部出错,该包被丢弃。

  • Source address(源 IP 地址)

    32 位,发送方的 IPv4 地址。

  • Destination address(目的 IP 地址)

    32 位,接收方的 IPv4 地址。

  • Options(选项,可有可无)

    0 个或多个 32 位字:

    • 很少在普通网络里用;

    • 例如安全选项、路由记录、时间戳等,都在这里。

  • Padding(填充)

    为了让整个首部长度是 4 字节的整数倍,用 0 填充。

几种Options
  • Security 安全选项

    • 用来标明这个数据报的"保密级别",例如机密、秘密、公开等。

    • 主要设计给军事、政府网络用,普通 Internet 几乎不用。

  • Strict source routing 严格源路由

    • 发送方在选项里写出完整路径上要经过的每一个路由器

    • 中间路由器必须严格按这个列表转发,不能走别的路。

    • 用来做精确路径控制和测试,但现在出于安全原因一般被禁用。

  • Loose source routing 宽松源路由

    • 发送方只给出"必须经过的一些路由器列表";

    • 中间的路由器只要保证不要漏掉这些点,中间可以插别的路由跳数,路径不必完全固定。

    • 相当于"途经这些站,至于中间转几次车你自己安排"。

  • Record route 记录路由

    • 要求每个经过的路由器把自己的 IP 地址写进选项字段

    • 收到包之后,源主机就能看到这个包从哪些路由器走过,常用于诊断、调试。

  • Timestamp 时间戳选项

    • 要求每个路由器在选项里写入自己的地址 + 当前时间

    • 可以用来测量各段链路的延迟、分析路径性能。

相关推荐
moringlightyn1 小时前
Linux---进程状态
linux·运维·服务器·笔记·操作系统·c·进程状态
shizhan_cloud2 小时前
DNS 服务器
linux·运维
swanwei2 小时前
量子科技对核心产业的颠覆性影响及落地时间表(全文2500字)
大数据·网络·人工智能·程序人生·量子计算
优质&青年2 小时前
【Operator pormetheus监控系列四----.alertmanager和Rules服务配置】
运维·云原生·kubernetes·prometheus
大、男人3 小时前
目标URL存在http host头攻击漏洞
网络·网络协议·http
BUG_MeDe3 小时前
openssl 生成自签名证书步骤
服务器·https·ssl·数字证书
IT逆夜4 小时前
linux系统安全及应用
linux·运维
运维行者_4 小时前
网站出现 525 错误(SSL 握手失败)修复指南
服务器·网络·数据库·redis·网络协议·bootstrap·ssl
苹果醋34 小时前
VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)
java·运维·spring boot·mysql·nginx