RFC 1249
DIXIE Protocol Specification
DIXIE Protocol Specification π
okay bestie, we're kicking off RFC 1249 π The DIXIE Protocol Specification came out of the Network Working Group in August 1991, written by T. Howes, M. Smith, and B. Beecher, all from the University of Michigan π The title block doesn't list anything it obsoletes or updates, so it's giving totally independent main character energy π
Status of this Memo π
so this RFC defines a mechanism that lets TCP/UDP based clients access the OSI Directory Service π without the overhead of the ISO transport and presentation protocols that a full-blown DAP needs π This memo is here to provide information for the Internet community π It does not specify any standard π ββοΈ and distribution of this memo is unlimited πΈ
Table of Contents π¦
1. Introduction .............................................. 2
1.1 History .................................................. 2
2. Protocol .................................................. 2
2.1 Header ................................................... 3
2.2 Operations ............................................... 4
2.2.1 Read ................................................... 4
2.2.1.1 Read Request ......................................... 4
2.2.1.2 Read Reply ........................................... 4
2.2.2 Search ................................................. 5
2.2.2.1 Search Request ....................................... 5
2.2.2.2 Search Reply ......................................... 5
2.2.3 List ................................................... 5
2.2.3.1 List Request ......................................... 5
2.2.3.2 List Reply ........................................... 5
2.2.4 Modify ................................................. 5
2.2.4.1 Modify Request ....................................... 6
2.2.4.2 Modify Reply ......................................... 6
2.2.5 Modify RDN ............................................. 6
2.2.5.1 Modify RDN Request ................................... 6
2.2.5.2 Modify RDN Reply ..................................... 6
2.2.6 Add .................................................... 6
2.2.6.1 Add Request .......................................... 7
2.2.6.2 Add Reply ............................................ 7
2.2.7 Remove ................................................. 7
2.2.7.1 Remove Request ....................................... 7
2.2.7.2 Remove Reply ......................................... 7
2.2.8 Bind ................................................... 7
2.2.8.1 Bind Request ......................................... 7
2.2.8.2 Bind Reply ........................................... 8
2.3 Operation Code Summary ................................... 8
2.4 Return Code Summary ...................................... 8
3. References ................................................ 9
4. Available Implementations ................................. 9
5. Security Considerations.................................... 9
6. Authors' Addresses ........................................ 10
1. Introduction π«
okay so OSI Directory Service is honestly so powerful π It's how you store info about objects and arrange those objects in a hierarchical structure π³ Tons of stuff can live in The Directory, like white pages info, application info, service info, and more π The protocol for getting at all of that is the Directory Access Protocol (DAP), but the DAP is an OSI application-layer program, so it's pretty heavy-weight ποΈ and it takes a substantial amount of computing power and coding investment to implement π©
DIXIE is built for smaller hosts (e.g., Macintoshes and PCs) that don't have the computing power or the software needed to run a full OSI protocol stack π It's also super useful for any Internet app that wants a simple interface to X.500 without a ton of coding π§
The basic idea behind DIXIE is the same as the one described in RFC 1202 for the Directory Assistance Protocol πΈ DIXIE offers both UDP and TCP access to The Directory β¨ The Directory Assistance Protocol exports something of a user interface, while DIXIE provides a more direct protocol translation π
1.1 History π°οΈ
DIXIE has evolved over time and slowly grew into the protocol this document describes π± Without understanding the circumstances behind that evolution, the wisdom of some of the DIXIE design decisions may not be apparent π
2. Protocol π
this section breaks down the DIXIE protocol in detail π DIXIE follows a client-server request and response paradigm: clients send request packets to a DIXIE server, and the server sends reply packets back in return π Communication can be over UDP or TCP, depending on what the client needs π¦ All modification operations (ADD, REMOVE, MODIFY, MODIFYRDN) must be performed over a TCP connection, which provides some level of authentication π
π¨ bestie, the modification operations have to go over TCP, so they're not a UDP thing!
No matter which method of communication you use, the general packet format is the same π§© Each packet is a sixteen octet header followed by some data, and the format of the header and data for each kind of request is described below β¨
The representation used for all X.500 data passed between the server and the client is the QUIPU EDB format π So, for example, a Distinguished Name might look something like c=US@o=University of Michigan. For a complete description of this format, see volume 5 of the ISODE Manual π
The DIXIE server listens on port 96 for both UDP packets and TCP connections π
2.1 Header π¦
The DIXIE packet header is sixteen octets long π For requests, the header is described by the following:
Start Length Description
0 1 An opcode specifying one of the operations
described below. (see section 2.3 for a summary)
1 2 A request identifier to be included in the reply.
This number should be unique to a request.
3 4 The total length of the request packet, excluding
the header.
7 2 Unused.
9 1 Options. Currently, there are only three options.
If bit 0 is set, "large" attributes will be
included in the response. The choice of what
constitutes large is up to the implementation.
If bit 1 is set, the dereference aliases service
control will be set for the X.500 operation. If
bit 2 is set, aliases will NOT be dereferenced and
searched during a search operation.
10 1 Protocol version. The current version is 1.
11 1 For the search operation, this byte specifies the
scope of the search. (see section 2.2.2.1)
12 2 Timelimit in seconds for the operation.
14 2 Sizelimit for the operation (search and list).
For replies, the header is described by the following:
Start Length Description
0 1 A return code specifying either success or
describing any error that occurred. (see
section 2.4 for a description of each code)
1 2 The identifier included in the corresponding
request packet.
3 4 The total length of the response packet, excluding
the header.
7 3 Unused.
10 1 Protocol version. The current version is 1.
11 5 Unused.
All unused fields should be set to null octets, and they're reserved for future expansion π«Ά
2.2.5 Modify RDN
okay so the DIXIE modify RDN operation is basically the X.500 DAP MODIFYRDN operation π β¨
2.2.5.1 Modify RDN Request
bestie, listen π the header opcode should be set to 0x13. The data portion is the DN of the entry you want to change, then a null octet, then the new RDN the entry should have, then one final null octet π«Ά The old RDN value is never kept as an attribute of the entry, so it's gone for good π And this operation is only allowed over TCP, no exceptions π¦
2.2.5.2 Modify RDN Reply
no reply data here π The only way to know if it worked is the return code in the header β¨
2.2.6 Add
The DIXIE add operation is the X.500 DAP ADD operation, just with more main character energy π
2.2.6.1 Add Request
The header opcode should be set to 0x11 πΈ The data portion starts with the DN of the entry you're adding, then a null octet, then a null-separated list of the entry's attributes. Each attribute looks like this:
type=value
The value part can be one single value, or several values separated by the "&" character π The whole request ends with two null octets in a row π§ This operation is only allowed over TCP π
2.2.6.2 Add Reply
no reply data for add π«Ά Success or failure is only shown by the return code in the header, so check that header bestie π
2.2.7 Remove
The DIXIE remove operation corresponds to the X.500 DAP REMOVE operation. It's giving clean-up crew π§Ήβ¨
2.2.7.1 Remove Request
The header opcode should be set to 0x12 π The data portion is the DN of the entry to remove, followed by a null octet. This operation is only allowed over TCP π₯
2.2.7.2 Remove Reply
no reply data π Just the return code in the header tells you whether it worked π
2.2.8 Bind
The DIXIE bind operation is the X.500 DAP BIND operation using simple authentication, as defined in Recommendation X.509. Very official, very iconic ππ
2.2.8.1 Bind Request
The header opcode should be set to 0x04 π¦ The data portion is the DN of the entry you want to bind as, then a null octet, then that entry's password, then a final null octet π A null DN causes a bind as NULLDN to occur π
2.2.8.2 Bind Reply
okay this one depends on the transport β¨ If the bind was invoked over TCP, there's no reply data, and the return code in the packet header tells you if it worked π
If the bind was invoked over UDP, the data portion of the reply is an Internet address in standard dot notation, then a 0x01 octet, then a decimal number written as text, then a null octet π The address and number should be taken to be the IP address and port number the client should connect to in order to get an authenticated TCP connection, bound as the entity named in the request packet π§ Literally a redirect with a bow on top π
2.3 Operation Code Summary
This section lists the possible values for the DIXIE header operation code. There are currently 8 possible values π
0x01 Read
0x02 Modify
0x04 Bind
0x0f Search
0x10 List
0x11 Add
0x12 Remove
0x13 Modify RDN
2.4 Return Code Summary
This section describes the possible values for the DIXIE header return code. There are currently 17 possible values, so let's get into it π
0x01 The request was successful.
0x02 The search did not find any matches.
0x03 Some unknown, generic DIXIE error has occurred.
0x04 The DIXIE opcode was not recognized by the DIXIE server.
0x05 Insufficient access to perform a modification.
0x06 A malformed DN was supplied.
0x07 Some time limit or size limit was reached.
Partial results will be returned.
0x08 A modify was attempted before a bind.
0x09 A fragment requested was not found.
0x0a An attribute type specified is invalid.
0x0b An attribute specified does not exist in the entry.
0x0c An attribute value specification is invalid.
0x0d An attribute value does not exist (as for removal of the
value).
0x0e A modification of an entry's RDN was attempted via a modify
operation. This is not allowed (use modrdn instead).
0x0f A supplied DN references an invalid portion of the tree.
0x10 The DSA has passed back a referral to another DSA (as for a
modification to a non-local entry), and the DIXIE server was
unable to follow it.
0x11 The DSA is down or unreachable.
3. References β¨
[1] Information Processing - Open Systems Interconnection - The Directory, International Organization for Standardization, International Standard 9594, 1988. π
[2] Kille, S., Robbins, C., Roe, M., and A. Turland, "The ISO Development Environment: User's Manual", Volume 5: QUIPU, Performance Systems International, January 1990. π§
[3] Rose, M., "Directory Assistance Service", RFC 1202, Performance Systems International, February 1991. πΈ
4. Available Implementations π
This section is not meant as an endorsement of any implementation. It's just information for the Internet community π«Ά A full Un*x-based implementation of the DIXIE protocol, in the form of a DIXIE server and DIXIE application library, is freely available for anonymous FTP from the host terminator.cc.umich.edu in the ~ftp/x500 directory πΎ Un*x and Macintosh clients that use the DIXIE protocol have also been implemented and are available from the same location π
There's also a discussion list for DIXIE-related topics, dixie@terminator.cc.umich.edu. To join, send mail to dixie-request@terminator.cc.umich.edu π
5. Security Considerations π
Security issues are not discussed in this memo. π Please note this is a big gap, so take it seriously before deploying anything π
6. Authors' Addresses π¦
Tim Howes
University of Michigan
Information Technology Division
535 West William St.
Ann Arbor, MI 48103-4943
Phone: +1 313 764-2278
EMail: tim@umich.edu
Mark Smith
University of Michigan
Information Technology Division
535 West William St.
Ann Arbor, MI 48103-4943
Phone: +1 313 764-2277
EMail: mcs@umich.edu
Bryan Beecher
University of Michigan
Information Technology Division
535 West William St.
Ann Arbor, MI 48103-4943
Phone: +1 313 764-4050
EMail: bryan@umich.edu
That's the whole thing, bestie! ππβ¨
π¦ where this page comes from
- ietf: rfc1249 1991-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms