Network Working Group                                         H. Kennedy
Request for Comments: 3252                                      Mimezine
Category: Informational                                     1 April 2002
        
Network Working Group                                         H. Kennedy
Request for Comments: 3252                                      Mimezine
Category: Informational                                     1 April 2002
        

Binary Lexical Octet Ad-hoc Transport

二进制词汇八位组自组织传输

Status of this Memo

本备忘录的状况

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

本备忘录为互联网社区提供信息。它没有规定任何类型的互联网标准。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2002). All Rights Reserved.

版权所有(C)互联网协会(2002年)。版权所有。

Abstract

摘要

This document defines a reformulation of IP and two transport layer protocols (TCP and UDP) as XML applications.

本文档将IP和两个传输层协议(TCP和UDP)重新定义为XML应用程序。

1. Introduction
1. 介绍
1.1. Overview
1.1. 概述

This document describes the Binary Lexical Octet Ad-hoc Transport (BLOAT): a reformulation of a widely-deployed network-layer protocol (IP [RFC791]), and two associated transport layer protocols (TCP [RFC793] and UDP [RFC768]) as XML [XML] applications. It also describes methods for transporting BLOAT over Ethernet and IEEE 802 networks as well as encapsulating BLOAT in IP for gatewaying BLOAT across the public Internet.

本文档描述了二进制词汇八位组自组织传输(BLOAT):一种广泛部署的网络层协议(IP[RFC791])和两个相关传输层协议(TCP[RFC793]和UDP[RFC768])作为XML[XML]应用程序的重新表述。它还描述了通过以太网和IEEE 802网络传输BLOAT的方法,以及将BLOAT封装在IP中,以便通过公共Internet进行网关BLOAT。

1.2. Motivation
1.2. 动机

The wild popularity of XML as a basis for application-level protocols such as the Blocks Extensible Exchange Protocol [RFC3080], the Simple Object Access Protocol [SOAP], and Jabber [JABBER] prompted investigation into the possibility of extending the use of XML in the protocol stack. Using XML at both the transport and network layer in addition to the application layer would provide for an amazing amount of power and flexibility while removing dependencies on proprietary and hard-to-understand binary protocols. This protocol unification would also allow applications to use a single XML parser for all aspects of their operation, eliminating developer time spent figuring out the intricacies of each new protocol, and moving the hard work of

XML作为应用层协议(如块可扩展交换协议[RFC3080]、简单对象访问协议[SOAP]和Jabber[Jabber])的基础的广泛流行促使人们研究在协议栈中扩展XML使用的可能性。除了应用层之外,在传输层和网络层使用XML将提供惊人的能力和灵活性,同时消除对专有和难以理解的二进制协议的依赖。这种协议的统一还允许应用程序在其操作的各个方面使用单个XML解析器,从而消除了开发人员花在弄清每个新协议的复杂性上的时间,并转移了开发人员的繁重工作

parsing to the XML toolset. The use of XML also mitigates concerns over "network vs. host" byte ordering which is at the root of many network application bugs.

解析到XML工具集。XML的使用还减轻了对“网络与主机”字节顺序的担忧,这是许多网络应用程序错误的根源。

1.3. Relation to Existing Protocols
1.3. 与现有协议的关系

The reformulations specified in this RFC follow as closely as possible the spirit of the RFCs on which they are based, and so MAY contain elements or attributes that would not be needed in a pure reworking (e.g. length attributes, which are implicit in XML.)

本RFC中规定的重新表述尽可能遵循RFC的精神,因此可能包含纯返工中不需要的元素或属性(例如XML中隐含的长度属性)

The layering of network and transport protocols are maintained in this RFC despite the optimizations that could be made if the line were somewhat blurred (i.e. merging TCP and IP into a single, larger element in the DTD) in order to foster future use of this protocol as a basis for reformulating other protocols (such as ICMP.)

The layering of network and transport protocols are maintained in this RFC despite the optimizations that could be made if the line were somewhat blurred (i.e. merging TCP and IP into a single, larger element in the DTD) in order to foster future use of this protocol as a basis for reformulating other protocols (such as ICMP.)translate error, please retry

Other than the encoding, the behavioral aspects of each of the existing protocols remain unchanged. Routing, address spaces, TCP congestion control, etc. behave as specified in the extant standards. Adapting to new standards and experimental algorithm heuristics for improving performance will become much easier once the move to BLOAT has been completed.

除了编码之外,每个现有协议的行为方面保持不变。路由、地址空间、TCP拥塞控制等行为符合现有标准的规定。一旦向膨胀的转变完成,适应新标准和实验性算法启发式以提高性能将变得容易得多。

1.4. Requirement Levels
1.4. 需求水平

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119 [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照BCP 14、RFC 2119[RFC2119]中的说明进行解释。

2. IPoXML
2. IPoXML

This protocol MUST be implemented to be compliant with this RFC. IPoXML is the root protocol REQUIRED for effective use of TCPoXML (section 3.) and higher-level application protocols.

必须实施此协议才能符合此RFC。IPoXML是有效使用TCPoXML(第3节)和更高级别应用程序协议所需的根协议。

The DTD for this document type can be found in section 7.1.

该文件类型的DTD可在第7.1节中找到。

The routing of IPoXML can be easily implemented on hosts with an XML parser, as the regular structure lends itself handily to parsing and validation of the document/datagram and then processing the destination address, TTL, and checksum before sending it on to its next-hop.

IPoXML的路由可以通过XML解析器在主机上轻松实现,因为常规结构便于解析和验证文档/数据报,然后在将其发送到下一跳之前处理目标地址、TTL和校验和。

The reformulation of IPv4 was chosen over IPv6 [RFC2460] due to the wider deployment of IPv4 and the fact that implementing IPv6 as XML would have exceeded the 1500 byte Ethernet MTU.

由于IPv4的广泛部署以及将IPv6实现为XML将超过1500字节以太网MTU这一事实,IPv4的重新格式化选择了IPv6[RFC2460]。

All BLOAT implementations MUST use - and specify - the UTF-8 encoding of RFC 2279 [RFC2279]. All BLOAT document/datagrams MUST be well-formed and include the XMLDecl.

所有BLOAT实现必须使用并指定RFC2279[RFC2279]的UTF-8编码。所有膨胀文档/数据报必须格式良好,并包含XMLDecl。

2.1. IP Description
2.1. IP描述

A number of items have changed (for the better) from the original IP specification. Bit-masks, where present have been converted into human-readable values. IP addresses are listed in their dotted-decimal notation [RFC1123]. Length and checksum values are present as decimal integers.

许多项目已从原始IP规范更改(更好)。位掩码(如果存在)已转换为人类可读的值。IP地址以点十进制表示法[RFC1123]列出。长度和校验和值以十进制整数表示。

To calculate the length and checksum fields of the IP element, a canonicalized form of the element MUST be used. The canonical form SHALL have no whitespace (including newline characters) between elements and only one space character between attributes. There SHALL NOT be a space following the last attribute in an element.

要计算IP元素的长度和校验和字段,必须使用元素的规范化形式。规范形式的元素之间不应有空格(包括换行符),属性之间只应有一个空格字符。元素中最后一个属性后面不应有空格。

An iterative method SHOULD be used to calculate checksums, as the length field will vary based on the size of the checksum.

应使用迭代方法计算校验和,因为长度字段将根据校验和的大小而变化。

The payload element bears special attention. Due to the character set restrictions of XML, the payload of IP datagrams (which MAY contain arbitrary data) MUST be encoded for transport. This RFC REQUIRES the contents of the payload to be encoded in the base-64 encoding of RFC 2045 [RFC2045], but removes the requirement that the encoded output MUST be wrapped on 76-character lines.

有效载荷元件需要特别注意。由于XML的字符集限制,IP数据报(可能包含任意数据)的有效负载必须进行编码以进行传输。此RFC要求有效负载的内容以RFC 2045[RFC2045]的base-64编码进行编码,但删除了编码输出必须包装在76个字符行上的要求。

2.2. Example Datagram
2.2. 示例数据报

The following is an example IPoXML datagram with an empty payload:

以下是一个带有空负载的IPoXML数据报示例:

   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd">
   <ip>
   <header length="474">
   <version value="4"/>
   <tos precedence="Routine" delay="Normal" throughput="Normal"
        relibility="Normal" reserved="0"/>
   <total.length value="461"/>
   <id value="1"/>
   <flags reserved="0" df="dont" mf="last"/>
   <offset value="0"/>
   <ttl value="255"/>
   <protocol value="6"/>
   <checksum value="8707"/>
   <source address="10.0.0.22"/>
   <destination address="10.0.0.1"/>
   <options>
   <end copied="0" class="0" number="0"/>
   </options>
   <padding pad="0"/>
   </header>
   <payload>
   </payload>
   </ip>
        
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd">
   <ip>
   <header length="474">
   <version value="4"/>
   <tos precedence="Routine" delay="Normal" throughput="Normal"
        relibility="Normal" reserved="0"/>
   <total.length value="461"/>
   <id value="1"/>
   <flags reserved="0" df="dont" mf="last"/>
   <offset value="0"/>
   <ttl value="255"/>
   <protocol value="6"/>
   <checksum value="8707"/>
   <source address="10.0.0.22"/>
   <destination address="10.0.0.1"/>
   <options>
   <end copied="0" class="0" number="0"/>
   </options>
   <padding pad="0"/>
   </header>
   <payload>
   </payload>
   </ip>
        
3. TCPoXML
3. TCPoXML

This protocol MUST be implemented to be compliant with this RFC. The DTD for this document type can be found in section 7.2.

必须实施此协议才能符合此RFC。该文件类型的DTD可在第7.2节中找到。

3.1. TCP Description
3.1. TCP描述

A number of items have changed from the original TCP specification. Bit-masks, where present have been converted into human-readable values. Length and checksum and port values are present as decimal integers.

许多项目与原始TCP规范不同。位掩码(如果存在)已转换为人类可读的值。长度、校验和和和端口值以十进制整数表示。

To calculate the length and checksum fields of the TCP element, a canonicalized form of the element MUST be used as in section 2.1.

要计算TCP元素的长度和校验和字段,必须使用该元素的规范化形式,如第2.1节所示。

An iterative method SHOULD be used to calculate checksums as in section 2.1.

应使用迭代法计算第2.1节中的校验和。

The payload element MUST be encoded as in section 2.1.

有效载荷元件必须按照第2.1节的规定进行编码。

The TCP offset element was expanded to a maximum of 255 from 16 to allow for the increased size of the header in XML.

TCP偏移量元素从16扩展到最大255,以允许增加XML中标头的大小。

TCPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header as well as the <!DOCTYPE> declaration.

IPoXML封装的TCPoXML数据报可能会省略<?xml?>头以及<!DOCTYPE>声明。

3.2. Example Datagram
3.2. 示例数据报

The following is an example TCPoXML datagram with an empty payload:

以下是一个负载为空的TCPoXML数据报示例:

   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
   <tcp>
   <tcp.header>
   <src port="31415"/>
   <dest port="42424"/>
   <sequence number="322622954"/>
   <acknowledgement number="689715995"/>
   <offset number=""/>
   <reserved value="0"/>
   <control syn="1" ack="1"/>
   <window size="1"/>
   <urgent pointer="0"/>
   <checksum value="2988"/>
   <tcp.options>
   <tcp.end kind="0"/>
   </tcp.options>
   <padding pad="0"/>
   </tcp.header>
   <payload>
   </payload>
   </tcp>
        
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
   <tcp>
   <tcp.header>
   <src port="31415"/>
   <dest port="42424"/>
   <sequence number="322622954"/>
   <acknowledgement number="689715995"/>
   <offset number=""/>
   <reserved value="0"/>
   <control syn="1" ack="1"/>
   <window size="1"/>
   <urgent pointer="0"/>
   <checksum value="2988"/>
   <tcp.options>
   <tcp.end kind="0"/>
   </tcp.options>
   <padding pad="0"/>
   </tcp.header>
   <payload>
   </payload>
   </tcp>
        
4. UDPoXML
4. UDPoXML

This protocol MUST be implemented to be compliant with this RFC. The DTD for this document type can be found in section 7.3.

必须实施此协议才能符合此RFC。该文件类型的DTD可在第7.3节中找到。

4.1. UDP Description
4.1. UDP描述

A number of items have changed from the original UDP specification. Bit-masks, where present have been converted into human-readable values. Length and checksum and port values are present as decimal integers.

许多项与原始UDP规范不同。位掩码(如果存在)已转换为人类可读的值。长度、校验和和和端口值以十进制整数表示。

To calculate the length and checksum fields of the UDP element, a canonicalized form of the element MUST be used as in section 2.1. An iterative method SHOULD be used to calculate checksums as in section 2.1.

要计算UDP元素的长度和校验和字段,必须使用该元素的规范化形式,如第2.1节所示。应使用迭代法计算第2.1节中的校验和。

The payload element MUST be encoded as in section 2.1.

有效载荷元件必须按照第2.1节的规定进行编码。

UDPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header as well as the <!DOCTYPE> declaration.

IPoXML封装的UDPoXML数据报可能会省略<?xml?>头以及<!DOCTYPE>声明。

4.2. Example Datagram
4.2. 示例数据报

The following is an example UDPoXML datagram with an empty payload:

以下是一个具有空负载的UDPoXML数据报示例:

   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
   <udp>
   <udp.header>
   <src port="31415"/>
   <dest port="42424"/>
   <udp.length value="143"/>
   <checksum value="2988"/>
   </udp.header>
   <payload>
   </payload>
   </udp>
        
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
   <udp>
   <udp.header>
   <src port="31415"/>
   <dest port="42424"/>
   <udp.length value="143"/>
   <checksum value="2988"/>
   </udp.header>
   <payload>
   </payload>
   </udp>
        
5. Network Transport
5. 网络传输

This document provides for the transmission of BLOAT datagrams over two common families of physical layer transport. Future RFCs will address additional transports as routing vendors catch up to the specification, and we begin to see BLOAT routed across the Internet backbone.

本文件规定通过两种常见的物理层传输系列传输膨胀数据报。随着路由供应商赶上规范,未来的RFC将解决额外的传输问题,我们开始看到通过Internet主干路由的膨胀。

5.1. Ethernet
5.1. 以太网

BLOAT is encapsulated in Ethernet datagrams as in [RFC894] with the exception that the type field of the Ethernet frame MUST contain the value 0xBEEF. The first 5 octets of the Ethernet frame payload will be 0x3c 3f 78 6d 6c ("<?xml".)

BLOAT封装在以太网数据报中,如[RFC894]所示,但以太网帧的类型字段必须包含值0xBEEF。以太网帧有效负载的前5个八位字节将是0x3c 3f 78 6d 6c(“xml”)

5.2. IEEE 802
5.2. IEEE 802

BLOAT is encapsulated in IEEE 802 Networks as in [RFC1042] except that the protocol type code for IPoXML is 0xBEEF.

BLOAT封装在IEEE 802网络中,与[RFC1042]中相同,只是IPoXML的协议类型代码为0xBEVE。

6. Gatewaying over IP
6. IP网关

In order to facilitate the gradual introduction of BLOAT into the public Internet, BLOAT MAY be encapsulated in IP as in [RFC2003] to gateway between networks that run BLOAT natively on their LANs.

为了便于将BLOAT逐步引入公共互联网,BLOAT可以像[RFC2003]中那样封装在IP中,以在局域网上本机运行BLOAT的网络之间建立网关。

7. DTDs
7. DTD

The Transport DTDs (7.2. and 7.3.) build on the definitions in the Network DTD (7.1.)

传输DTD(7.2.和7.3.)以网络DTD(7.1.)中的定义为基础

The DTDs are referenced by their PubidLiteral and SystemLiteral (from [XML]) although it is understood that most IPoXML implementations will not need to pull down the DTD, as it will normally be embedded in the implementation, and presents something of a catch-22 if you need to load part of your network protocol over the network.

DTD由它们的PubidLiteral和SystemLiteral(来自[XML])引用,尽管可以理解,大多数IPoXML实现不需要下拉DTD,因为它通常嵌入到实现中,如果需要通过网络加载部分网络协议,则会呈现出某种第22条军规。

7.1. IPoXML DTD
7.1. IPOXMLDTD

<!-- DTD for IP over XML. Refer to this DTD as:

<!-- 用于IP over XML的DTD。将此DTD称为:

<!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd"> --> <!-- DTD data types:

<!DOCTYPE ip PUBLIC“-//IETF//DTD BLOAT 1.0 ip//EN“BLOAT.DTD”>--><!--DTD数据类型:

Digits [0..9]+

数字[0..9]+

Precedence "NetworkControl | InternetworkControl | CRITIC | FlashOverride | Flash | Immediate | Priority | Routine"

优先级“网络控制|网络控制|批评家|闪速覆盖|闪速|立即|优先级|例程”

IP4Addr "dotted-decimal" notation of [RFC1123]

[RFC1123]的IP4Addr“点十进制”表示法

Class [0..3]

类别[0..3]

Sec "Unclassified | Confidential | EFTO | MMMM | PROG | Restricted | Secret | Top Secret | Reserved"

第二节“非机密、机密、EFTO、MMMM、PROG、受限、机密、绝密、保留”

Compartments [0..65535]

隔间[0..65535]

Handling [0..65535]

处理[0..65535]

TCC [0..16777216]

变矩器离合器[0..16777216]

-->

-->

   <!ENTITY % Digits "CDATA">
   <!ENTITY % Precedence "CDATA">
   <!ENTITY % IP4Addr "CDATA">
   <!ENTITY % Class "CDATA">
   <!ENTITY % Sec "CDATA">
   <!ENTITY % Compartments "CDATA">
   <!ENTITY % Handling "CDATA">
   <!ENTITY % TCC "CDATA">
        
   <!ENTITY % Digits "CDATA">
   <!ENTITY % Precedence "CDATA">
   <!ENTITY % IP4Addr "CDATA">
   <!ENTITY % Class "CDATA">
   <!ENTITY % Sec "CDATA">
   <!ENTITY % Compartments "CDATA">
   <!ENTITY % Handling "CDATA">
   <!ENTITY % TCC "CDATA">
        
   <!ELEMENT ip (header, payload)>
        
   <!ELEMENT ip (header, payload)>
        
   <!ELEMENT header (version, tos, total.length, id, flags, offset, ttl,
                    protocol, checksum, source, destination, options,
                    padding)>
   <!-- length of header in 32-bit words -->
   <!ATTLIST header
             length %Digits; #REQUIRED>
        
   <!ELEMENT header (version, tos, total.length, id, flags, offset, ttl,
                    protocol, checksum, source, destination, options,
                    padding)>
   <!-- length of header in 32-bit words -->
   <!ATTLIST header
             length %Digits; #REQUIRED>
        
   <!ELEMENT version EMPTY>
   <!-- ip version. SHOULD be "4" -->
   <!ATTLIST version
             value   %Digits;  #REQUIRED>
        
   <!ELEMENT version EMPTY>
   <!-- ip version. SHOULD be "4" -->
   <!ATTLIST version
             value   %Digits;  #REQUIRED>
        
   <!ELEMENT tos EMPTY>
   <!ATTLIST tos
             precedence   %Precedence;    #REQUIRED
             delay    (normal | low)  #REQUIRED
             throughput   (normal | high) #REQUIRED
             relibility   (normal | high) #REQUIRED
             reserved     CDATA #FIXED "0">
        
   <!ELEMENT tos EMPTY>
   <!ATTLIST tos
             precedence   %Precedence;    #REQUIRED
             delay    (normal | low)  #REQUIRED
             throughput   (normal | high) #REQUIRED
             relibility   (normal | high) #REQUIRED
             reserved     CDATA #FIXED "0">
        
   <!ELEMENT total.length EMPTY>
   <!--
    total length of datagram (header and payload) in octets, MUST be
    less than 65,535 (and SHOULD be less than 1024 for IPoXML on local
    ethernets).
   -->
   <!ATTLIST total.length
             value %Digits; #REQUIRED>
        
   <!ELEMENT total.length EMPTY>
   <!--
    total length of datagram (header and payload) in octets, MUST be
    less than 65,535 (and SHOULD be less than 1024 for IPoXML on local
    ethernets).
   -->
   <!ATTLIST total.length
             value %Digits; #REQUIRED>
        
   <!ELEMENT id EMPTY>
   <!-- 0 <= id <= 65,535  -->
   <!ATTLIST id
             value %Digits; #REQUIRED>
        
   <!ELEMENT id EMPTY>
   <!-- 0 <= id <= 65,535  -->
   <!ATTLIST id
             value %Digits; #REQUIRED>
        
   <!ELEMENT flags EMPTY>
   <!-- df = don't fragment, mf = more fragments  -->
   <!ATTLIST flags
        
   <!ELEMENT flags EMPTY>
   <!-- df = don't fragment, mf = more fragments  -->
   <!ATTLIST flags
        

reserved CDATA #FIXED "0" df (may|dont) #REQUIRED mf (last|more) #REQUIRED>

预订CDATA#固定“0”df(可能不)#需要mf(最后一个|更多)#需要>

   <!ELEMENT offset EMPTY>
   <!-- 0 <= offset <= 8192 measured in 8 octet (64-bit) chunks -->
   <!ATTLIST offset
             value %Digits; #REQUIRED>
        
   <!ELEMENT offset EMPTY>
   <!-- 0 <= offset <= 8192 measured in 8 octet (64-bit) chunks -->
   <!ATTLIST offset
             value %Digits; #REQUIRED>
        
   <!ELEMENT ttl EMPTY>
   <!-- 0 <= ttl <= 255 -->
   <!ATTLIST ttl
             value %Digits; #REQUIRED>
        
   <!ELEMENT ttl EMPTY>
   <!-- 0 <= ttl <= 255 -->
   <!ATTLIST ttl
             value %Digits; #REQUIRED>
        
   <!ELEMENT protocol EMPTY>
   <!-- 0 <= protocol <= 255 (per IANA) -->
   <!ATTLIST protocol
             value %Digits; #REQUIRED>
        
   <!ELEMENT protocol EMPTY>
   <!-- 0 <= protocol <= 255 (per IANA) -->
   <!ATTLIST protocol
             value %Digits; #REQUIRED>
        
   <!ELEMENT checksum EMPTY>
   <!-- 0 <= checksum <= 65535 (over header only) -->
   <!ATTLIST checksum
             value %Digits; #REQUIRED>
        
   <!ELEMENT checksum EMPTY>
   <!-- 0 <= checksum <= 65535 (over header only) -->
   <!ATTLIST checksum
             value %Digits; #REQUIRED>
        
   <!ELEMENT source EMPTY>
   <!ATTLIST source
             address %IP4Addr; #REQUIRED>
        
   <!ELEMENT source EMPTY>
   <!ATTLIST source
             address %IP4Addr; #REQUIRED>
        
   <!ELEMENT destination EMPTY>
   <!ATTLIST destination
             address %IP4Addr; #REQUIRED>
        
   <!ELEMENT destination EMPTY>
   <!ATTLIST destination
             address %IP4Addr; #REQUIRED>
        
   <!ELEMENT options ( end | noop | security | loose | strict | record
                     | stream | timestamp )*>
        
   <!ELEMENT options ( end | noop | security | loose | strict | record
                     | stream | timestamp )*>
        
   <!ELEMENT end EMPTY>
   <!ATTLIST end
             copied (0|1) #REQUIRED
             class  CDATA #FIXED "0"
             number CDATA #FIXED "0">
        
   <!ELEMENT end EMPTY>
   <!ATTLIST end
             copied (0|1) #REQUIRED
             class  CDATA #FIXED "0"
             number CDATA #FIXED "0">
        
   <!ELEMENT noop EMPTY>
   <!ATTLIST noop
             copied (0|1) #REQUIRED
             class  CDATA #FIXED "0"
             number CDATA #FIXED "1">
        
   <!ELEMENT noop EMPTY>
   <!ATTLIST noop
             copied (0|1) #REQUIRED
             class  CDATA #FIXED "0"
             number CDATA #FIXED "1">
        
   <!ELEMENT security EMPTY>
        
   <!ELEMENT security EMPTY>
        
   <!ATTLIST security
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "2"
             length CDATA #FIXED "11"
             security %Sec; #REQUIRED
             compartments %Compartments; #REQUIRED
             handling %Handling; #REQUIRED
             tcc %TCC; #REQUIRED>
   <!ELEMENT loose (hop)+>
   <!ATTLIST loose
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "3"
             length %Digits; #REQUIRED
             pointer %Digits; #REQUIRED>
        
   <!ATTLIST security
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "2"
             length CDATA #FIXED "11"
             security %Sec; #REQUIRED
             compartments %Compartments; #REQUIRED
             handling %Handling; #REQUIRED
             tcc %TCC; #REQUIRED>
   <!ELEMENT loose (hop)+>
   <!ATTLIST loose
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "3"
             length %Digits; #REQUIRED
             pointer %Digits; #REQUIRED>
        
   <!ELEMENT hop EMPTY>
   <!ATTLIST hop
             address %IP4Addr; #REQUIRED>
        
   <!ELEMENT hop EMPTY>
   <!ATTLIST hop
             address %IP4Addr; #REQUIRED>
        
   <!ELEMENT strict (hop)+>
   <!ATTLIST strict
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "9"
             length %Digits; #REQUIRED
             pointer %Digits; #REQUIRED>
        
   <!ELEMENT strict (hop)+>
   <!ATTLIST strict
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "9"
             length %Digits; #REQUIRED
             pointer %Digits; #REQUIRED>
        
   <!ELEMENT record (hop)+>
   <!ATTLIST record
             copied CDATA #FIXED "0"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "7"
             length %Digits; #REQUIRED
             pointer %Digits; #REQUIRED>
        
   <!ELEMENT record (hop)+>
   <!ATTLIST record
             copied CDATA #FIXED "0"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "7"
             length %Digits; #REQUIRED
             pointer %Digits; #REQUIRED>
        
   <!ELEMENT stream EMPTY>
   <!-- 0 <= id <= 65,535 -->
   <!ATTLIST stream
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "8"
             length CDATA #FIXED "4"
             id %Digits; #REQUIRED>
        
   <!ELEMENT stream EMPTY>
   <!-- 0 <= id <= 65,535 -->
   <!ATTLIST stream
             copied CDATA #FIXED "1"
             class  CDATA #FIXED "0"
             number CDATA #FIXED "8"
             length CDATA #FIXED "4"
             id %Digits; #REQUIRED>
        
   <!ELEMENT timestamp (tstamp)+>
   <!-- 0 <= oflw <=15 -->
        
   <!ELEMENT timestamp (tstamp)+>
   <!-- 0 <= oflw <=15 -->
        
   <!ATTLIST timestamp
             copied CDATA #FIXED "0"
             class  CDATA #FIXED "2"
             number CDATA #FIXED "4"
             length %Digits;  #REQUIRED
             pointer %Digits; #REQUIRED
             oflw %Digits;    #REQUIRED
             flag (0 | 1 | 3)  #REQUIRED>
        
   <!ATTLIST timestamp
             copied CDATA #FIXED "0"
             class  CDATA #FIXED "2"
             number CDATA #FIXED "4"
             length %Digits;  #REQUIRED
             pointer %Digits; #REQUIRED
             oflw %Digits;    #REQUIRED
             flag (0 | 1 | 3)  #REQUIRED>
        
   <!ELEMENT tstamp EMPTY>
   <!ATTLIST tstamp
             time %Digits;   #REQUIRED
             address %IP4Addr; #IMPLIED>
   <!--
       padding to bring header to 32-bit boundary.
       pad MUST be "0"*
    -->
   <!ELEMENT padding EMPTY>
   <!ATTLIST padding
             pad CDATA #REQUIRED>
        
   <!ELEMENT tstamp EMPTY>
   <!ATTLIST tstamp
             time %Digits;   #REQUIRED
             address %IP4Addr; #IMPLIED>
   <!--
       padding to bring header to 32-bit boundary.
       pad MUST be "0"*
    -->
   <!ELEMENT padding EMPTY>
   <!ATTLIST padding
             pad CDATA #REQUIRED>
        
   <!-- payload MUST be encoded as base-64 [RFC2045], as modified
        by section 2.1 of this RFC -->
   <!ELEMENT payload (CDATA)>
        
   <!-- payload MUST be encoded as base-64 [RFC2045], as modified
        by section 2.1 of this RFC -->
   <!ELEMENT payload (CDATA)>
        
7.2. TCPoXML DTD
7.2. tcpoxmldtd

<!-- DTD for TCP over XML. Refer to this DTD as:

<!-- 用于TCP over XML的DTD。将此DTD称为:

      <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
   -->
        
      <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
   -->
        
   <!-- the pseudoheader is only included for checksum calculations -->
   <!ELEMENT tcp (tcp.pseudoheader?, tcp.header, payload)>
        
   <!-- the pseudoheader is only included for checksum calculations -->
   <!ELEMENT tcp (tcp.pseudoheader?, tcp.header, payload)>
        

<!ELEMENT tcp.header (src, dest, sequence, acknowledgement, offset, reserved, control, window, checksum, urgent, tcp.options, padding)>

<!元素tcp.header(src、dest、序列、确认、偏移、保留、控制、窗口、校验和、紧急、tcp.options、填充)>

   <!ELEMENT src EMPTY>
   <!-- 0 <= port <= 65,535 -->
   <!ATTLIST src
             port %Digits; #REQUIRED>
        
   <!ELEMENT src EMPTY>
   <!-- 0 <= port <= 65,535 -->
   <!ATTLIST src
             port %Digits; #REQUIRED>
        
   <!ELEMENT dest EMPTY>
   <!-- 0 <= port <= 65,535 -->
        
   <!ELEMENT dest EMPTY>
   <!-- 0 <= port <= 65,535 -->
        
   <!ATTLIST dest
             port %Digits; #REQUIRED>
        
   <!ATTLIST dest
             port %Digits; #REQUIRED>
        
   <!ELEMENT sequence EMPTY>
   <!-- 0 <= number <= 4294967295 -->
   <!ATTLIST sequence
             number %Digits; #REQUIRED>
        
   <!ELEMENT sequence EMPTY>
   <!-- 0 <= number <= 4294967295 -->
   <!ATTLIST sequence
             number %Digits; #REQUIRED>
        
   <!ELEMENT acknowledgement EMPTY>
   <!-- 0 <= number <= 4294967295 -->
   <!ATTLIST acknowledgement
             number %Digits; #REQUIRED>
        
   <!ELEMENT acknowledgement EMPTY>
   <!-- 0 <= number <= 4294967295 -->
   <!ATTLIST acknowledgement
             number %Digits; #REQUIRED>
        
   <!ELEMENT offset EMPTY>
   <!-- 0 <= number <= 255 -->
   <!ATTLIST offset
             number %Digits; #REQUIRED>
        
   <!ELEMENT offset EMPTY>
   <!-- 0 <= number <= 255 -->
   <!ATTLIST offset
             number %Digits; #REQUIRED>
        
   <!ELEMENT reserved EMPTY>
   <!ATTLIST reserved
             value CDATA #FIXED "0">
        
   <!ELEMENT reserved EMPTY>
   <!ATTLIST reserved
             value CDATA #FIXED "0">
        
   <!ELEMENT control EMPTY>
   <!ATTLIST control
             urg (0|1) #IMPLIED
             ack (0|1) #IMPLIED
             psh (0|1) #IMPLIED
             rst (0|1) #IMPLIED
             syn (0|1) #IMPLIED
             fin (0|1) #IMPLIED>
        
   <!ELEMENT control EMPTY>
   <!ATTLIST control
             urg (0|1) #IMPLIED
             ack (0|1) #IMPLIED
             psh (0|1) #IMPLIED
             rst (0|1) #IMPLIED
             syn (0|1) #IMPLIED
             fin (0|1) #IMPLIED>
        
   <!ELEMENT window EMPTY>
   <!-- 0 <= size <= 65,535 -->
   <!ATTLIST window
             size %Digits; #REQUIRED>
        
   <!ELEMENT window EMPTY>
   <!-- 0 <= size <= 65,535 -->
   <!ATTLIST window
             size %Digits; #REQUIRED>
        
   <!--
      checksum as in ip, but with
      the following pseudo-header added into the tcp element:
     -->
   <!ELEMENT tcp.pseudoheader (source, destination, protocol,
                               tcp.length)>
        
   <!--
      checksum as in ip, but with
      the following pseudo-header added into the tcp element:
     -->
   <!ELEMENT tcp.pseudoheader (source, destination, protocol,
                               tcp.length)>
        

<!-- tcp header + data length in octets. does not include the size of

<!-- tcp标头+数据长度(以八位字节为单位)。不包括的大小

the pseudoheader. -->

伪标题。-->

   <!ELEMENT tcp.length EMPTY>
   <!ATTLIST tcp.length
             value %Digits; #REQUIRED>
        
   <!ELEMENT tcp.length EMPTY>
   <!ATTLIST tcp.length
             value %Digits; #REQUIRED>
        
   <!ELEMENT urgent EMPTY>
   <!-- 0 <= pointer <= 65,535 -->
   <!ATTLIST urgent
             pointer %Digits; #REQUIRED>
        
   <!ELEMENT urgent EMPTY>
   <!-- 0 <= pointer <= 65,535 -->
   <!ATTLIST urgent
             pointer %Digits; #REQUIRED>
        
   <!ELEMENT tcp.options (tcp.end | tcp.noop | tcp.mss)+>
        
   <!ELEMENT tcp.options (tcp.end | tcp.noop | tcp.mss)+>
        
   <!ELEMENT tcp.end EMPTY>
   <!ATTLIST tcp.end
             kind CDATA #FIXED "0">
        
   <!ELEMENT tcp.end EMPTY>
   <!ATTLIST tcp.end
             kind CDATA #FIXED "0">
        
   <!ELEMENT tcp.noop EMPTY>
   <!ATTLIST tcp.noop
             kind CDATA #FIXED "1">
        
   <!ELEMENT tcp.noop EMPTY>
   <!ATTLIST tcp.noop
             kind CDATA #FIXED "1">
        
   <!ELEMENT tcp.mss EMPTY>
   <!ATTLIST tcp.mss
             kind CDATA #FIXED "2"
             length CDATA #FIXED "4"
             size %Digits; #REQUIRED>
        
   <!ELEMENT tcp.mss EMPTY>
   <!ATTLIST tcp.mss
             kind CDATA #FIXED "2"
             length CDATA #FIXED "4"
             size %Digits; #REQUIRED>
        
7.3. UDPoXML DTD
7.3. UDPOXMLDTD

<!-- DTD for UDP over XML. Refer to this DTD as:

<!-- 用于UDP over XML的DTD。将此DTD称为:

      <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
   -->
        
      <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
   -->
        
   <!ELEMENT udp (udp.pseudoheader?, udp.header, payload)>
        
   <!ELEMENT udp (udp.pseudoheader?, udp.header, payload)>
        
   <!ELEMENT udp.header (src, dest, udp.length, checksum)>
        
   <!ELEMENT udp.header (src, dest, udp.length, checksum)>
        

<!ELEMENT udp.pseudoheader (source, destination, protocol, udp.length)>

<!元素udp.pseudoheader(源、目标、协议、udp.length)>

   <!--
      udp header + data length in octets. does not include the size of
      the pseudoheader.
    -->
   <!ELEMENT udp.length EMPTY>
   <!ATTLIST udp.length
             value %Digits; #REQUIRED>
        
   <!--
      udp header + data length in octets. does not include the size of
      the pseudoheader.
    -->
   <!ELEMENT udp.length EMPTY>
   <!ATTLIST udp.length
             value %Digits; #REQUIRED>
        
8. Security Considerations
8. 安全考虑

XML, as a subset of SGML, has the same security considerations as specified in SGML Media Types [RFC1874]. Security considerations that apply to IP, TCP and UDP also likely apply to BLOAT as it does not attempt to correct for issues not related to message format.

XML作为SGML的一个子集,具有与SGML媒体类型[RFC1874]中指定的相同的安全注意事项。适用于IP、TCP和UDP的安全注意事项也可能适用于BLOAT,因为它不会尝试纠正与消息格式无关的问题。

9. References
9. 工具书类

[JABBER] Miller, J., "Jabber", draft-miller-jabber-00.txt, February 2002. (Work in Progress)

[JABBER]Miller,J.,“JABBER”,draft-Miller-JABBER-00.txt,2002年2月。(正在进行的工作)

[RFC768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980.

[RFC768]Postel,J.,“用户数据报协议”,STD 6,RFC 768,1980年8月。

[RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981.

[RFC791]Postel,J.,“互联网协议”,标准5,RFC7911981年9月。

[RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981.

[RFC793]Postel,J.,“传输控制协议”,标准7,RFC 793,1981年9月。

[RFC894] Hornig, C., "Standard for the Transmission of IP Datagrams over Ethernet Networks.", RFC 894, April 1984.

[RFC894]Hornig,C.,“通过以太网传输IP数据报的标准”,RFC894,1984年4月。

[RFC1042] Postel, J. and J. Reynolds, "Standard for the Transmission of IP Datagrams Over IEEE 802 Networks", STD 43, RFC 1042, February 1988.

[RFC1042]Postel,J.和J.Reynolds,“通过IEEE 802网络传输IP数据报的标准”,STD 43,RFC 1042,1988年2月。

[RFC1123] Braden, R., "Requirements for Internet Hosts - Application and Support", RFC 1123, October 1989.

[RFC1123]Braden,R.,“互联网主机的要求-应用和支持”,RFC1123,1989年10月。

[RFC1874] Levinson, E., "SGML Media Types", RFC 1874, December 1995.

[RFC1874]Levinson,E.“SGML媒体类型”,RFC18741995年12月。

[RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, October 1996.

[RFC2003]Perkins,C.,“IP内的IP封装”,RFC 2003,1996年10月。

[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.

[RFC2045]Freed,N.和N.Borenstein,“多用途Internet邮件扩展(MIME)第一部分:Internet邮件正文格式”,RFC 20451996年11月。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC 2279, January 1998.

[RFC2279]Yergeau,F.,“UTF-8,ISO 10646的转换格式”,RFC 2279,1998年1月。

[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.

[RFC2460]Deering,S.和R.Hinden,“互联网协议,第6版(IPv6)规范”,RFC 2460,1998年12月。

[RFC3080] Rose, M., "The Blocks Extensible Exchange Protocol Core", RFC 3080, March 2001.

[RFC3080]Rose,M.,“块可扩展交换协议核心”,RFC 30802001年3月。

   [SOAP]      Box, D., Ehnebuske, D., Kakivaya, G., Layman, A.,
               Mendelsohn, N., Nielsen, H. F., Thatte, S. Winer, D.,
               "Simple Object Access Protocol (SOAP) 1.1" World Wide Web
               Consortium Note, May 2000 http://www.w3.org/TR/SOAP/
        
   [SOAP]      Box, D., Ehnebuske, D., Kakivaya, G., Layman, A.,
               Mendelsohn, N., Nielsen, H. F., Thatte, S. Winer, D.,
               "Simple Object Access Protocol (SOAP) 1.1" World Wide Web
               Consortium Note, May 2000 http://www.w3.org/TR/SOAP/
        
   [XML]       Bray, T., Paoli, J., Sperberg-McQueen, C. M., "Extensible
               Markup Language (XML)" World Wide Web Consortium
               Recommendation REC- xml-19980210.
               http://www.w3.org/TR/1998/REC-xml-19980210
        
   [XML]       Bray, T., Paoli, J., Sperberg-McQueen, C. M., "Extensible
               Markup Language (XML)" World Wide Web Consortium
               Recommendation REC- xml-19980210.
               http://www.w3.org/TR/1998/REC-xml-19980210
        
10. Author's Address
10. 作者地址

Hugh Kennedy Mimezine 1060 West Addison Chicago, IL 60613 USA

美国伊利诺伊州芝加哥西艾迪生市休斯·肯尼迪·米梅津1060号,邮编60613

   EMail: kennedyh@engin.umich.edu
        
   EMail: kennedyh@engin.umich.edu
        
11. Full Copyright Statement
11. 完整版权声明

Copyright (C) The Internet Society (2002). All Rights Reserved.

版权所有(C)互联网协会(2002年)。版权所有。

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

本文件及其译本可复制并提供给他人,对其进行评论或解释或协助其实施的衍生作品可全部或部分编制、复制、出版和分发,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文件本身,例如删除版权通知或对互联网协会或其他互联网组织的引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准过程中定义的版权程序,或根据需要将其翻译成英语以外的其他语言。

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。