Discussione:
il ping non è a livello 2?
(troppo vecchio per rispondere)
MElas
2003-09-19 19:12:50 UTC
Permalink
ciao

visto che il firewall puo bloccare i ping, significa che i ping non sono di
livello 2 giusto?

se fossero di livello 2 la scheda di rete risponderebbe al pping senza
interpellare il fw no?

ciao
Luigi 'Comio' Mantellini
2003-09-20 08:13:58 UTC
Permalink
il ping si basa su pacchetti icmp. Il protocollo icmp fa parte del
gruppo di protocolli TCP/IP. Qunidi il ping non è di livello due.

-------------- -
|
|
| Suite TCP/IP
-------- |
ICMP | |
-------------- -
Data Link
--------------
Fisico
--------------
Mat46
2003-09-20 18:47:29 UTC
Permalink
ciao
il ping è un protocollo di livello 3

bye
Skull
2003-09-20 21:35:03 UTC
Permalink
Post by Mat46
il ping è un protocollo di livello 3
Onestamente 4 :-/
--
Emanuele Balla aka Skull - Public Key #661E5CBF on www.keyserver.com
+----------------------------------------------------------------------+
"And 1.1.81 is officially BugFree(tm), so if you receive any bug-reports
on it, you know they are just evil lies." (By Linus Torvalds)
Virgilio Lattanzi
2003-09-21 00:28:47 UTC
Permalink
Post by Skull
Onestamente 4 :-/
Magari poi ce li giochiamo tutti 'sti numeri.
Comunque, visto che il "ping" è un programma, io punterei
sul 7. ICMP è sul 4. :)

Ciao,
--
Virgilio Lattanzi HARPAX srl
Tel: +39 0733 818863 via Fontanella, 38
Fax: +39 0733 819133 62012 Civitanova Marche MC
WWW: www.harpax.com ITALY
Skull
2003-09-21 07:30:32 UTC
Permalink
Post by Virgilio Lattanzi
Post by Skull
Onestamente 4 :-/
Magari poi ce li giochiamo tutti 'sti numeri.
Comunque, visto che il "ping" è un programma, io punterei
sul 7. ICMP è sul 4. :)
Ok, risposta circostanziata e bollata come ufficiale in quanto più
completa. ;-)

Ciao...
--
Emanuele Balla aka Skull - Public Key #661E5CBF on www.keyserver.com
+----------------------------------------------------------------------+
"And 1.1.81 is officially BugFree(tm), so if you receive any bug-reports
on it, you know they are just evil lies." (By Linus Torvalds)
Mat46
2003-09-21 08:19:03 UTC
Permalink
Post by Skull
Post by Virgilio Lattanzi
Post by Skull
Onestamente 4 :-/
Magari poi ce li giochiamo tutti 'sti numeri.
Comunque, visto che il "ping" è un programma, io punterei
sul 7. ICMP è sul 4. :)
Ok, risposta circostanziata e bollata come ufficiale in quanto più
completa. ;-)
Ciao...
bah, vai a prendere un qualsiasi testo di networking e vedrai che il
protocollo ICMP è un protocollo di livello 3.
quando tu fai un ping invii semplicemente un pacchetto ICMP di echo
request a cui l'host di destinazione se raggiungibile risponderà con un
echo reply.
Se poi per il fatto che il ci sia un comado ping da linea di comando e che
quindi interpretandolo come programma tu lo classifichi come livello 7,
potrebbe essere anche una interpretazione anche se penso sia sbagliata.
Per essere di livello 7 dovrebbe avere dentro di se anche tutti quei
concetti dei livelli intermedi, come le porte di una connessione tcp,
piuttosto che le sessioni del livello sucessivo....

bye...
Skull
2003-09-21 11:27:04 UTC
Permalink
Post by Mat46
bah, vai a prendere un qualsiasi testo di networking e vedrai che il
protocollo ICMP è un protocollo di livello 3.
Il che non è vero, anche se ti do ragione sul fatto che molti dei testi
vecchi riportano ICMP come layer 3.
In realtà strettamente parlando, non sarebbe vero: un ICMP è
semplicemente un IP con un payload particolare, e può essere pertanto
considerato appartenente al layer 4 (visto che ip è layer 3 e ICMP ci
si appoggia)...

