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 [2020-09-17 08:57] – [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]]).+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).
 +
 +For many protocols (e.g. FINGER, NAME, and FILE, see below), a **special LISPM 8-bit character set** us used ((See [[rfc>1037|RFC 1037]], Tables 1 and 2)), which includes some greek letters, arrows etc, and notably maps carriage return, linefeed, formfeed and tab to character codes +0200.
 +
 +==== - Infrastructure ====
 +
 +=== - STATUS ===
 All hosts are required to respond to the simple protocol ''STATUS''. The response indicates All hosts are required to respond to the simple protocol ''STATUS''. The response indicates
   * that the host is "alive"   * that the host is "alive"
Line 141: Line 149:
   * information about what subnets the host is connected to, and the number of packets sent/received/etc for each subnet.   * information about what subnets the host is connected to, and the number of packets sent/received/etc for each subnet.
  
-Routers (or "bridges" in Chaosnet lingo) implement a "unidirectional" routing protocol using RUT packets, which contain the routing info for up to 122 (decimal) subnets. For each subnet, the next bridge address (or the local interface nr) and the cost is announced. The cost increases by 1 every 4 seconds, up to a maximum value (for most systems, 512, but for others, 1024).+=== - Routing === 
 +"unidirectional" routing protocol is implemented using RUT packets, which are sent by routers (or "bridges" in Chaosnet lingo).  
 +Packets contain the routing info for up to 122 (decimal) subnets. For each subnet, the next bridge address (or the local interface nr) and the cost is announced. The cost increases by 1 every 4 seconds, up to a maximum value (for most systems, 512, but for others, 1024).
  
-Other simple protocols include ''TIME'' ((As 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)), ''UPTIME''((In 1/60ths of seconds, 4 bytes, lsb first)), and ''DUMP-ROUTING-TABLE'' ((Shows routing tables up to subnet 0172 (122 decimal).))ITS does not implement the last one(But they are all supported by the "hostat" program which comes with [[https://github.com/bictorv/chaosnet-bridge/blob/master/NCP.md|cbridge]].)+''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.
  
-For many protocols (e.g. FINGERNAME, and FILE, see below), a **special LISPM 8-bit character set** us used ((See [[rfc>1037|RFC 1037]], Tables 1 and 2)), which includes some greek letters, arrows etc, and notably maps carriage return, linefeed, formfeed and tab to character codes +0200.+==== - Time and uptime (simple) ==== 
 +''TIME'' returns the number of seconds since midnight Greenwich Mean TimeJan 11900 as 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]]).
  
-To check who is logged in to a host, the (stream) ''NAME'' protocol can be used. The arguments can be a specific user name to check, optionally prefixed by "/W" to get longer ("whois") information. For LISP machinesthe (simple) ''FINGER'' protocol can be usedwhere the ANSwer is the userid, location, idle time, full name, and group affiliation, separated by LISPM newlines (0215). ((Yes, it is confusing that the [[rfc>1196|TCP protocol "finger"]] corresponds to NAME rather than to FINGER.))+''UPTIME'' retuns the uptime in 1/60ths of seconds4 byteslsb first.
  
-For file transfer, the ''[[https://github.com/PDP-10/its/blob/master/doc/sysdoc/chaos.file|FILE]]'' protocol can be used (a modernised version, used by Symbolics, appears in [[rfc>1037|RFC 1037]]).  +==== Network debugging protocols (stream====
-The ''[[https://github.com/PDP-10/its/blob/master/doc/sysdoc/mldev.protoc|MLDEV]]'' protocol is used by ITS systems for remote general device access (including hard disk devices), also over TCP. ((This protocol has enormous security problems.))+
  
-The ''[[rfc>734|SUPDUP]]'' ("SUPer DUPer image TELNET" protocol can be used to connect to a host for an interactive command-line session (like ''ssh'', but no security, or ''telnet'', but smarter). 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]].+''ECHO'' reads DAT packets and sends them back, until an EOF packet is received (or the connection is closed).
  
-To send interactive "chatmessages, the ''SEND'' protocol can be used. The ''MAIL'' protocol also has options to deliver messages directly to a logged-in user.+''BABEL'' sends the string  
 +  !"#$%&'()*+,-.//0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}" 
 +over and over again until the stream is closed. 
 + 
 +==== - Who is logged in? ==== 
 + 
 +These protocols use the LISPM character set mentioned above. 
 + 
 +''NAME'' is a stream protocol.  
 +  - If no arguments are given, it returns a list of logged-in users and brief information about them. 
 +  - If an argument is given, it returns information about that particular userid (even if not logged in), and even more info about the user if the argument is prefixed by "/W" (for "whois"). 
 + 
 +''FINGER'' is a simple protocol, used on Lisp Machines, which returns information about who is logged in: the userid, location, idle time, full name, and group affiliation, separated by LISPM newlines (0215). If noone is logged in, the userid and full name are empty. 
 + 
 +(Yes, it is confusing that the [[rfc>1196|TCP protocol "finger"]] corresponds to NAME rather than to FINGER.) 
 + 
 +''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: 
 + 
 +  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). 
 + 
 +''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. 
 + 
 +''YOW'' similarly returns a Zippy quote. 
 + 
 +''LIMERICK'' similarly returns a limerick. 
 + 
 +''DOOR'' (a simple protocol) was used at ITS to open the door to the 9th floor of the AI building (with argument ''D''), and sending an elevator to floor 8 or 9 (with argument ''8'' or ''9''). The ANS packet had no data. ((On Lisp Machines on the 9th floor, you could open the door by pressing <Terminal> D, and call the elevator by pressing <Terminal> E.)) 
 + 
 +''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 tty link on ITS (see ITS documentation). 
 + 
 +==== 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''). 
 + 
 +''TELNET'' establishes a [[rfc>854|Telnet protocol]] connection. 
 + 
 +''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 ==== 
 +''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). 
 + 
 +''SEND'' is used for interactive messages, what we now call "chatting". The RFC argument is the destination user, and the content is sent over the stream connectionThe first line of the content is expected to be the source, e.g. "userid@host", the subsequent lines are the message text. The connection is then closed. 
 + 
 +''MAIL'', ''SMTP''
 + 
 +==== - File transfer and disk access ==== 
 + 
 +''[[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.)) 
 + 
 +''EVACUATE'' - "Encode ITS file for evacuation to Unix". RFC argument is a mode byte followed by an ITS pathname, data coming back is content of file. The mode byte can e.g. be 010 for "don't set reference date" (see SYSTEM;BITS >). 
 + 
 +''MINI'' is a mini file server. Send a pathname - if packet opcode is 0200, ask for character mode, if opcode is 0201, ask for binary. 
 +Get back one packet (opcode 0202) with the truename and octal creation date of the file, and then the content of the file in 0200 packets (for character mode) or 0300 packets (for binary). If the reponse uses opcode 0203, it is an error message. An EOF signals end of file. 
 + 
 +''REMOTE-DISK'', implemented on Lisp Machines, is for reading and writing a/the disk. (Be careful about access to this server.) 
 + 
 +''BAND-TRANSFER'', implemented on Lisp Machines, is for reading/writing a loadband/partition, typically to distribute a new loadband to other machines. (Be careful.) 
 + 
 +''ITSDEV'' - ITS device server. (Be careful.) 
 + 
 + 
 +==== - 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.
  
-You can also connect to TCP using Chaosnet gateways: use the contact name ''TCP'', using the host and port number as arguments, e.g. ''TCP GOOGLE.COM 80''+==== - 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''
 ((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: 
 +  * describe GENSYM (DB), GMSGS (DB), etc (ITS).
 +
  
protocol.1600325833.txt.gz · Last modified: 2020-09-17 08:57 by victor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki