Paket

Aus Fidopedia
Wechseln zu: Navigation, Suche


Packet, Package, Bundle

packet, bundle, engl., Paket, Päckchen, Bündel

Ein Zwischenschritt in der Verarbeitung von elektronischen Nachrichten bevor die Nachrichten von einem System zum Nächsten durch einen Mailer übertragen werden, werden die Nachrichten zu Päckchen zusammengeschnürt, vergleichbar mit einem Sack voller Briefe, und in einem Outbound abgelegt.

Die Strukturen sind in FTS-0001 A Basic FidoNet(r) Technical Standard Rev. 16, Sep 1995 beschrieben.

  • Stored Message (*.msg) - Netmail oder Echomail
  • Message Packet (*.pkt)
    Eine oder mehrere Nachrichten (compressed Messages) gebündelt in einen Packet Header + Abschluss durch 0000h Bytefolge.
  • ARCmail Bundle (*.MO?, *.TU?, *.WE?, *.TH?, *.FR?, *.SA?, *.SU?)
    Ein oder mehrere PKT Message Packets, gebündelt mit einem [Packer] (ARC, ZIP, LHA, ARJ o.ä.)
    * Eine Beschreibung zu ARCmail Bundles findet sich in der Binkley Style Outbound (BSO) Beschreibung auf synchro.net

Packet Types

Im Packet Header ist der Typ, spezifiziert durch eine fortlaufende Nummer, definiert. Bislang kennt Fidonet

Packert Type Nummer Beschreibung, FTS, FSC Dokumente
Type 1 wird nur vom Programm FIDO benutzt
Type 2 FTS-0001
Type 2+ FTS-0001 + FSC-0039 + FSC-0048
Type 3 FSC-0024

Type 2+ ist der heute am gebräuchlichste im Einsatz befindliche Packet Type.

Programmierer, die ein neues Tool erstellen, wird empfohlen, den 3 Standards zum Packet Type 2+ zu folgen.


Packet Strukturen

Nach FTS-0001, FSC-0039 und FSC-0048


FTS-0001 FTS-0001 + FSC-0039 FTS-0001 + FSC-0039 + FSC-0048 Offset Länge Typ Beschreibung Wertebereich
origNode 0x00 2 Word Origination node address 0-65535
destNode 0x02 2 Word Destination node address 1-65535
Year 0x04 2 Int Year packet generated 19??-2???
Month 0x06 2 Int Month " " 0-11 (0=Jan)
Day 0x08 2 Int Day " " 1-31
Hour 0x0A 2 Int Hour " " 0-23
Min 0x0C 2 Int Minute " " 0-59
Sec 0x0E 2 Int Second " " 0-59
Baud 0x10 2 Int Baud Rate (not in use)  ????
PktVer 0x12 2 Int Packet Version Always 2
origNet 0x14 2 Word Origination net address 1-65535
destNet 0x16 2 Word Destination net address 1-65535
prodCode PrdCodL 0x18 1 Byte FTSC Product Code (lo) 1-255
* serialNo PVMajor 0x19 1 Byte FTSC Product Rev (major) 1-255
Password 0x1A 8 Char Packet password A-Z,0-9
* origZone (opt) QOrgZone 0x22 2 Int Orig Zone (ZMailQ,QMail) 1-65535
* destZone (opt) QDstZone 0x24 2 Int Dest Zone (ZMailQ,QMail) 1-65535
fill 20 bytes Filler AuxNet 0x26 4 2 Byte Spare Change AuxNet
CWvalidationCopy 0x28 2 CWvalidationCopy high/low vertauscht
* PrdCodH 0x2A 1 Byte FTSC Product Code (hi) 1-255
* PVMinor 0x2B 1 Byte FTSC Product Rev (minor) 1-255
* CapWord 0x2C 2 Word Capability Word BitField
* OrigZone 0x2E 2 Int Origination Zone 1-65535
* DestZone 0x30 2 Int Destination Zone 1-65535
* OrigPoint 0x32 2 Int Origination Point 1-65535
* DestPoint 0x34 2 Int Destination Point 1-65535
* ProdData 0x36 4 Long Product-specific data Whatever
~ Zero or more msg ~ 0x3A x Zero or more packed messages Whatever
PktTerm 0x3A 2 Word Packet terminator 0000
(*) - Erweiterung zu FTS-0001



Leeres Packet:

  Position
  0x00h ... 0x36h ... 0x39h 0x3Ah
               + 4 bytes
  |-----Packet-Header-----| Packet Terminator |
                                  00 00


Packet mit 2 Nachrichten ("packed messages")

  Position
  0x00h ... 0x36h ... 0x39h 0x3Ah
               + 4 bytes
  |-----Packet-Header-----| PktID | packed message 1 | PktID | packed message 2 | Packet Terminator |
                            02 00                                                       00 00

Product Code

Der Produkt Code ist eine eindeutige Nummer von Programmen, die anhand einer Tabelle (FTSCPROD) identifiziert werden könnnen. Neue Nummern vergibt das Fidonet Technical Standard Committee (FTSC). Die FTSCPRODuct Liste ist Bestandteil des FTSC Verzeichnisses.

Ursprünglich wurden für den Produkt Code 2 Bytes im Packet Header vorgesehen. Die 255 Produkt Codes waren bereits Anfang der 90er Jahre aufgefüllt. Die letzten beiden Produkt Codes wurden reserviert.

  • 0xFE, 254d, No product id allocated,Any,Packer,No_Author,3:3/20
  • 0xFF, 255d, 16-bit product id,Any,Packer/Mailer,No_Author,3:3/20

Nachdem die Codes alle "aufgebraucht" waren, machte man sich Gedanken, wie die Product Codes erweitert werden können. Bislang hat sich das FTSC Committee noch nicht entgültig einigen können, welchem Verfahren für eine Erweiterung stattgegeben wird. Zwischenzeitlich wurden aber einige weitere Codes "vergeben" und in der FTSCPROD Liste veröffentlicht. Dennoch wurde diese Praxis vorerst einmal eingestellt. Neue Nummern werden zur Zeit nicht vergeben. Entwickler sollen die "allgemein gültige" Product Id 0xFE verwenden. Der Product Code 0x0100 ist ebenfalls reserviert.

  • 0x0100, 256d, Reserved,None,None,No_Author,3:3/20,19951209

Capability Word

Das Capability Word ist ein Bit Feld, das im Austausch zwischen zwei Tossern die Möglichkeiten angeben soll welche Funktionalitäten der Tosser des Gegenübers versteht. Wenn beispielsweise der eine Tosser ein Packet Type 3 und der andere Tosser auch ein Packet Type 3 unterstützen würde, könnte der Link immer nur noch Packet Type 3 Pakete versenden. Wird ein Tosser aktuallisiert, könnte so automatisch auf die nächst höhere Packet Type Funktionalität umgeschaltet werden, ohne das sich die Sysops darüber austauschen müssten.

Zum Verständnis hilft vielleicht die Tabelle der möglichen Eintragungen:


                    msb           Capability Word               lsb
  Node unterstützt  ------------FTSC Type Unterstützt **)------------

                     U 16 15 14 13 12 11 10  9  8  7  6  5  4  3 2+

     2+,3, und 7     0  0  0  0  0  0  0  0  0  0  1  0  0  0  1  1
     2+,3, und 5     0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1
     2+ (this Doc)   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
     Stone Age       0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

!                    ^-- "U" zeigt Nodes and die in der Lage sind
                         RFC-822 Pakete zu unterstützen
!                   ** - In der Beispiel Bit Definition sind
                         bislang nur Typ 2, und  der Stone-Age Typ
                         definiert.
                         Der Rest ist angedacht "reserviert per
                         FTSC".

