当前位置: 首页 > article >正文

互联网协议套件中的服务类型(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 翻译整理,仅供技术交流,转载请注明出处。

相关文章:

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

1. 背景与核心目标 RFC 1349 是对 IP 协议头部 服务类型(Type of Service, TOS)字段语义的更新与澄清文档,发布于 1992 年。其主要目标包括: 重新定义 TOS 字段的用途:明确 TOS 字段的语义,解决历史标准中的…...

java-初识List

List: List 是一个接口,属于 java.util 包,用于表示有序的元素集合。List 允许存储重复元素,并且可以通过索引访问元素。它是 Java 集合框架(Java Collections Framework)的一部分 特点: 有序…...

【Linux系统】—— 简易进度条的实现

【Linux系统】—— 简易进度条的实现 1 回车和换行2 缓冲区3 进度条的准备代码4 第一版进度条5 第二版进度条 1 回车和换行 先问大家一个问题:回车换行是什么,或者说回车和换行是同一个概念吗?   可能大家对回车换行有一定的误解&#xff0…...

一文学会:用DeepSeek R1/V3 + AnythingLLM + Ollama 打造本地化部署的个人/企业知识库,无须担心数据上传云端的泄露问题

文章目录 前言一、AnythingLLM 简介&基础应用1.主要特性2.下载与安装3.配置 LLM 提供商4.AnythingLLM 工作区&对话 二、AnythingLLM 进阶应用:知识增强使用三、AnythingLLM 的 API 访问四、小结1.聊天模式2.本地存储&向量数据库 前言 如果你不知道Olla…...

开源身份和访问管理方案之keycloak(一)快速入门

文章目录 什么是IAM什么是keycloakKeycloak 的功能 核心概念client管理 OpenID Connect 客户端 Client Scoperealm roleAssigning role mappings分配角色映射Using default roles使用默认角色Role scope mappings角色范围映射 UsersGroupssessionsEventsKeycloak Policy创建策略…...

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

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

HTML5--网页前端编程(下)

HTML5–网页前端编程(下) 9.常用标签下 (1)表格标签 用来展示数据,显示数据,规整条理,可读性好 基本语法 <table><tr> <td>单元格内的文字</td> <td>单元格内的文字</td>… </tr> <tr> <td>单元格内的文字&l…...

Spring 的 ResponseEntity 包装器使用详解

简介 在 Spring 中&#xff0c;ResponseEntity 是 HTTP 响应的包装器。它允许自定义响应的各个方面&#xff1a; HTTP 状态码 响应主体 HTTP 请求头 使用 ResponseEntity 允许完全控制 HTTP 响应&#xff0c;并且它通常用于 RESTful Web 服务中从控制器方法返回响应。 基…...

Git 分布式版本控制工具使用教程

1.关于Git 1.1 什么是Git Git是一款免费、开源的分布式版本控制工具&#xff0c;由Linux创始人Linus Torvalds于2005年开发。它被设计用来处理从很小到非常大的项目&#xff0c;速度和效率都非常高。Git允许多个开发者几乎同时处理同一个项目而不会互相干扰&#xff0c;并且在…...

linux部署ollama+deepseek+dify

Ollama 下载源码 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz启动 export OLLAMA_HOST0.0.0.0:11434 ollama serve访问ip:11434看到即成功 Ollama is running 手动安装deepseek…...

torch_bmm验算及代码测试

文章目录 1. torch_bmm2. pytorch源码 1. torch_bmm torch.bmm的作用是基于batch_size的矩阵乘法,torch.bmm的作用是对应batch位置的矩阵相乘&#xff0c;比如&#xff0c; mat1的第1个位置和mat2的第1个位置进行矩阵相乘得到mat3的第1个位置mat1的第2个位置和mat2的第2个位置…...

Vue3 特点

不强制要求组件有根节点 // vue2 <template><div><h1>标题</h1><p>内容</p></div> </template>// vue3 <template><h1>标题</h1><p>内容</p> </template> 注意事项 虽然 Vue 3 不再强制…...

mysql8 C++源码中创建表函数,表字段最大数量限制,表行最大存储限制

在 MySQL 8 的 C 源码中&#xff0c;表的最大字段数量限制体现在 MAX_FIELDS 宏定义中。这个宏定义了表中可以拥有的最大字段数量。 代码中的体现 在 mysql_prepare_create_table 函数中&#xff0c;有以下代码段检查表的字段数量是否超过最大限制&#xff1a; cpp if (alt…...

CTFHub-RCE系列wp

目录标题 引言什么是RCE漏洞 eval执行文件包含文件包含php://input读取源代码远程包含 命令注入无过滤过滤cat过滤空格过滤目录分隔符过滤运算符综合过滤练习 引言 题目共有如下类型 什么是RCE漏洞 RCE漏洞&#xff0c;全称是Remote Code Execution漏洞&#xff0c;翻译成中文…...

【OneAPI】通过网页预渲染让搜索引擎收录网页

API简介 网页预渲染&#xff0c;适用于动态网页以及单页面的SEO&#xff0c;支持网页缓存。 您无须更改代码即可让搜索引擎收录您的网页。只要将需要预渲染的页面转发的本接口即可。 如果您使用Nginx作为网页服务器&#xff0c;推荐使用以下配置&#xff1a; #您的网站locat…...

从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓

作者&#xff1a;羿莉&#xff08;萧羿&#xff09; 全球出圈的中国大模型 DeepSeek 作为一款革命性的大型语言模型&#xff0c;以其卓越的自然语言处理能力和创新性成本控制引领行业前沿。该模型不仅在性能上媲美 OpenAI-o1&#xff0c;而且在推理模型的成本优化上实现了突破…...

【学习笔记】企业数字化转型顶层设计与企业架构TOGAF9.2-第0章 导论

数据要素资产化迈入关键发展期 围绕发挥数据要素乘数作用&#xff0c;研究实施“数据要素x”行动:从供需两端发力&#xff0c;在智能制造、商贸流通、交通物流、金融服务、医疗健康等若干重点领域&#xff0c;加强场景需求牵引&#xff0c;打通流通障碍、提升供给质量&#xf…...

Vue3 Ref全家桶深度解析:掌握响应式编程精髓

Vue3 Ref全家桶深度解析&#xff1a;掌握响应式编程精髓 一、Ref核心概念 1.1 响应式数据容器 const count ref(0) // 相当于创建了一个响应式容器&#xff1a; {value: 0,__v_isRef: true,// 其他响应式系统属性 }1.2 全家桶全景图 #mermaid-svg-VkHPjjlo16rOyItj {font-f…...

如何避免大语言模型中涉及丢番图方程的问题

希尔伯特第十问题是一个著名的数学问题,涉及不定方程(又称为丢番图方程)的可解答性。然而在大模型中,我们希望问题都是确定的可解的,或者说要尽可能的想办法避免不确定的不可解问题。由于丢番图方程问题是不可判定问题(即不存在一个有效的算法能够解决该类问题的所有实例…...

SpringCloud - Sentinel服务保护

前言 该博客为Sentinel学习笔记&#xff0c;主要目的是为了帮助后期快速复习使用 学习视频&#xff1a;7小快速通关SpringCloud 辅助文档&#xff1a;SpringCloud快速通关 源码地址&#xff1a;cloud-demo 一、简介 官网&#xff1a;https://sentinelguard.io/zh-cn/index.h…...

Java 使用腾讯翻译 API 实现含 HTML 标签文本,json值,精准翻译工具

注意&#xff1a;需搭配标题二的腾讯翻译工具使用 一-1、翻译标签文本工具 package org.springblade.common.utils;import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern;public class TencentTranslationFor…...

前端导出pdf,所见即所得

一、推荐方案&#xff1a;html2canvas jsPDF&#xff08;图片式PDF&#xff09; javascript import html2canvas from html2canvas; import jsPDF from jspdf;const exportPDF async (elementId, fileName) > {const element document.getElementById(elementId);// 1.…...

单片机上SPI和IIC的区别

SPI&#xff08;Serial Peripheral Interface&#xff09;和IC&#xff08;Inter-Integrated Circuit&#xff09;是两种常用的嵌入式外设通信协议&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的详细对比&#xff1a; — 1. 基本概念 SPI&#xff0…...

03-DevOps-安装并初始化Gitlab

Gitlab可以理解为是自己搭建的GitHub&#xff0c;也就是自己的代码仓库。 开启macvlan 在192.168.1.10服务器上&#xff0c;构建Macvlan网络&#xff0c;这种网络模式可以为每个容器独立分配ip。 docker network create -d macvlan \--subnet192.168.1.0/24 \--ip-range192.16…...

RabbitMQ 从入门到精通:从工作模式到集群部署实战(五)

#作者&#xff1a;闫乾苓 系列前几篇&#xff1a; 《RabbitMQ 从入门到精通&#xff1a;从工作模式到集群部署实战&#xff08;一&#xff09;》&#xff1a;link 《RabbitMQ 从入门到精通&#xff1a;从工作模式到集群部署实战&#xff08;二&#xff09;》&#xff1a; lin…...

DFS+回溯+剪枝(深度优先搜索)——搜索算法

DFS也就是深度优先搜索&#xff0c;比如二叉树的前&#xff0c;中&#xff0c;后序遍历都属于DFS。其本质是递归&#xff0c;要学好DFS首先需要掌握递归。接下来咱们就一起来学习DFS涉及的算法。 一、递归 1.什么是递归&#xff1f; 递归可以这样理解把它拆分出来&#xff0…...

使用PyCharm创建项目以及如何注释代码

创建好项目后会出现如下图所示的画面&#xff0c;我们可以通过在项目文件夹上点击鼠标右键&#xff0c;选择“New”菜单下的“Python File”来创建一个 Python 文件&#xff0c;在给文件命名时建议使用英文字母和下划线的组合&#xff0c;创建好的 Python 文件会自动打开&#…...

ArrayList和LinkedList有什么区别?在什么情况下使用ArrayList更高效?

ArrayList和LinkedList在Java中是两种常用的数据结构&#xff0c;分别基于数组和链表实现。它们在性能、内存使用和适用场景上各有特点。 ArrayList与LinkedList的主要区别 数据结构&#xff1a; ArrayList&#xff1a;基于动态数组实现&#xff0c;元素存储在连续的内存空间…...

Spring MVC 拦截器(Interceptor)与过滤器(Filter)的区别?

1、两者概述 拦截器&#xff08;Interceptor&#xff09;&#xff1a; 只会拦截那些被 Controller 或 RestController 标注的类中的方法处理的请求&#xff0c;也就是那些由 Spring MVC 调度的请求。过滤器&#xff08;Filter&#xff09;&#xff1a; 会拦截所有类型的 HTTP …...

elasticsearch实战应用从入门到高效使用java集成es快速上手

Elasticsearch 因其出色的性能、可扩展性和易用性,成为了处理大规模数据和构建搜索引擎的首选工具。本文将通过一个实际案例,详细讲解如何在 Spring Boot 项目中集成 Elasticsearch,进行数据索引、搜索、聚合分析等操作。 一、Elasticsearch 简介 Elasticsearch 是一个基于…...