summaryrefslogtreecommitdiffstats
path: root/tests/auto/qhttp/webserver/rfc3252
blob: b80c61bf0a1dc4bf28d25901114632c05fd88d1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899






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.

Abstract

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

1.   Introduction

1.1. Overview

   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.

1.2. Motivation

   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




Kennedy                      Informational                      [Page 1]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   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.

1.3. Relation to Existing Protocols

   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.)

   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.)

   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.

1.4. Requirement Levels

   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].

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.

   The DTD for this document type can be found in section 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.

   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.



Kennedy                      Informational                      [Page 2]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   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.

2.1. IP Description

   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.

   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.

   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.
























Kennedy                      Informational                      [Page 3]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


2.2. Example Datagram

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

   <?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

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

3.1. TCP Description

   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.

   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.

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

   The payload element MUST be encoded as in section 2.1.



Kennedy                      Informational                      [Page 4]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


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

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

3.2. Example Datagram

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

   <?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

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

4.1. UDP Description

   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.







Kennedy                      Informational                      [Page 5]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   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.

   The payload element MUST be encoded as in section 2.1.

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

4.2. Example Datagram

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

   <?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

   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.

5.1. Ethernet

   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".)

5.2. IEEE 802

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





Kennedy                      Informational                      [Page 6]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


6. Gatewaying over 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.

7. DTDs

   The Transport DTDs (7.2. and 7.3.) build on the definitions in the
   Network 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.

7.1.  IPoXML DTD

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

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

      Digits      [0..9]+

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

      IP4Addr     "dotted-decimal" notation of [RFC1123]

      Class       [0..3]

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

      Compartments [0..65535]

      Handling     [0..65535]

      TCC          [0..16777216]

   -->



Kennedy                      Informational                      [Page 7]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   <!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 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 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 id EMPTY>
   <!-- 0 <= id <= 65,535  -->
   <!ATTLIST id
             value %Digits; #REQUIRED>

   <!ELEMENT flags EMPTY>
   <!-- df = don't fragment, mf = more fragments  -->
   <!ATTLIST flags



Kennedy                      Informational                      [Page 8]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


          reserved CDATA  #FIXED "0"
          df (may|dont)   #REQUIRED
          mf (last|more)  #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 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 source EMPTY>
   <!ATTLIST source
             address %IP4Addr; #REQUIRED>

   <!ELEMENT destination EMPTY>
   <!ATTLIST destination
             address %IP4Addr; #REQUIRED>

   <!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 noop EMPTY>
   <!ATTLIST noop
             copied (0|1) #REQUIRED
             class  CDATA #FIXED "0"
             number CDATA #FIXED "1">

   <!ELEMENT security EMPTY>



Kennedy                      Informational                      [Page 9]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   <!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 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 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 -->



Kennedy                      Informational                     [Page 10]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   <!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>

   <!-- payload MUST be encoded as base-64 [RFC2045], as modified
        by section 2.1 of this RFC -->
   <!ELEMENT payload (CDATA)>

7.2.  TCPoXML DTD

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

      <!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)>

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

   <!ELEMENT src EMPTY>
   <!-- 0 <= port <= 65,535 -->
   <!ATTLIST src
             port %Digits; #REQUIRED>

   <!ELEMENT dest EMPTY>
   <!-- 0 <= port <= 65,535 -->



Kennedy                      Informational                     [Page 11]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   <!ATTLIST dest
             port %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 offset EMPTY>
   <!-- 0 <= number <= 255 -->
   <!ATTLIST offset
             number %Digits; #REQUIRED>

   <!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 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)>

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

      the pseudoheader.
    -->



Kennedy                      Informational                     [Page 12]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


   <!ELEMENT tcp.length EMPTY>
   <!ATTLIST tcp.length
             value %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.end EMPTY>
   <!ATTLIST tcp.end
             kind CDATA #FIXED "0">

   <!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>

7.3.  UDPoXML DTD

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

      <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
   -->

   <!ELEMENT udp (udp.pseudoheader?, udp.header, payload)>

   <!ELEMENT udp.header (src, dest, udp.length, checksum)>

   <!ELEMENT udp.pseudoheader (source, destination, protocol,
                               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>



Kennedy                      Informational                     [Page 13]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


8. Security Considerations

   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.

9.   References

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

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

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

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

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

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

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

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

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

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

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

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





Kennedy                      Informational                     [Page 14]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


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

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

   [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

10.  Author's Address

   Hugh Kennedy
   Mimezine
   1060 West Addison
   Chicago, IL 60613
   USA

   EMail: kennedyh@engin.umich.edu


























Kennedy                      Informational                     [Page 15]

RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002


11.  Full Copyright Statement

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

   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.



















Kennedy                      Informational                     [Page 16]