CWvalidationCopy - ist eine Kopie des "Capability Words". Bei der Entwicklung ist in der Kommunikation leider ein Fehler unterlaufen, weswegen zunächst die High/Low Bits in der Kopie vertauscht waren. Was ursprünglich als Fehler angesehen wurde, hat sich später als Glücksfall herausgestellt, somit eine Überprüfungsmöglichkeit zu haben (statt beispielsweise einer Checksumme) ob die Daten konsistent sind.

Üblicherweise ist das Capability Word den Wert 0x0001, die Kopie enthält dagegen den Wert 0x0100

Packed Message

Packed Message ist nicht zu verwechseln mit ARCmail Bundles. Aus einer Stored Message per FTS-0001 Definition werden Nachrichten platzsparender in eine PKT Datei gepackt. Allerdings kommt hier kein Packer Programm zum Einsatz, sondern wird vom Tosser oder sonstigen PKT Verarbeitungsprogramm auf einfache Weise etwas platzsparender gespeichert indem Informationen die bei einer gespeicherten Nachricht noch wichtig sind (Beispielsweise: Zähler Anzahl gelesen, Kosten, Verlinkungskette), bei der zu versendenden Nachricht entfernt werden.

                          Packed Message

 Offset
dec hex
        .-----------------------------------------------.
  0   0 |    0     |     2      |    0      |    0      | Nachrichten Typ
        +-----------------------+-----------------------+
  2   2 | origNode (low order)  | origNode (high order) |
        +-----------------------+-----------------------+
  4   4 | destNode (low order)  | destNode (high order) |
        +-----------------------+-----------------------+
  6   6 | origNet (low order)   | origNet (high order)  |
        +-----------------------+-----------------------+
  8   8 | destNet (low order)   | destNet (high order)  |
        +-----------------------+-----------------------+
 10   A | Attribute (low order) | Attribute (high order)|
        +-----------------------+-----------------------+
 12   C |   cost (low order)    |   cost (high order)   |
        +-----------------------+-----------------------+
 14   E |                                               |
        ~                    DateTime                   ~
        |                    20 bytes                   |
        +-----------------------+-----------------------+
 34  22 |                  toUserName                   |
        ~                  max 36 bytes                 ~
        |                null terminated                |
        +-----------------------+-----------------------+
        |                 fromUserName                  |
        ~                  max 36 bytes                 ~
        |                null terminated                |
        +-----------------------+-----------------------+
        |                    subject                    |
        ~                  max 72 bytes                 ~
        |                null terminated                |
        +-----------------------+-----------------------+
        |                      text                     |
        ~                    unbounded                  ~
        |                 null terminated               |
        `-----------------------------------------------'

Die "gepackte" Nachricht startet immer mit dem Nachrichten Typ der Bytefolge "02 00". Der "alte" Typ 1 ist nicht mehr gültig.

Folgt keine weitere Nachricht wird die Bytefolge "00 00" ans Ende angefügt (siehe auch Abschnitt Packet Header -> Packet Terminator)

Attribut Wort wird abgeleitet aus Stored Message der FTS-0001 Definition.

AttributeWord   Bit       Bedeutung
                ---       --------------------
                  0  +    Private
                  1  + s  Crash
                  2       Recd
                  3       Sent
                  4  +    FileAttached
                  5       InTransit
                  6       Orphan
                  7       KillSent
                  8       Local
                  9    s  HoldForPickup
                 10  +    unused
                 11    s  FileRequest
                 12  + s  ReturnReceiptRequest
                 13  + s  IsReturnReceipt
                 14  + s  AuditRequest
                 15    s  FileUpdateReq

                       s - brauchen nicht erkannt zu werden, aber es ist ok
                       + - wird vor Paketierung nicht genullt

     Bit-Zahlen steigen mit arithmetischen Bedeutung der Bitposition.