Le RFC demistificate by Buttha SPP MeMbEr
-----------------------------------------

Bene bene. Rieccoci qui: io con la voglia di scrivere e voi con
la voglia di leggere (mah... hehehe)
Di cosa vi voglio parlare? Delle RFC e di come cavarsela in mezzo
a quella marea di documenti.
Per questa piccola guida mi sono avvalso di due fonti:
TCP/IP di Apogeo e la mia piccola esperienza.
Vi siete mai trovati nella necessita' di cercare la documentazione
su un qualche protocollo e di non sapere da dove cominciare?
Bene, ecco i miei two cents d'aiuto.

Incominciamo:
gli standard della rete vengono pubblicati dalla IAB (Internet
Architecture Board) sotto forma di RFC (Request For Comment).
Volete sapere come funziona il TCP/IP? L'udp? L'icmp? L'smtp?
C'e' scritto *tutto* nelle RFC. Consideratele una bibbia, una
raccolta di tutte le informazioni che vi possono servire.
Problemi: non tutti gli standard della rete diventano RFC standard,
anche se vengono pubblicati in qualche RFC, inoltre, alcune RFC
standard diventano obsolete e vengono rimpiazzate da altre RFC. 
Piccola nota: alcuni numeri di RFC mancano perche' ci sono proposte
di RFC mai pubblicate.

Parentesi dedicata al buon umore: alcune RFC non descrivono in alcun
modo uno standard... per esempio la RFC 968 che da una visione ironica
dei problemi che deve affrontare un amministatore di rete, oppure la
RFC 527 che parla del linguaggio tutto particolare degli amministratori
alle prese con discussioni sulla tecnologia, oppure la RFC 1118,
intitolata "The Hitchhiker's Guide to the Internet" (Guida ad Internet
per autostoppisti), un documento di aiuto ai nuovi utenti della rete,
per chi comincia, insomma.

Come nasce una RFC: chiunque puo' scrivere una RFC; questa viene
valutata e classificata. La classificazione serve a stabilire se
la RFC puo' essere considerata uno standard oppure no.
Ecco le CLASSIFICAZIONI standard delle RFC:

***********************
REQUIRED: obbligatorie. Tutti gli host devono implementarle

RECCOMENDED: non sono obbligatorie ma sono, praticamente, implementate
da tutti gli host della rete

ELECTIVE: standard non obbligatorio; se lo si implementa, la sua
configurazione e' completamente definita in una RFC elettiva

LIMITED USE: RFC per uso limitato; non e' destinata ad un impiego
generale

NOT RECCOMENDED: non si consiglia di implementarle
***********************

Ora vediamo qual e' il processo di evoluzione di una RFC prima
che questa venga accettata come standard di Internet (sempre se
lo diventera'... non e' detto).

Ecco una lista di stati per una RFC, da quello meno importante a
quello piu' importante (standard). Vediamo, cioe', tutti i passi:

***********************
EXPERIMENTAL protocol: protocollo non consigliato per l'implementazione
a meno che non si stia partecipando alla sperimentazione

PROPOSED standard: e' passata attraverso un intenso processo di
revisione. Si auspica l'implementazione e la sperimentazione da parte
di parecchi gruppi ma bisogna aspettarsi la pubblicazione di alcune
modifiche prima che diventi un Internet Standard

DRAFT standard: specificazione che e' stata capita da tutti ed e'
permanente. Serve come base per sviluppare l'implementazione finale

INTERNET standard: la RFC ha raggiunto un'alto grado di maturita'
tecnica. E' stato stabilito (dallo IESG: Internet Engineering Steering
Group) che questa RFC e' un protocollo standard ufficiale e le e' stato
assegnato un numero STD.
Gli STD sono le RFC standard, quindi, a volte, e' piu' semplice trovare
lo Standard Internet per un protocollo esaminando i documenti STD al
posto delle RFC. Una RFC stantard, quindi, ha due numeri: il numero
di RFC e il numero di STD.

--------------
HISTORIC PROTOCOL: una RFC quando e' in uno qualsiasi dei quattro
stadi di maturazione visti, puo' diventare, immediatamente, un
historic protocol, cioe' un protocollo che difficilmente diventera'
standard: e' stato eliminato e sostituito con un nuovo protocollo
oppure e' stato abbandonato perche' non interessante

INFORMATIONAL PROTOCOL: si tratta di protocolli sviluppati da
rivenditori o da altre organizzazioni autorevoli al di fuori dello
IESG. Sono pubblicati per fornire informazioni sulle loro
specificazioni
***********************

Il processo di maturazione di una RFC segue queste regole:
1) un protocollo viene proposto come standard allo IESG. Solo lo IESG
puo' raccomandare che un protocollo intraprenda il percorso per
diventare uno standard. Analogamente, solo in base alle raccomandazioni
dello IESG un protocollo puo' spostarsi da uno stato all'altro
2) la transizione da standard proposto (proposed standard) a bozza
standard (draft standard) puo' avvenire solo dopo che il protocollo
e' rimasto per almeno sei mesi nello stato di standard proposto
3) la transizione da bozza standard a standard internet puo' avvenire
solo dopo che il protocollo e' rimasto nello stadio di bozza (draft
standard) per almeno quattro mesi
4) a volte si puo' stabilire che un protocollo non e' ancora pronto
per la standardizzazione. Lo si assegna, quindi, ad uno stadio
sperimentale e, per reinserirlo nel percorso per diventare standard,
lo IESG deve presentarlo nuovamente dopo averlo rielaborato
5) a volte un protocollo viene sostituito da un'altro protocollo.
In questo caso passa allo stadio storico (historic protocol) e questo
puo' avvenire in qualunque momento del processo

Numerazione delle RFC: un documento pubblicato riceve un numero
di RFC. Se questa RFC necessita di aggiornamenti, si pubblica una
nuova RFC con un nuovo numero identificativo. La precedente versione
di RFC diventa OBSOLETA.
Forse per la poca voglia di lavorare, o forse per qualche motivo che
mi sfugge, le RFC obsolete non sono segnalate (o cancellate).

Eccoci giunti alla domanda iniziale: come faccio a sapere che RFC
descrivono un protocollo? Una prima risposta l'abbiamo gia' avuta:
cercare nei documenti STD.
Ma c'e' un'altra risposta, molto piu' esauriente e comoda:
lo Standard One. Questo documento (chiamato STD0001) viene pubblicato
periodicamente e contiene una lista aggiornata di tutti i protocolli
standard di Internet.
Lo STD0001 contiene, anche, gli elenchi delle RFC che hanno conseguito
i livelli di maturazione draft, proposed standard, experimental
protocol, informational protocol e historical protocol.
In pratica, abbiamo tutto cio' che ci serve.

Ogni STD0001 e' una RFC, che ha un suo numero. Essendo uno STD
allora ha due numeri: il numero di RFC e il numero di standard,
che e' 1.
Per esempio, la Standard One che sto guardando adesso (di Giugno
del 1999), e' la RFC 2500 STD 1.

Nell'intestazione c'e' una lista delle RFC diventate obsolete
(cioe' modificate e, quindi, che hanno ricevuto un nuovo numero).

Poi abbiamo le seguenti liste:

***********************
1) STANDARD PROTOCOLS (protocolli standard)
vediamo qualche voce:

Protocol   Name                                                RFC STD *
========   =====================================              ==== === 
--------   Internet Official Protocol Standards               2500   1
IP         Internet Protocol                                   791   5
            as amended by:--------
--------     IP Subnet Extension                               950   5
--------     IP Broadcast Datagrams                            919   5
--------     IP Broadcast Datagrams with Subnets               922   5
ICMP       Internet Control Message Protocol                   792   5
IGMP       Internet Group Multicast Protocol                  1112   5
UDP        User Datagram Protocol                              768   6
TCP        Transmission Control Protocol                       793   7
TELNET     Telnet Protocol                                 854,855   8
FTP        File Transfer Protocol                              959   9
SMTP       Simple Mail Transfer Protocol                       821  10

eccetera

2) Network-Specific Standard Protocols (protocolli standard specifici
di reti)

protocolli implementati soltanto su reti specifiche. Non tutte le
installazione TCP/IP sono tenute ad implementarli.

