User Tools

Site Tools


b2f:ascii

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
b2f:ascii [2025/02/12 12:58] – [Pending mail proposal] f4hofb2f:ascii [2025/02/21 13:40] (current) – [Pending mail proposal] f4hof
Line 4: Line 4:
  
 Commands and payload exchange is reduced to a minimum by pipelining multiple requests at a time. In typical transactions, up to five requests/messages are sent at once. Commands and payload exchange is reduced to a minimum by pipelining multiple requests at a time. In typical transactions, up to five requests/messages are sent at once.
- 
-FIXME //F4HOF's note: The maximum admissible size of each block isn't specified, will need to dig on some actual implementations. // 
  
   * The protocol availability is indicated by the ''F'' letter in the [[b2f:start#sid|SID]].   * The protocol availability is indicated by the ''F'' letter in the [[b2f:start#sid|SID]].
   * All protocol command lines start in first column with the ''F'' character (''0x46'').   * All protocol command lines start in first column with the ''F'' character (''0x46'').
   * All protocol command lines are terminated by a Carriage Return (CR) character (''0x0d'').   * All protocol command lines are terminated by a Carriage Return (CR) character (''0x0d'').
 +  *  
 +The ASCII Basic Protocol protocol MUST operate over a communication bearer which provides reliable and ordered delivery of at least 7-bit US-ASCII characters ([[https://en.wikipedia.org/wiki/8-bit_clean|8-bit clean]] channels satisfy this condition).
 ===== Commands ===== ===== Commands =====
 ==== Pending mail proposal ==== ==== Pending mail proposal ====
Line 21: Line 20:
 ABNF Grammar: ABNF Grammar:
  
-<code abnf>ASCII_MESG_TYPE     = "P" / "B" ; Type of message Private / Bulletin+<code bnf>ASCII_MESG_TYPE     = "P" / "B" ; Type of message Private / Bulletin
 ASCII_MESG_FROM     = 1*VCHAR ; From field ASCII_MESG_FROM     = 1*VCHAR ; From field
 ASCII_MESG_RCPT_BBS = 1*VCHAR ; Recipient FQDN / BBS ASCII_MESG_RCPT_BBS = 1*VCHAR ; Recipient FQDN / BBS
Line 29: Line 28:
  
 ASCII_PEND_PROPOSAL = "F" "B" WSP ASCII_MESG_TYPE WSP  0x0D ASCII_PEND_PROPOSAL = "F" "B" WSP ASCII_MESG_TYPE WSP  0x0D
-ASCII_PEND_PROMPT = "F" ">" 0x0D+ASCII_PEND_CSUM = 0x20 2*2HEXDIG 
 +ASCII_PEND_PROMPT = "F" ">" [ ASCII_PEND_CSUM ] 0x0D
 ASCII_XFER_PEND = 1*5ASCII_PEND_PROPOSAL ASCII_PEND_PROMPT</code> ASCII_XFER_PEND = 1*5ASCII_PEND_PROPOSAL ASCII_PEND_PROMPT</code>
 ==== No message pending ==== ==== No message pending ====
Line 60: Line 60:
 ABNF Grammar: ABNF Grammar:
  
-<code abnf>ASCII_XFER_RETR = "F" "S" %x20 1*RETR_TOKEN %x0D</code>+<code abnf>RETR_TOKEN      = "+" / "-" / "=" 
 +ASCII_XFER_RETR = "F" "S" %x20 1*RETR_TOKEN %x0D</code>
  
 ==== Disconnection request ==== ==== Disconnection request ====
Line 74: Line 75:
 <code abnf>ASCII_XFER_DISC = "F" "F" %x0D</code> <code abnf>ASCII_XFER_DISC = "F" "F" %x0D</code>
  
-==== Message exchange frame ====+==== Data transfer frame ==== 
 + 
 +The data transfer direction is reversed after every block of data. 
 +Each message is structured as following: 
 +  * The message title on the first line, 
 +  * The message text on the following lines, 
 +  * The end of message symbol (Ctrl Z / ''0x1A'' in the last line.
  
 ABNF Grammar: ABNF Grammar:
  
-FIXME clarify the SUB end of message: is it ''%x1A %x0D'' or ''%x0D''+FIXME clarify the end of message marker: is it ''%x1A %x0D'' or ''%x1A''?
  
-<code abnf>ASCII_MESG_PROPOSAL = 1*1( ASCII_XFER_PEND / ASCII_XFER_NOPEND / ASCII_XFER_RETR / ASCII_XFER_DISC) %x0D +<code abnf>ASCII_MESG_HEADER = 1*(WSP / VCHAR) %x0D
- +
-ASCII_MESG_HEADER = 1*(WSP / VCHAR) %x0D+
 ASCII_MESG_BODY = 1*( 1*(WSP / HTAB / VCHAR) %x0D ) ASCII_MESG_BODY = 1*( 1*(WSP / HTAB / VCHAR) %x0D )
  
-ASCII XFER_FRAME = 1*5( ASCII_MESG_HEADER ASCII_MESG_BODY %x1A %x0D) ASCII_MESG_PROPOSAL</code>+ASCII XFER_FRAME = 1*5( ASCII_MESG_HEADER ASCII_MESG_BODY %x1A %x0D)</code>
  
 ===== Transaction flow ===== ===== Transaction flow =====
 +
 +FIXME
  
 A transaction happens as following: A transaction happens as following:
Line 94: Line 101:
   - The calling party answers with its SID banner, and either a proposal for messages pending expedition followed by the ''F>'', or the empty message queue notification ''FF'' command (skip to the penultimate step in this case).   - The calling party answers with its SID banner, and either a proposal for messages pending expedition followed by the ''F>'', or the empty message queue notification ''FF'' command (skip to the penultimate step in this case).
   - The called party issues a ''FS'' command to select messages it is interested in receiving.   - The called party issues a ''FS'' command to select messages it is interested in receiving.
-  - The calling party transfers the selected messages, then drop and defer the other messages according to the called party's request, and finally follows with either an empty message queue notification, or a list of the next pending message proposals. In the latter situation, we jump back to the last step.+  - The calling party transfers the selected messages, drops and defers the other messages according to the called party's request.
   - The called party sends either a list of pending message proposals, or we jump to the penultimate step.   - The called party sends either a list of pending message proposals, or we jump to the penultimate step.
   - The calling party issues a ''FS'' command to select messages it is interested in receiving.   - The calling party issues a ''FS'' command to select messages it is interested in receiving.
Line 120: Line 127:
 } }
 </code> </code>
 +
 +==== Exchange with message transfer ====
 +
 +{{ :b2f:fbb_ascii_mails.svg |}}
 +
 +<code>msc{
 +
 +  hscale="2.5", wordwraparcs=off; 
 +
 +  a [label="Alice"], c [label="Carol"];
 +
 +  --- [label=" Alice opens reliable delivery bearer "];
 +  c => a [label="[Carol-1.33.7-FHM$]"];
 +  c => a [label="Welcome Alice"];
 +  c => a [label=">"];
 +  a => c [label="[Alice-1.73-FHM$]"];
 +  a => c [label="FB P F6FBB FC1GHV.FFPC.FRA.EU FC1MVP 24657_F6FBB 1345"];
 +  a => c [label="FB P FC1CDC F6ABJ F6AXV 24643_F6FBB 5346"];
 +  a => c [label="FB B F6FBB FRA FBB 22_456_F6FBB 8548"];
 +  a => c [label="F>"];
 +  c => a [label="FS +-+"];
 +  a => c [label="Title 1st message"];
 +  a => c [label="Text 1st message ...... "];
 +  a => c [label="^Z"];
 +  a => c [label="Title 3rd message"];
 +  a => c [label="Text 3rd message ...... "];
 +  a => c [label="^Z"];
 +  c => a [label="FB P FC1GHV F6FBB F6FBB 2734_FC1GHV 234"];
 +  c => a [label="FB B FC1GHV F6FBB FC1CDC 2745_FC1GHV 3524"];
 +  c => a [label="F>"];
 +  a => c [label="FS --"];
 +  a => c [label="FB P FC1CDC F6ABJ F6AXV 24754_F6FBB 345"];
 +  a => c [label="F>"];
 +  c => a [label="FS +"];
 +  a => c [label="Title message"];
 +  a => c [label="Text message ......"];
 +  a => c [label="^Z"];
 +  c => a [label="FF"];
 +  c => a [label="FB B F6FBB TEST FRA 24654_F6FBB 145"];
 +  c => a [label="F>"];
 +  a => c [label="FS +"];
 +  c => a [label="Title message"];
 +  c => a [label="Text message ...... "];
 +  c => a [label="^Z"];
 +  a => c [label="FF"];
 +  c => a [label="FQ"];
 +  --- [label=" Alice tears down the bearer "];
 +}</code>
 +
b2f/ascii.1739365093.txt.gz · Last modified: 2025/02/12 12:58 by f4hof