RFC 1086
ISO-TP0 bridge between TCP and X.25
RFC 1086: ISO-TP0 bridge between TCP and X.25 πΈ
okay so this one is from December 1988 and it's from the Network Working Group π the authors are J. Onions (Nottingham) and M. Rose (TWG). it's a standards proposal for the Internet community, and the header doesn't list anything it obsoletes or updates, so it's standing on its own π
Status of This Memo β¨
this memo proposes a standard for the Internet community. hosts on the Internet that choose to implement ISO TP0 transport connectivity between TCP and X.25 based hosts are expected to experiment with this proposal π§ͺ TCP port 146 is reserved for this proposal. distribution is unlimited and comments are highly encouraged π«Ά
Introduction π
this memo specifies a protocol that bridges ISO TP0 packets between X.25 and TCP networks π¦ it's super useful when you want to hook a DDN IP internet up to an X.25 subnetwork. ngl it's not a "magic bullet" for the DDN/ISO interoperability problem π instead, if you're running higher-layer ISO protocols on both networks (namely ISO TP0), then a TP0 bridge can get you connected π
the protocol itself is pretty simple, because the methods for running TP0 over TCP and over X.25 were already defined. a bridge offering ISO-TP0 gateway services just applies both methods as needed π§ here's how it goes: TP0/TCP hosts "register" an X.25 subaddress (plus the matching TCP port and IP address) with the bridge. TP0/X.25 hosts use the standard method for establishing, maintaining, and releasing connections. once a connection is up, the bridge sets up the matching TCP connection and just shuffles TP0 packets between the two π and when a TP0/TCP host starts a connection, it opens a TCP connection to the bridge on port 146 and tells it the X.25 address it wants. the bridge then connects to the native X.25 host and shuffles TP0 packets between them too β¨
1. Introduction and Motivation π
the migratory protocol described in [RFC1006] makes it possible to send TP0 packets between hosts on TCP/IP internets π add a small protocol converter and a TCP/IP host can show up in the X.25 addressing space and accept and make connections using TP0. main character energy π
this is especially useful in the following cases:
- a host on an IP based internet can talk to hosts on X.25 based networks, as long as those hosts are running ISO protocols. this also assumes a friendly gateway that's willing to run the actual TP0 bridge and make part of its X.25 address space available to the IP host π«Ά
- a site with sparse connections to an X.25 network that uses a TCP/IP based local area network for local communications. in this case every host on the LAN can reach hosts on the X.25 network that run ISO TP0 π
here's the setup this memo describes, pictorially π¨
+---------------------------------+
| |
| +-----------------------------------+
| +----+ | +----+ | +----+ |
| | | | | | | | | |
| | +-----------|-----+ +--------------+ | |
| | | TP0 | | | | TP0 | | |
| +----+ | +----+ | +----+ |
| TCP Host | Bridge Host| X.25 Host |
| | | |
| | | |
| | | |
+-------------------|-------------+ |
TCP/IP Network | |
| |
+-----------------------------------+
X.25 Network
2. Definitions and Philosophy π§
a little bit of terminology and philosophy, just to make things easier to read and to get you interested π€
the ISO Transport Service (TS) gives you a reliable, packet-stream to its users [ISO8072] π«§ the ISO Transport Protocol (TP) is what actually implements this service [ISO8073]. there are five classes of this protocol, and the class gets picked based on the services the underlying network service offers. transport class 0 (TP0) is used when the network service is connection-oriented and error-detecting π
honestly TP0 is a pretty simple protocol, and that makes sense, because the underlying network service already provides most of the qualities the transport service offers π
CCITT Recommendation X.25 [ISO8208,X.25] is a network service that does exactly that β¨ it's beyond the scope of this memo to go into X.25 in any detail, but two things are relevant here. first, lots of commercial and (non-U.S.) government carriers offer X.25 as a wide-area network service π second, the TP0/X.25 combo is super popular in Europe and other communities with a strong PTT-oriented market πͺπΊ
it's been argued that the DoD Transmission Control Protocol (TCP) [MIL1778, RFC793] can also be seen as giving a connection-oriented and error-detecting network service π€ this is kinda controversial, because TCP is actually an end-to-end transport protocol and not a network protocol. the network protocol in the DoD Protocol Suite is the DoD Internet Protocol (IP) [MIL1777, RFC791] π still, one of the perks of layering is that when it's architected properly, it makes things more flexible π¦ that idea led to [RFC983] and its successor [RFC1006], which describe how to provide the ISO transport service on top of TCP/IP internetworks π
3. The Model π·
the model is simple π the method for sending TP0 packets over TCP is defined in [RFC1006]. the method for sending TP0 packets over X.25 is defined in [ISO8878]. the TP0 bridge just has to convert between the two forms π like most protocols, there are three well-defined phases of interaction: connection establishment, data transfer, and connection release. the data transfer and connection release phases work pretty much the same way over either network service, so the resulting protocol mapping functions are quite simple π§
the difficult part is managing connection establishment π a small "registration" protocol helps the protocol mapping function handle the connection establishment phase. this protocol does one of two things: either an X.25 address is specified for an outgoing call, or an X.25 address is specified to accept incoming calls π
this memo ignores the problems of authentication and authorization π those are presumed to be a local matter. it's worth pointing out that running a TP0 bridge with unrestricted access lets any TCP/IP host claim part of the TP0 bridge host's X.25 address space π¬ that address space is limited, so it won't support many foreign hosts registering listening addresses.
the protocol makes no attempt to report errors other than the ones transmitted by the TP0 protocol π« adding that would take another mechanism, like a new protocol layer or something equivalent. the chosen model stays as simple as possible: network errors are ignored if they're recoverable, and otherwise they result in disconnection π§Ό this actually makes the gateway more transparent, because the only gateway-specific functions are gathered together in the connection phase. once the circuit is established, it's indistinguishable from a [RFC1006] implementation π«Ά
4. The Protocol π
the protocol is quite simple β¨ a successful connection establishment phase results in two network connections being set up. TP0 runs over each network connection, though one of them is provided by X.25 and the other by TCP.
during the data transfer phase, the TP0 bridge reads TPDUs (transport protocol data units) from one network connection and writes them to the other one π¦ during the connection release phase, when one network indicates a disconnect, the bridge disconnects the other network connection. or, if both networks disconnect at the same time, the bridge takes no action π
as you'd expect, the connection establishment phase is more complicated π€ it's driven by a registration procedure that starts when a TCP/IP host opens a connection with the TP0 bridge. this procedure takes one of two "flavors," depending on whether the initiating host wants to connect to a particular X.25 address or listen for connections on a particular X.25 address π
the initiating host starts the registration procedure by opening a connection to TCP port 146 on the TP0 bridge πͺ then it sends one octet that tells the bridge which flavor the procedure will take π§
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| function |
+-+-+-+-+-+-+-+-+
the value of this octet is a binary-encoded value:
value meaning
----- -------
0 illegal
1 connect to a particular X.25 host
2 listen for incoming X.25 connections
3-255 reserved
the registration procedure now splits off, depending on the function that was chosen π
FUNCTION 1: CONNECTION THROUGH THE TP0 BRIDGE π€
the initiating host now sends the X.25 address it wants to call to the TP0 bridge. the format of an X.25 address is described in Section 5 of this memo π
the TP0 bridge now tries to call the specified address. if that works, the connection establishment phase has succeeded and the data transfer phase begins π if the call fails, the TP0 bridge closes the TCP connection π
FUNCTION 2: ESTABLISHING A LISTENING ADDRESS π₯
the initiating host now sends the X.25 address it wants to listen on to the TP0 bridge. this should be a subaddress of the TP0 bridge's X.25 address, and it's the address where incoming X.25 connections will be accepted π¦
next, the initiating host sends an IP address and a TCP port number that will service incoming calls for the indicated X.25 address. the format of a TCP/IP address is described in Section 6 of this memo πΈ
the TP0 bridge now listens on behalf of the initiating host, on the indicated X.25 address π
if an incoming call comes in, a TCP connection is set up to the matching TCP/IP address. if that connection works, the connection establishment phase has succeeded and the data transfer phase begins π₯³ if the connection fails, the incoming call is refused π ββοΈ
the TCP/IP connection between the initiating host and the TP0 bridge is a "heartbeat" connection for the registration function π if that connection closes, the TP0 bridge assumes that the listening function has been terminated by the initiating host. so the TP0 bridge stops listening for incoming calls on the indicated X.25 address. without this safety net, the indicated X.25 address could never be recovered for reuse π
5. Format of X.25 Addresses β¨
okay bestie, this section is where the spec gets very precise about how an X.25 address gets packed into bytes π the encoding is a fixed-length 68 octets and it has 10 fields, no cap π
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| address type | X.121 address ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... | ... | ... | ... |
| ... | ... | ... | ... |
| ... | ... | ... | ... |
| ... | ... | X.121 length | Protocol ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... | ... | ... | PID length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Call User Data field | ... | ... |
| ... | ... | ... | ... |
| ... | ... | ... | ... |
| ... | ... | ... | ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CUDF length | X.25 Facilities ... | ... |
| ... | ... | ... |Facility Length|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
the fields, bestie π¦
- address type (2 octets) - a binary-encoded value in network order indicating the address type. The value
3is used for X.25 addressing of this format. πΈ - X.121 address (16 octets) - the ASCII-encoded value of the X.121 address. π
- address length (1 octet) - a binary-encoded value in network order indicating how many octets of the X.121 address are meaningful. β¨
- Protocol ID (4 octets) - meaningful at the remote system. π§
- Protocol ID length (1 octet) - a binary-encoded value indicating the number of protocol ID octets are meaningful. π
- User Data (16 octets) - meaningful at the remote system. π
- User Data Length (1 octet) - a binary-encoded value indicating the number of User Data octets are meaningful. π«Ά
- X.25 Facilities (6 octets) - meaningful at the remote system. π
- X.25 Facilities length (1 octet) - a binary-encoded value indicating the number of Facility octets are meaningful. π
6. Format of TCP/IP Addresses π¦
so the TCP/IP side is the same vibe but smaller π§ it's a fixed-length 16 octets with 4 fields, iykyk πΈ
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| address type | TCP port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| reserved | ... | ... | ... |
| ... | ... | ... | ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
the fields, bestie π
- address type (2 octets) - a binary-encoded value in network order. The value
2is used. β¨ - TCP port (2 octets) - a binary-encoded value in network order. π
- IP address (4 octets) - a binary-encoded value in network order. π
- reserved (16 octets) - null-value padding. π«Ά
Comments π
okay so this part is kinda honest about itself π at present, the structure of the X.25 address and the internet address are rather ad-hoc and specific to the UNIX operating system. these structures may change in the future as experience is gained in the use of the TP0 bridge. π
References π
[ISO8072] Information processing systems -- Open systems
interconnection, "Transport Service Definition",
International Standard, June, 1985.
[ISO8073] Information processing systems -- Open systems
interconnection, "Transport Protocol Specification",
International Standard, July, 1986.
[ISO8208] Information processing systems, "X.25 package level
protocol for data terminal equipment", Draft
International Standard, July, 1985.
[ISO8878] Information processing systems -- Data communications,
Use of X.25 to provide the OSI connection-mode network
service", Draft International Standard, January, 1987.
[MIL1777] Military Standard 1777, "Internet Protocol".
[MIL1778] Military Standard 1778, "Transmission Control Protocol".
[RFC791] Postel, J., "Internet Protocol - DARPA Internet Program
Protocol Specification", RFC 791, USC/ISI,
September 1981.
[RFC793] Postel, J., "Transmission Control Protocol - DARPA
Internet Program Protocol Specification", RFC 793,
USC/ISI, September 1981.
[RFC983] Cass, D., and M. Rose, "ISO Transport Services on Top
of the TCP", RFC 983, NTRC, April 1986.
[RFC1006] Rose, M., and D. Cass, "ISO Transport Service on Top
of the TCP Version: 3", NTRC, May 1987.
[X.25] CCITT Recommendation X.25, "Interface Between Data
Terminal Equipment (DTE) and Data Circuit Terminating
Equipment (DCE) for Terminals Operating in the Packet
Mode on Public Data Networks," International Telegraph
and Telephone Consultative Committee Yellow book, Vol.
VIII.2, Geneva, 1981.
Authors' Addresses π
Julian P. Onions
Computer Science Department
Nottingham University
University Park
Nottingham, NG7 2RD
United Kingdom
EMail: JPO@CS.NOTT.AC.UK
Marshall Rose
The Wollongong Group
1129 San Antonio Road
Palo Alto, CA 94303
Phone: (415) 962-7100
EMail: mrose@TWG.COM
that's the whole spec, bestie ππ literally iconic π β¨
π¦ where this page comes from
- ietf: rfc1086 1988-12
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms