互联网协议套件中的服务类型(RFC 1349)技术解析与总结

1. 背景与核心目标
RFC 1349 是对 IP 协议头部 服务类型(Type of Service, TOS)字段语义的更新与澄清文档,发布于 1992 年。其主要目标包括:
  • 重新定义 TOS 字段的用途:明确 TOS 字段的语义,解决历史标准中的冲突。
  • 引入新的服务类型:例如“最小化经济成本”(Minimize Monetary Cost)。
  • 兼容性与扩展性:确保与现有协议(如 OSPF、IS-IS)兼容,并为未来实验预留空间。
  • 路由优化原则:主机使用 TOS 时不应被惩罚,网络应尽力满足请求,否则回退默认处理。

2. TOS 字段的重新定义
IP 头部的 服务类型字节包含三个字段:
0 1 2 3 4 5 6 7
| PRECEDENCE | TOS | MBZ |
  • PRECEDENCE(优先级):表示数据报的重要性(本文未详细讨论)。
  • TOS(服务类型):4 比特字段,用于请求网络在吞吐量、延迟、可靠性和经济成本之间优化路径。
  • MBZ(必须为 0):保留位,当前未使用。
关键变化:
  • TOS 字段从 3 比特扩展为 4 比特(兼容 RFC 1122)。
  • TOS 值定义为枚举值(而非独立位组合),禁止同时设置多个优化目标(例如不能同时要求“最小延迟”和“最大吞吐量”)。

3. 标准 TOS 值定义
二进制值
语义
1000
最小化延迟(Minimize Delay)
0100
最大化吞吐量(Maximize Throughput)
0010
最大化可靠性(Maximize Reliability)
0001
最小化经济成本(Minimize Monetary Cost)
0000
默认服务(Normal Service)
注意:
  • TOS 值为枚举值,非位组合(例如 1110 无意义)。
  • 未定义的 TOS 值保留供未来实验使用,主机和路由器不得阻止其使用。

4. TOS 在协议中的应用
4.1 ICMP 协议
  • 错误消息(如 Destination Unreachable)必须使用默认 TOS(0000)。
  • 请求消息(如 Echo Request)可自定义 TOS。
  • 响应消息(如 Echo Reply)需与请求的 TOS 一致。
4.2 传输层协议(如 TCP、UDP)
  • 根据应用需求选择 TOS 值(如 FTP 控制通道使用最小延迟,数据通道使用最大吞吐量)。
  • TCP 建议:控制报文与数据报文使用相同 TOS,避免影响往返时间估算。
4.3 应用层协议
  • 应用需根据流量特性选择 TOS 值(例如 SMTP 命令阶段用最小延迟,数据传输阶段用最大吞吐量)。
  • 用户应能覆盖应用的默认 TOS 选择(用于网络诊断等场景)。

5. TOS 对路由的影响
5.1 主机路由
  • 主机通过 ICMP Redirect 消息学习路由,区分 TOS 相关和无关的路由条目。
  • 路由缓存分为两类:
    • 类型 1:匹配目标地址和 TOS。
    • 类型 2:仅匹配目标地址(默认路由)。
5.2 路由器转发
  • 路由器优先选择与请求 TOS 完全匹配的路由,若无则使用默认 TOS(0000)。
  • 若无有效路由,返回 ICMP Destination Unreachable(代码 11/12 表示因 TOS 不可达)。

6. 限制与挑战
6.1 固有限制
  • 建议性机制:TOS 不提供服务质量(QoS)保证,仅作为优化提示。
  • 兼容性问题:旧设备可能忽略 TOS 字段,导致优化失效。
6.2 规范限制
  • 路由算法局限性:当前路由协议(如 OSPF、IS-IS)未完全支持复杂 TOS 语义(例如可靠性需链路概率乘积计算)。
  • 依赖网络管理:需合理配置路由策略,否则可能导致次优路径。

7. 总结与展望
RFC 1349 是 IP 服务类型机制演进的重要里程碑,解决了历史标准冲突并引入经济成本优化。然而,其本质仍是建议性机制,无法替代未来的 QoS 保障技术(如资源预留协议 RSVP)。随着网络商业化发展,TOS 在成本优化场景中的价值将愈发显著。
附录:
  • 更新影响的 RFC 包括:RFC 792(ICMP)、RFC 1122/1123(主机要求)、RFC 1195(IS-IS)、RFC 1247/1248(OSPF)。
  • 完整文档见:RFC 1349 - Type of Service in the Internet Protocol Suite

版权声明:本文内容基于 RFC 1349 翻译整理,仅供技术交流,转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/967553.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】深入理解linux权限

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:Linux 目录 前言 一、权限是什么 二、用户和身份角色 三、文件属性 1. 文件属性表示 2. 文件类型 3. 文件的权限属性 四、修改文件的权限属性和角色 1. …

三次握手,四次挥手,服务器模型(多进程并发,线程),基于套接字的UDP通信

三次握手: 第一次握手:客户端向服务器发送SYN待确认数据x, 客户端进入SYN_SEND状态​ 第二次握手:服务器向客户端回传一条ACK应答数据x1, 同时发送一条SYN待确认数据y,服务器进入SYN_RECV状态​ 第三次握手:客户端向服…

PostgreSQL的学习心得和知识总结(一百六十七)|深入理解PostgreSQL数据库之静态语法检查工具PgSanity的使用和实现

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库链接,点击前往 4、日本著名PostgreSQL数据库专家 铃木启修 网站…

【数据结构】双向链表(真正的零基础)

链表是一种物理存储单元上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过指针的链接来实现的!在上篇我们学习了单向链表,而单向链表虽然空间利用率高,插入和删除也只需改变指针就可以达到!但是我们在每次查找、删除、访问..…

Docker 之mysql从头开始——Docker下mysql安装、启动、配置、进入容器执行(查询)sql

一、Docker 之mysql安装配置 步骤一:拉取镜像 1. 查看是否包含已安装的mysql。 docker images | grep mysql 2. 如上图所示,我们有mysql镜像,所以不必对mysql镜像进行拉取,如若没有上图中的惊喜,使用如下命令进行拉取…

网易日常实习一面面经

1. 自我介绍 2. 两道代码题: 第一道题:写一道链表排序题要求空间复杂度O(1) :已ac 插入排序算法 时间复杂度 O(N^2),空间复杂度O(1) class ListNode{int val;ListNode next;public ListNode(int x) {this.val x;} } public cl…

DeepSeek LLM 论文解读:相信长期主义开源理念可扩展大语言模型(DeepSeek 吹响通用人工智能的号角)

论文链接:DeepSeek LLM: Scaling Open-Source Language Models with Longtermism(相信长期主义开源理念可扩展大语言模型) 目录 摘要一、数据处理(一)数据清洗与丰富(二)分词器与词汇设置 二、模…

02DevOps基础环境准备

准备两台Linux的操作系统,最简单的方式就是在本机上使用虚拟机搭建两个操作系统(实际生产环境是两台服务器,虚拟机的方式用于学习使用) 我搭建的两台服务器的ip分别是192.168.1.10、192.168.1.11 192.168.1.10服务器用于安装doc…

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强,智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备,能够实时采集用户的腰部健康数据,如姿势、运动…

表单与交互:HTML表单标签全面解析

目录 前言 一.HTML表单的基本结构 基本结构 示例 二.常用表单控件 文本输入框 选择控件 文件上传 按钮 综合案例 三.标签的作用 四.注意事项 前言 HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础&#xff0c;其中表单&#xff08;<form>&…

vue3中使用print-js组件实现打印操作

第一步&#xff1a;安装依赖 yarn add print-js 第二步&#xff1a;创建打印组件&#xff1a;PrintHtmlComp.vue <template><div id"printArea_123456789"><!-- 默认插槽&#xff0c;传入打印内容 --><slot></slot></div>…

【计算机网络】TCP/IP 网络模型有哪几层?

目录 应用层 传输层 网络层 网络接口层 总结 为什么要有 TCP/IP 网络模型&#xff1f; 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通…

网络工程师 (29)CSMA/CD协议

前言 CSMA/CD协议&#xff0c;即载波监听多路访问/碰撞检测&#xff08;Carrier Sense Multiple Access with Collision Detection&#xff09;协议&#xff0c;是一种在计算机网络中&#xff0c;特别是在以太网环境下&#xff0c;用于管理多个设备共享同一物理传输介质的重要…

基于Python的人工智能驱动基因组变异算法:设计与应用(下)

3.3.2 数据清洗与预处理 在基因组变异分析中,原始数据往往包含各种噪声和不完整信息,数据清洗与预处理是确保分析结果准确性和可靠性的关键步骤。通过 Python 的相关库和工具,可以有效地去除噪声、填补缺失值、标准化数据等,为后续的分析提供高质量的数据基础。 在基因组…

AI大语言模型

一、AIGC和生成式AI的概念 1-1、AIGC Al Generated Content&#xff1a;AI生成内容 1-2、生成式AI&#xff1a;generative ai AIGC是生成式 AI 技术在内容创作领域的具体应用成果。 目前有许多知名的生成式 AI&#xff1a; 文本生成领域 OpenAI GPT 系列百度文心一言阿里通…

在postman中设置环境变量和全局变量以及五大常用响应体断言

一、什么是环境变量和全局变量 环境变量&#xff08;Environment Variables&#xff09;和全局变量&#xff08;Global Variables&#xff09;是 Postman 中用于存储和管理数据的两种变量类型&#xff0c;它们可以提高 API 测试的灵活性和可维护性。 1、 环境变量&#xff08…

Redis数据库(二):Redis 常用的五种数据结构

Redis 能够做到高性能的原因主要有两个&#xff0c;一是它本身是内存型数据库&#xff0c;二是采用了多种适用于不同场景的底层数据结构。 Redis 常用的数据结构支持字符串、列表、哈希表、集合和有序集合。实现这些数据结构的底层数据结构有 6 种&#xff0c;分别是简单动态字…

C++STL(六)——list模拟

目录 本次所需实现的三个类一、结点类的模拟实现构造函数 二、迭代器类的模拟实现为什么有迭代器类迭代器类的模板参数说明构造函数运算符的重载- -运算符的重载和!运算符的重载*运算符的重载->运算符的重载引入模板第二个和第三个参数 三、list的模拟实现3.1 默认成员函数构…

国产编辑器EverEdit - 替换功能详解

1 替换 1.1 应用场景 替换文本是在文档编辑过程中不可回避的操作&#xff0c;是将指定的关键词替换为新的文本&#xff0c;比如&#xff1a;写代码时修改变量名等。 1.2 使用方法 1.2.1 基本替换 使用主菜单查找 -> 替换&#xff0c;或使用快捷键Ctrl H&#xff0c;会打…

LIMO:上海交大的工作 “少即是多” LLM 推理

25年2月来自上海交大、SII 和 GAIR 的论文“LIMO: Less is More for Reasoning”。 一个挑战是在大语言模型&#xff08;LLM&#xff09;中的复杂推理。虽然传统观点认为复杂的推理任务需要大量的训练数据&#xff08;通常超过 100,000 个示例&#xff09;&#xff0c;但本文展…