Eccone alcuni:

Protocol   Name                                            RFC   STD *
========   =====================================          =====  === =
IP-ATM     Classical IP and ARP over ATM                   2225
ATM-ENCAP  Multiprotocol Encapsulation over ATM            1483
IP-TR-MC   IP Multicast over Token-Ring LANs               1469
IP-FDDI    Transmission of IP and ARP over FDDI Net        1390    36
IP-X.25    X.25 and ISDN in the Packet Mode                1356
ARP        Address Resolution Protocol                      826    37

3) Draft Standard Protocols (protocolli standard in stato di bozza)

eccone alcuni:

Protocol   Name                                                     RFC
========   =====================================                   =====
VACM-SNMP  View-based Access Control Model for SMMP                2575*
USM-SNMPV3 User-based Security Model for SNMPv3                    2574*
SNMP-APP   SNMP Applications                                       2573*
MPD-SNMP   Message Processing & Dispatching SNMP                   2572*
ARCH-SNMP  Architecture Describing SNMP Management Frameworks      2571*
ICMPv6     ICMPv6 for IPv6                                         2463*
IPV6-AUTO  IPv6 Stateless Address Autoconfiguation                 2462*

4) Proposed Standard Protocols (standard proposti)

il solito piccolo estratto (cosi', solo per farvi credere a quello che
dico hehehe)

Protocol   Name                                                     RFC
========   =====================================                   =====
POP3-EXT   POP3 Extension Mechanism                                2449*
IMIP       iCalendar Message-Based Interoperability                2447*
ITIP       iCalendar Message-Based Interoperability                2446*
ICALENDAR  Internet Calendaring, Scheduling Core..                 2445*
OTP-SASL   OTP SASL Mechanism                                      2444*
--------   OpenPGP Message Format                                  2440*
--------   BGP Route Flap Damping                                  2439*
--------   RTP Payload Format for JPEG-compressed Video            2435*
--------   RTP Payload Format for BT.656 Video Encoding            2431*
--------   RTP Payload Format for H.263+                           2429*
--------   FTP Extensions for IPv6 and NATs                        2428
MIME-VCARD vCard MIME Directory Profile                            2426


5) Experimental Protocols (protocolli sperimentali)

Protocol   Name                                                     RFC
========   =====================================                   =====
-------    NewReno Modification to TCP's Fast Recovery Algorithm   2582*
-------    Mapping between LPD and IPP Protocols                   2569*
IPP-RAT    Rationale for the Structure of IPP                      2568*
IPP-DG     Design Goals for an Internet Printing Protocol          2567*
IPP-M-S    Internet Printing Protocol/1.0: Model and Semantics     2566*
IPP-E-T    Internet Printing Protocol/1.0: Encoding and Transport  2565*
DNS-INFO   Detached Domain Name System (DNS) Information           2540*

6) Informational Protocols

Protocol   Name                                                     RFC
=======    ====================================                    =====
AUDIO/L16  Audio/L16 MIME content type                             2586*
FTP-SEC    FTP Security Considerations                             2577*
--------   6Bone Routing Practice                                  2546*
DNS-SOC    DNS Security Operational Considerations                 2541*

7) Historic Protocols

Protocol   Name                                                RFC  STD
========   =====================================              ===== ===
CONTENT    Content Type Header Field                          1049  11 *
IPV6-UNI   IPv6 Provider-Based Unicast Address                2073
IPV6-Addr  IPv6 Addressing Architecture                       1884
L2F        Cisco Layer Two Forwarding Protocol                2341
IPSO       DoD Security Options for IP                        1108
SNMPv2     Manager-to-Manager MIB                             1451
***********************

Bene, ora resta un'altro piccolo dettaglio:
dove trovare questo Standard One?
Ovunque ci siano le RFC. Dove ci sono le RFC li ci sono, anche, gli STD.
Cercate lo STD0001 e siete a posto.
Qualche sito? Mah... ce ne sono miriadi: basta usare un motore di ricerca
e scrivere RFC. Comunque, ecco un link:
http://www.faqs.org/rfcs/

Bene, questo e' tutto: spero di avervi fatto conoscere qualcosa di nuovo e
utile.

Buttha