Il fatto è che TCP/IP non è stato pensato "a livelli" in maniera così
stretta come si tende a considerarlo oggi: ci sono parecchi punti in
cui i livelli si sovrappongono, e ICMP, insieme a IGMP, è uno di
questi.

Ciò non toglie che, rigorosamente parlando, dire che I[CG]MP appartiene
al layer 3 non è corretto, e lo si dimostra facilmente:
crea un access list in cui neghi tutti i pacchetti IP e basta. I due
protocolli in questione passano ancora?!?!?
Post by Mat46
quando tu fai un ping invii semplicemente un pacchetto ICMP di echo
request a cui l'host di destinazione se raggiungibile risponderà con
un echo reply.
Il che, strettamente parlando, non è sufficientemente granulare per
discernere quello di cui si discute: i livelli...

In realtà, quello che viene inviato, è un pacchetto IP, contenente un
ICMP message come payload. Questo , a sua volta è composto da una serie
di campi quali type, code e il checksum, per un totale di 32 bit, più
una parte di lunghezza e contenuto variabile.

Il che, se vogliamo fare uno schemino, è


+----------------------+
| IP Header |
+----------------------+
| ICMP Message |
| |
....



Il che non fa molta differenza rispetto a

+----------------------+
| IP Header |
+----------------------+
| TCP Header |
+----------------------+
| |
| TCP Payload |
....

Nel senso: entrambi viaggiano *dentro* ip, per cui sono da considerarsi
appartenenti al layer superiore.

Il fatto che ICMP venga spesso considerato non appartenente al layer 4 è
dovuto principalmente all'assenza, nella definizione del protocollo, di
SAP che permettano di multiplexare diverse comunicazioni all'interno di
uno stesso flusso IP-to-IP (ovvero quello che si chiama "porta" in TCP
e UDP, per intenderci...).

In effetti tutte le implementazioni in circolazione lo fanno ugualmente,
basandosi sul contenuto della famosa "parte variabile" di cui sopra.

Esemplifichiamo:

Macchina A: deve contattare B sulla porta 9100 TCP e 47 UDP

Macchina B: ha la porta 9100 TCP aperta, mentre ha un packet filter che
riponde a tutto il resto con ICMP Port Unreachable


Ipotizziamo che A inizi a contattare B "contemporaneamente" su entrambe
le suddette porte:

A:PortaEffimeraTCP -SYN-> B:9100
A:PotraEffimeraUDP -----> B:47

Ipotizziamo che, per pura casualità, la risposta della 47 arrivi per
prima: abbiamo un port-unreachable, proveniente da B e diretto ad A.
Ma se non c'è modo di multiplexare gli ICMP come può A capire che la
comunicazione "abortita" è quella UDP e non quella TCP? In teoria, non
potrebbe, ma in realtà non è così (ovviamente, altrimenti non
funzionerebbe piò una mazza...)

Il motivo è il fatto che l'ICMP di ritorno contiene (nella famosa "parte
variabile di cui sopra" una copia degli header di livello 3 e 4 del
pacchetto che ha "scatenato" la risposta.

A, pertanto, analizzando il contenuto dell'ICMP ha modo di sapere quale
delle due comunicazioni è effettivamente stata rifiutata.

Per quanto non inclusa nelle specifiche del protocollo, una modalità di
multiplexing di fatto c'è.

Volendo riportare lo schemino con cui lo Stevens esplica il
funzionamento di ICMP, abbiamo, in questo caso:

<---------------IP datagram---------------------------->
<-----------ICMP Message-------------------->
<---Data portion of ICMP message--->

+----------+----------+--------+--------------------+-------------+
| Ethernet | IP | ICMP | IP Header of the | UDP |
| Header | Header | Header | Original Datagram | Header |
+----------+----------+--------+--------------------+-------------+

.. e penso che lo Stevens possa considerarsi autorevole da questo punto
di vista. Facendo presente che lo stesso Stevens apre la spiegazione su
ICMP con le parole: "ICMP is often considered part of the IP layer",
segno evidente che in larga parte il posizionamento di ICMP è da sempre
piuttosto "confuso" ;-)
Post by Mat46
Se poi per il fatto che il ci sia un comado ping da linea di comando e
che quindi interpretandolo come programma tu lo classifichi come
livello 7, potrebbe essere anche una interpretazione anche se penso
sia sbagliata. Per essere di livello 7 dovrebbe avere dentro di se
anche tutti quei concetti dei livelli intermedi, come le porte di una
connessione tcp, piuttosto che le sessioni del livello sucessivo....
Anche questo è un fraintendimento comune, dovuto allo stesso motivo:
TCP/IP *non* è nato sui 7 livelli poi entrati nella letteratura (e
"nati" quasi 15 anni dopo", ma ci è stato calato dentro.
TCP/IP considera solamente:

- Application
- Transport
- Network
- Link

Dove "Application" è genericamente tutto quello che si appoggia sul
Transport, sia un browser, sia ping, sia finger o quello che pare.
Genericamente, nel "gergo" TCP/IP, Application prende dentro tutti i 3
layer superiori del modello OSI.
Per questo motivo, parlare di livello 5,6 o 7, nell'ambito "storico" del
TCP/IP, è completamente privo di senso (e di riscontro).

In tali termini, comunque, ping appartiene al layer 7 della pila OSI,
poichè si interfaccia in maniera *diretta* con l'utente, e appartiene
anche al layer 5, poichè si appoggia direttamente al layer 4 (posto di
voler considerare ICMP appatrenente al layer 4).

Anche per questo motivo, non piazzerei, formalmente, ICMP al layer 3,
poichè se così fosse le funzionalità di multiplexing superiori (che
comprendono la capacità di discernere l'appartenenza di comunicazioni
ICMP parallele) poichè questo compito, AFAIK, se lo piglia direttamente
l'implementazione del protocollo...


Ciao

PS: non presterei troppa attenzione a questi formalismi, comunque:
l'importante è avere le idee chiare su come funziona il tutto, il resto
è poco utile e spesso sviante ;-)
--
Emanuele Balla aka Skull - Public Key #661E5CBF on www.keyserver.com
+----------------------------------------------------------------------+
"And 1.1.81 is officially BugFree(tm), so if you receive any bug-reports
on it, you know they are just evil lies." (By Linus Torvalds)
Skull
2003-09-21 11:41:30 UTC
Permalink
Sgranocchiando il cranio di Skull, vi trovai inciso:

Rifaccio 'sta frase perchè me so' perso un pezzo:

Anche per questo motivo, non piazzerei, formalmente, ICMP al layer 3,
poichè se così fosse le funzionalità di multiplexing superiori (che
comprendono la capacità di discernere l'appartenenza di comunicazioni
ICMP parallele e appartengono al layer 4), dovrebbero far parte
dell'applicazione stessa, mentre questo compito, AFAIK, se lo piglia
direttamente l'implementazione del protocollo...


Ri-ciao...
--
Emanuele Balla aka Skull - Public Key #661E5CBF on www.keyserver.com
+----------------------------------------------------------------------+
"And 1.1.81 is officially BugFree(tm), so if you receive any bug-reports
on it, you know they are just evil lies." (By Linus Torvalds)
Dubito
2003-09-22 09:11:04 UTC
Permalink
Post by Skull
Post by Mat46
bah, vai a prendere un qualsiasi testo di networking e vedrai che il
protocollo ICMP è un protocollo di livello 3.
Il che non è vero, anche se ti do ragione sul fatto che molti dei testi
vecchi riportano ICMP come layer 3.
Pur essendo d'accordo con te che queste sottigliezze non hanno molta
importanza, icmp e' un protocollo di layer 3.
A parte il nome che tradisce una parentela stretta con ip, icmp non si
appoggia semplicemente ad ip, come il tcp, ma coopera x il suo
corretto funzionamento.
Anche IGMP viene incapsulato in un IP datagrams, ma non viene
considerato certamente un protocollo di layer 4 !!!
Anzi, nella rfc 1112, che parla di IGMP, c'e' scritto :
"Like ICMP, IGMP is a integral part of IP."
Sempre nella stessa rfc c'e' un disegnino molto esplicativo:

| |
| Upper-Layer Protocol Modules |
|__________________________________________________________|

--------------------- IP Service Interface -----------------------
__________________________________________________________
| | | |
| | ICMP | IGMP |
| IP |______________|______________|
| Module |
| |
|__________________________________________________________|

Del resto sempre per restare nel campo rfc, fonte abbastanza autorevole,
nonostante sia un testo vecchio, la rfc 791, che parla di
internet protocol, porta :

2.1. Relation to Other Protocols

The following diagram illustrates the place of the internet protocol
in the protocol hierarchy:


+------+ +-----+ +-----+ +-----+
|Telnet| | FTP | | TFTP| ... | ... |
+------+ +-----+ +-----+ +-----+
| | | |
+-----+ +-----+ +-----+
| TCP | | UDP | ... | ... |
+-----+ +-----+ +-----+
| | |
+--------------------------+----+
| Internet Protocol & ICMP |
+--------------------------+----+
|
+---------------------------+
| Local Network Protocol |
+---------------------------+

Mi sembra abbastanza chiaro che icmp non puo' essere considerato un
protocollo di trasporto come tcp o udp.

Ciao
Skull
2003-09-22 09:36:47 UTC
Permalink
Post by Dubito
Post by Skull
Post by Mat46
bah, vai a prendere un qualsiasi testo di networking e vedrai che il
protocollo ICMP è un protocollo di livello 3.
Il che non è vero, anche se ti do ragione sul fatto che molti dei testi
vecchi riportano ICMP come layer 3.
Pur essendo d'accordo con te che queste sottigliezze non hanno molta
importanza, icmp e' un protocollo di layer 3.
A parte il nome che tradisce una parentela stretta con ip, icmp non si
appoggia semplicemente ad ip, come il tcp, ma coopera x il suo
corretto funzionamento.
Non ritengo questa sia o possa essere una discriminante:
i protocolli di routing collaborano con IP per il suo corretto
funzionamento, ma ciò non vuol dire che un protocollo di routing che usa
UDP come transport sia di per sè a layer 3.

Per inciso, riporto un quote del mio precedente che forse è più
esplicativo di quello che hai quotato, per dire come la penso:

<quote>
Il fatto è che TCP/IP non è stato pensato "a livelli" in maniera così
stretta come si tende a considerarlo oggi: ci sono parecchi punti in
cui i livelli si sovrappongono, e ICMP, insieme a IGMP, è uno di
questi.
</quote>

Pertanto, ritengo, e lo ribadisco, che considerarlo l'uno o l'altro è, per
quanto mi riguarda, indifferente, e che, dal *mio* punto di vista (e non
sono l'unico), è più 4 che 3, nonostante molta della documentazione,
ufficiale o meno, più datata lo consideri parte di IP.

Come detto, e come vero in molti altri argomenti riguardanti le reti, la
crescita e lo sviluppo dei protocolli e degli standard è stato tutt'altro
che lineare e ordinato, e ciò fa sì che per molte cose risultino punti di
vista diversi, nessuno giusto 100% e nessuno tuttavia sbagliato.

Quindi, e qui chiudo, perchè penso che abbiamo discusso a sufficienza
dell'uovo e della gallina, ognuno la veda come vuole.

Ciaotutti ;-)
Dubito
2003-09-22 10:13:03 UTC
Permalink
In article <***@skullkrusher.net>, Skull wrote:

Ehi, che velocita' di risposta, ma cos'e', una chat ?
Ho deciso, voglio fare il tuo stesso lavoro :)
Post by Skull
Per inciso, riporto un quote del mio precedente che forse è più
<quote>
Il fatto è che TCP/IP non è stato pensato "a livelli" in maniera così
stretta come si tende a considerarlo oggi: ci sono parecchi punti in
cui i livelli si sovrappongono, e ICMP, insieme a IGMP, è uno di
questi.
</quote>
Io avevo quotato solo le prime righe giusto x fare capire di cosa si
parlava.
Post by Skull
Pertanto, ritengo, e lo ribadisco, che considerarlo l'uno o l'altro è, per
quanto mi riguarda, indifferente, e che, dal *mio* punto di vista (e non
sono l'unico), è più 4 che 3, nonostante molta della documentazione,
ufficiale o meno, più datata lo consideri parte di IP.
Come detto, e come vero in molti altri argomenti riguardanti le reti, la
crescita e lo sviluppo dei protocolli e degli standard è stato tutt'altro
che lineare e ordinato, e ciò fa sì che per molte cose risultino punti di
vista diversi, nessuno giusto 100% e nessuno tuttavia sbagliato.
Bhe' su questo sono d'accordo... queste sottigliezza non servono poi a
molto...
Io pero' continuo a considerarlo piu' 3 che 4.

A proposito di sottigliezze... che tu sappia il bootp e quindi il dhcp e'
un protocollo totalmente di livello 4 ?
C'e' un motivo x cui un:
iptables -A INPUT -i eth0 -j DROP
iptables -A OUTPUT -o eth0 -j DROP
dato su un server dhcpd non riesce ad impedire l'assegnamento di un indirizzo
ad un client che ne fa richiesta, attaccato alla eth0 ?

Ciao
Skull
2003-09-22 11:30:39 UTC
Permalink
Post by Dubito
Ehi, che velocita' di risposta, ma cos'e', una chat ?
Ho deciso, voglio fare il tuo stesso lavoro :)
fidati, non credo ti convenga :-/
Cmq, era un caso...
Post by Dubito
A proposito di sottigliezze... che tu sappia il bootp e quindi il dhcp e'
un protocollo totalmente di livello 4 ?
iptables -A INPUT -i eth0 -j DROP
iptables -A OUTPUT -o eth0 -j DROP
dato su un server dhcpd non riesce ad impedire l'assegnamento di un indirizzo
ad un client che ne fa richiesta, attaccato alla eth0 ?
Ricordo, 'sta domanda... ;-)

Onestamente non ho mai indagato, ma presumo che l'assegnamento avvenga
tirando in ballo il layer 2, in qualche modo (RARP?), immagino che le
specifiche di protocollo lo dicano...

Per tornare al discorso del topic, mi è venuta in mente una cosa, visto
che mi hai fatto pensare a iptables (-p):
se ICMP è di layer 3, perchè esiste un valore (1) per il campo protocol
assegnato a ICMP, al pari di TCP e UDP (e via gli altri...)?

Vabbè... :-P
Dubito
2003-09-22 13:16:16 UTC
Permalink
Post by Skull
Post by Dubito
A proposito di sottigliezze... che tu sappia il bootp e quindi il dhcp e'
un protocollo totalmente di livello 4 ?
Ricordo, 'sta domanda... ;-)
Onestamente non ho mai indagato, ma presumo che l'assegnamento avvenga
tirando in ballo il layer 2, in qualche modo (RARP?), immagino che le
specifiche di protocollo lo dicano...
E' una cosa che mi sta facendo impazzire... proprio oggi ho fatto una
nuova ricerca con google, cambiando i termini da "dhcp iptables" a un
"bootp iptables",e' venuto fuori un mare di roba... almeno ora so che
non sono l'unico che si e' fatto sta domanda, ora provo a trovare uno
straccio di risposta...
Post by Skull
Per tornare al discorso del topic, mi è venuta in mente una cosa, visto
se ICMP è di layer 3, perchè esiste un valore (1) per il campo protocol
assegnato a ICMP, al pari di TCP e UDP (e via gli altri...)?
Credo che, come hai fatto giustamente notare, il cercare di appiccicare
i livelli ad una struttura nata senza di questi, sia fonte di tante
incongruenze... dopo questa discussione ho cambiato la mia risposta-tipo
da dare qualcuno che mi chiede il livello di icmp.

Il livello giusto varia da un minimo di 3,25 ad un massimo di 3,7 :)

Ciao

Loading...