Chaosnet wiki

The global Chaosnet site

User Tools

Site Tools


protocol

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
protocol [2021-03-28 18:02] – [4. Application layer] victorprotocol [2023-11-22 16:28] (current) – [Chaosnet protocol details] victor
Line 3: Line 3:
 The original spec, MIT AIM 628, is sometimes not totally clear, and partly out-of-date (e.g. for the link layer and down).  What is below might perhaps not be clearer, but more succinct. The real definition is in the behaviour of the implementations - "use the source, Luke!" ((See e.g. the [[https://github.com/bictorv/chaosnet-bridge|Chaosnet bridge]], the [[https://github.com/PDP-10/its/blob/master/src/system/chaos.289|ITS implementation]], and the LISP machine implementations.)) The original spec, MIT AIM 628, is sometimes not totally clear, and partly out-of-date (e.g. for the link layer and down).  What is below might perhaps not be clearer, but more succinct. The real definition is in the behaviour of the implementations - "use the source, Luke!" ((See e.g. the [[https://github.com/bictorv/chaosnet-bridge|Chaosnet bridge]], the [[https://github.com/PDP-10/its/blob/master/src/system/chaos.289|ITS implementation]], and the LISP machine implementations.))
  
 +For another list of Chaosnet protocols, see [[https://gunkies.org/wiki/List_of_Chaosnet_application_protocols|the Computer History Wiki]].
 ===== - Addresses and packets ===== ===== - Addresses and packets =====
  
Line 31: Line 32:
   * The acknowledgement field has the highest packet number which has been delivered to the user (cf receipts in OPN and STS packets).   * The acknowledgement field has the highest packet number which has been delivered to the user (cf receipts in OPN and STS packets).
  
-FIXME Describe "hardware trailer" (cf [[https://tumbleweed.nu/r/lm-3/uv/amber.html#Hardware-Protocols|Section 2.5 of MIT AI Memo 628]]).+FIXME Describe "hardware trailer" (cf [[https://chaosnet.net/amber.html#Hardware-Protocols|Section 2.5 of MIT AI Memo 628]]).
  
 ==== - Opcodes ==== ==== - Opcodes ====
Line 68: Line 69:
  
 Chaosnet addresses are independent of IP/IPv6 addresses, but can be mapped to IP/IPv6 addresses either individually, or for a whole subnet (see Chaosnet addresses are independent of IP/IPv6 addresses, but can be mapped to IP/IPv6 addresses either individually, or for a whole subnet (see
-[[https://docstore.mik.ua/univercd/cc/td/doc/product/software/ssr83/rpc_r/48381.htm|Cisco's implementation]], the [[http://www.fpgaretrocomputing.org/pdp10x/|PDP-10/X]] project, or [[https://github.com/bictorv/chaosnet-bridge|cbridge]]).+[[https://docstore.mik.ua/univercd/cc/td/doc/product/software/ssr83/rpc_r/48381.htm|Cisco's implementation]], the [[http://www.fpgaretrocomputing.org/pdp10x/|PDP-10/X]] project, or [[https://github.com/bictorv/chaosnet-bridge|cbridge]]). A version of TOPS-20 implemented IP encapsulation.
  
 Note that Chaosnet addresses where the host byte is 0xFF (which is legal by the specification) cannot be used with subnet mappings on IPv4, since they map to the broadcast address. Note that Chaosnet addresses where the host byte is 0xFF (which is legal by the specification) cannot be used with subnet mappings on IPv4, since they map to the broadcast address.
Line 134: Line 135:
 ===== - Application layer ===== ===== - Application layer =====
  
-Many of the protocols are informally described in Section 5 of [[https://dspace.mit.edu/handle/1721.1/6353|MIT AI Memo 628]]: //Chaosnet//, by David A. Moon (webified [[https://tumbleweed.nu/r/lm-3/uv/amber.html#Higher_002dLevel-Protocols|here]]). Some are specified in RFCs, while some exist only in source code.+Many of the protocols are informally described in Section 5 of [[https://dspace.mit.edu/handle/1721.1/6353|MIT AI Memo 628]]: //Chaosnet//, by David A. Moon (webified [[https://chaosnet.net/amber.html#Higher_002dLevel-Protocols|here]]). Some are specified in RFCs, while some exist only in source code.
  
 Below, "simple" means a connectionless protocol which returns an ANS packet with data, and "stream" means that a connection is established (using OPN and STS). Below, "simple" means a connectionless protocol which returns an ANS packet with data, and "stream" means that a connection is established (using OPN and STS).
Line 154: Line 155:
 ''DUMP-ROUTING-TABLE'' is a simple protocol which returns information on routing tables up to subnet 0172 (122 decimal). See e.g. [[http://www.unlambda.com/lispm/explorer-source/explorer-lispm-sources/chaosnet/chaos-routing.lisp|Lisp code]] for details. Not implemented by ITS. ''DUMP-ROUTING-TABLE'' is a simple protocol which returns information on routing tables up to subnet 0172 (122 decimal). See e.g. [[http://www.unlambda.com/lispm/explorer-source/explorer-lispm-sources/chaosnet/chaos-routing.lisp|Lisp code]] for details. Not implemented by ITS.
  
-=== - Time and uptime (simple) ===+==== - Time and uptime (simple) ====
 ''TIME'' returns the number of seconds since midnight Greenwich Mean Time, Jan 1, 1900 as a 32-bit number in four 8-bit bytes, least-significant byte first. To convert to standard Unix time, subtract 2208988800 (see [[rfc>868|RFC 868]]). ''TIME'' returns the number of seconds since midnight Greenwich Mean Time, Jan 1, 1900 as a 32-bit number in four 8-bit bytes, least-significant byte first. To convert to standard Unix time, subtract 2208988800 (see [[rfc>868|RFC 868]]).
  
 ''UPTIME'' retuns the uptime in 1/60ths of seconds, 4 bytes, lsb first. ''UPTIME'' retuns the uptime in 1/60ths of seconds, 4 bytes, lsb first.
  
-=== - Network debugging protocols (stream) ===+==== - Network debugging protocols (stream) ====
  
 ''ECHO'' reads DAT packets and sends them back, until an EOF packet is received (or the connection is closed). ''ECHO'' reads DAT packets and sends them back, until an EOF packet is received (or the connection is closed).
Line 167: Line 168:
 over and over again until the stream is closed. over and over again until the stream is closed.
  
-=== - Who is logged in? ===+==== - Who is logged in? ====
  
 These protocols use the LISPM character set mentioned above. These protocols use the LISPM character set mentioned above.
Line 179: Line 180:
 (Yes, it is confusing that the [[rfc>1196|TCP protocol "finger"]] corresponds to NAME rather than to FINGER.) (Yes, it is confusing that the [[rfc>1196|TCP protocol "finger"]] corresponds to NAME rather than to FINGER.)
  
-=== - Host lookup (stream) === +''LOAD'' is a simple protocol, which responds with a two-line ANSwer stating the "fair share" if you would use the remote system, and the number of users currently logged in. Example: 
-''HOSTAB'', see [[https://tumbleweed.nu/r/lm-3/uv/amber.html#Host-Table|here]], is used to look up hosts in a host table. A host name is sent to the server, which responds with attributes of the host followed by an EOF; the interaction can be repeated until the connection is closed.+ 
 +  Fair Share: 96% 
 +  Users: 1. 
 +==== - Host lookup (stream) ==== 
 +''HOSTAB'', see [[https://chaosnet.net/amber.html#Host-Table|here]], is used to look up hosts in a host table. A host name is sent to the server, which responds with attributes of the host followed by an EOF; the interaction can be repeated until the connection is closed.
  
 ''DOMAIN'' is a protocol for doing look-ups in the [[rfc>1034|Domain Name System]]. It works just like the TCP version of DNS (port 53). ''DOMAIN'' is a protocol for doing look-ups in the [[rfc>1034|Domain Name System]]. It works just like the TCP version of DNS (port 53).
  
-=== - Silly protocols (stream) ===+''DNS'' is a (non-standard) simple protocol interface to the Domain Name System, implemented by the [[https://github.com/bictorv/chaosnet-bridge|Chaosnet Bridge]]. The RFC argument is the DNS query (as plain 8-bit bytes), and the ANS contains the response. Note the size limit of Chaosnet packets (488 bytes). 
 +==== - Silly protocols (stream) ====
  
 ''BYE'' returns a (funny) quip, suitable as a message when a user logs out. ''BYE'' returns a (funny) quip, suitable as a message when a user logs out.
Line 196: Line 202:
 ''TTYLINK'' (a simple protocol) responds in a negative way using VT100 terminal escape codes: "Ouch!  Don't do that!" (clear screen, move to mid-screen, turn on blink, write "Ouch! Don't do that!", turn off blink, move to upper left corner). Possibly the server previously established a tty link on ITS (see ITS documentation). ''TTYLINK'' (a simple protocol) responds in a negative way using VT100 terminal escape codes: "Ouch!  Don't do that!" (clear screen, move to mid-screen, turn on blink, write "Ouch! Don't do that!", turn off blink, move to upper left corner). Possibly the server previously established a tty link on ITS (see ITS documentation).
  
-=== - Terminal connection protocols (stream) ===+==== - Terminal connection protocols (stream) ====
 These protocols can be used to connect to a host for an interactive command-line session (like ''ssh'', but no security, or ''telnet''). These protocols can be used to connect to a host for an interactive command-line session (like ''ssh'', but no security, or ''telnet'').
  
Line 203: Line 209:
 ''SUPDUP'' ("SUPer DUPer image TELNET"), specified in [[rfc>734|RFC 734]] is "smarter" than Telnet. It uses a "software terminal" abstraction which standardizes cursor motion, insert/delete operations etc. An implementation which uses the [[https://github.com/bictorv/chaosnet-bridge|cbridge NCP]] for connecting to Chaosnet can be found [[https://github.com/Chaosnet/supdup|here]]. ''SUPDUP'' ("SUPer DUPer image TELNET"), specified in [[rfc>734|RFC 734]] is "smarter" than Telnet. It uses a "software terminal" abstraction which standardizes cursor motion, insert/delete operations etc. An implementation which uses the [[https://github.com/bictorv/chaosnet-bridge|cbridge NCP]] for connecting to Chaosnet can be found [[https://github.com/Chaosnet/supdup|here]].
  
-=== - Messages ===+==== - Messages ====
 ''NOTIFY'' (a simple protocol on Lisp Machines) displays the RFC argument string as a notification on screen, unless it is exactly the same message as the last one (to protect against retransmissions). ''NOTIFY'' (a simple protocol on Lisp Machines) displays the RFC argument string as a notification on screen, unless it is exactly the same message as the last one (to protect against retransmissions).
  
Line 210: Line 216:
 ''MAIL'', ''SMTP''. ''MAIL'', ''SMTP''.
  
-=== - File transfer and disk access ===+==== - File transfer and disk access ====
  
-''[[https://github.com/PDP-10/its/blob/master/doc/sysdoc/chaos.file|FILE]]'' is implemented by ITS, Lisp Machines, and the Chaos-over-unix-sockets implementation.  A modernised version, used by Symbolics, appears in [[rfc>1037|RFC 1037]].+''[[https://github.com/PDP-10/its/blob/master/doc/sysdoc/chaos.file|FILE]]'' is implemented by ITS, TOPS-20, Lisp Machines, and the Chaos-over-unix-sockets implementation.  A modernised version, used by Symbolics, appears in [[rfc>1037|RFC 1037]].
  
 ''[[https://github.com/PDP-10/its/blob/master/doc/sysdoc/mldev.protoc|MLDEV]]'' is used by ITS systems for general remote device access (including hard disk devices) (also over TCP). ((This protocol has enormous security problems.)) ''[[https://github.com/PDP-10/its/blob/master/doc/sysdoc/mldev.protoc|MLDEV]]'' is used by ITS systems for general remote device access (including hard disk devices) (also over TCP). ((This protocol has enormous security problems.))
Line 228: Line 234:
  
  
-=== - Printing ===+==== - Printing ====
  
 The ''DOVER'' protocol was used for sending documents to be printed on a Dover printer. The ''DOVER'' protocol was used for sending documents to be printed on a Dover printer.
  
-=== - TCP gateway ===+==== - TCP gateway ====
 ''TCP'' is a gateway protocol for connecting to TCP.  Use the host and port number as arguments, e.g. ''TCP GOOGLE.COM 80'' ''TCP'' is a gateway protocol for connecting to TCP.  Use the host and port number as arguments, e.g. ''TCP GOOGLE.COM 80''
 ((Any server for the TCP contact name should be **very careful** about who it allows to use it, and perhaps with what arguments.)) ((Any server for the TCP contact name should be **very careful** about who it allows to use it, and perhaps with what arguments.))
  
 :TODO:  :TODO: 
-  * describe LOAD, GENSYM (DB), GMSGS (DB), etc (ITS).+  * describe GENSYM (DB), GMSGS (DB), etc (ITS). 
  
protocol.1616947332.txt.gz · Last modified: by victor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki