Teoria delle reti: livelli, servizi e interfacce

Oct 20 2020

Voglio conoscere le reti di computer dal basso verso l'alto. Non capisco davvero le sfumature dei livelli di rete, con libri che menzionano che i livelli forniscono servizi ai livelli sopra di loro, ma l'interfaccia tra i livelli non fa parte dell'architettura di rete (l'architettura di rete è definita come livelli + protocolli). Qual è la differenza tra servizio e interfaccia? Cos'è esattamente un livello di rete? Non riesco a trovare spiegazioni chiare per queste domande da nessuna parte. (Ho letto Computer Networks di AS Tanenbaum)

Dal momento che sto cercando di imparare il networking dal basso verso l'alto, sto cercando di disimparare e reimparare, cioè sto andando avanti pensando che tutto quello che so sull'argomento potrebbe essere errato. Ecco cosa ho capito finora:

  • Ogni nodo in una rete di comunicazione deve svolgere attività (non sto usando il termine 'software' qui perché le attività eseguite in ogni nodo possono essere implementate tramite logica digitale in hardware)
  • Queste attività sono spesso organizzate in livelli, dove le attività nel livello N + 1 possono utilizzare solo i servizi che le attività forniscono nel livello N. Questa organizzazione è utile per mantenerci sani e gestibili
  • Un modello di rete è una specifica ben definita di questi livelli in una rete: le attività che svolgono e i servizi che devono essere forniti da un livello.
  • Un protocollo è un modo per comunicare attività su nodi diversi, ma allo stesso livello. Il livello N non ha bisogno di sapere quale protocollo utilizza il livello N-1 per comunicare.

La mia comprensione è corretta?

  • Ho letto che l'architettura di rete specifica i livelli ei protocolli utilizzati, ma non le interfacce tra i livelli . Penso che la "specifica del livello" conterrà i servizi che devono essere forniti a un livello. Non è la stessa dell'interfaccia tra due livelli? L'architettura di rete contiene la specifica del livello che contiene la specifica del servizio, ma non contiene la specifica dell'interfaccia. Come?

  • Posso ottenere una copia della specifica dei servizi forniti per ogni livello? È qualcosa di concreto o qualcosa di ondulato (es. Tipo "Dipende dalla situazione")

  • Ho letto che il protocollo IP del livello 3 richiede i protocolli ARP, ICMP, ecc. Del livello 2. Pensavo che il livello N non riguardasse i protocolli effettivi del livello N-1 , ma solo i servizi forniti.

Dov'è il difetto nella mia comprensione?

Risposte

2 JeffLearman Dec 18 2020 at 09:13

Un'architettura di rete è un disegno di una rete specifica, con nodi assegnati responsabilità diverse (ad esempio, ospitante, bridge, router, con molte variazioni su quest'ultimo due specialmente quando si include MPLS.) Mentre utilizza concetti modello per definire i ruoli, non fa parte della definizione dei livelli o del modello OSI. Sebbene l'architettura di solito non specifichi nodi specifici, specifica i tipi di nodi, i ruoli che servono e il modo in cui si adattano al quadro più ampio. Quindi, mentre ho detto "rete specifica" sopra, potrebbero esserci più istanze di esso e molti dettagli omessi. Ad esempio, un'azienda che fornisce "triple play" (voce, video, dati) potrebbe avere un'architettura di rete per un'area metropolitana, un'architettura diversa per una piccola città e un'altra per le aree rurali. Molti esempi di ciascuno, con ogni istanza che segue il piano il più fedelmente possibile.

Il modello OSI è solo un modello di riferimento che assegna responsabilità diverse a ciascun livello per aiutarci a capire come funzionano le comunicazioni. Il modello OSI è abbastanza buono per i livelli 4 e inferiori. Come si è scoperto, ci sono modi migliori per affrontare i livelli superiori dell'OSI, quindi non ne parliamo molto. Il modello nel suo insieme è il migliore da usare per dare prospettiva a ogni strato e per capire ogni strato. Ma ci sono molti casi nel mondo reale che piegano il modello. Ne riparleremo più avanti.

Oltre al modello, le specifiche OSI definiscono anche servizi specifici in vari livelli. Ogni servizio ha specifiche per:

  • la sua interfaccia di servizio offerta al livello superiore (in termini di "primitive di servizio" per fare cose come inviare e ricevere "unità di dati di servizio", con molti parametri accuratamente enunciati)
  • uno o più protocolli per implementare il servizio (utilizzando le primitive di servizio di un servizio nel livello sottostante)

Leggere questi documenti è un serio sonnellino. (E sono costosi documenti ITU, quindi non puoi semplicemente leggerli sul Web. E la maggior parte dei servizi che descrivono non esistono più.) Al contrario, le prime RFC per i protocolli IP specificavano semplicemente il protocollo e ti ha lasciato indovinare l'interfaccia del servizio al livello superiore e molti dettagli su come il protocollo utilizza il servizio sottostante. Nel corso dei decenni, l'IETF è migliorata molto nel chiarire queste cose, fortunatamente senza adottare l'approccio formale esagerato dei documenti OSI (che dopo tutto sono stati sviluppati sotto l'ITU che fa parte dell'ONU).

Quindi, più vecchio è il servizio, meno chiara è la specifica dell'interfaccia del servizio o come vengono impiegati i servizi di livello inferiore. IP e TCP sono tra i primi, quindi non sono definiti formalmente. Tuttavia, ci sono molte API standard che forniscono questi servizi che puoi usare come guida (come Socket per TCP / UDP.) L'interfaccia tra trasporto e rete è spesso più difficile da raggiungere perché è spesso sepolta, ma scommetto che noi potrebbe trovare le API del kernel Linux per le interfacce di rete e di livello di collegamento (ad esempio).

Riguardo a questo:

le attività nel livello N + 1 possono utilizzare solo i servizi forniti dalle attività nel livello N.

Giusto, nel modello. In realtà, dimentica "solo". Spesso, un servizio in un livello può utilizzare i servizi di un altro servizio nello stesso livello o in un livello superiore. Ad esempio, con i tunnel, utilizziamo un livello per creare un "collegamento" che può essere utilizzato dal livello di rete. Con PPTP, utilizziamo TCP per creare un collegamento seriale da utilizzare tramite IP. Quindi, stiamo creando un servizio di livello di collegamento utilizzando un servizio di livello di trasporto. In che livello ci troviamo? Non è la domanda giusta. La domanda giusta è "quale ruolo giochiamo", che è quello che ho già detto: fornire un servizio di livello di collegamento utilizzando un servizio di livello di trasporto. Crea dei disegni divertenti. Per altri esempi, vedere Perché PPTP, L2TP, PPPOE sono in OSI Layer2? .

Quindi, usa il termine "Livello" per la visualizzazione di alto livello, ma usa i termini "utente del servizio" e "fornitore di servizi" ogni volta che le cose non si accumulano come una torta a strati.

il protocollo IP del livello 3 richiede i protocolli ARP, ICMP, ecc. del livello 2

L'ICMP risiede nel livello di rete insieme all'IP. ARP è un po 'un rompicapo, ma vive principalmente nel livello 3 ed è strettamente associato all'implementazione IP. È meglio pensarlo come livello 3 e scoprire dove rompe il modello. La maggior parte di noi non si imbatte nei controesempi e non riesco a pensarli improvvisamente.

IIRC, IPV6 è migliore nel separare i livelli, quindi considera di dedicare del tempo di qualità con le sue specifiche.

3 RonTrunk Oct 20 2020 at 01:39

La tua comprensione è generalmente corretta. I problemi che affronti sono principalmente dovuti alla tua convinzione che le cose siano meglio definite di quanto non siano in realtà. Per esempio:

Cos'è esattamente un livello di rete?

Come molti, molti termini di rete, non esiste una definizione esatta. Ci sono solo due modelli che cercano di definirli (OSI e IP protocol Suite), e solo uno di questi ha ottenuto un uso diffuso. Quindi, in pratica, c'è solo un caso d'uso. La suite TCP / IP definisce i livelli di rete nel suo modello. Puoi leggere a riguardo in RFC 1122 .

Un modello di rete è una specifica ben definita di questi livelli in una rete

Un modello è una rappresentazione idealizzata che non esiste nella realtà. In pratica, le specifiche non sono sempre ben definite. A volte le cose sono vaghe o l'effettiva implementazione di una caratteristica o di una funzione può variare.

Ho letto che il protocollo IP del livello 3 richiede i protocolli ARP, ICMP, ecc. Del livello 2. Pensavo che il livello N non riguardasse i protocolli effettivi del livello N-1, ma solo i servizi forniti.

È qui che teoria e pratica divergono. Hai ragione che questa è la teoria. Ma in pratica, i dettagli di implementazione "trapelano" tra i livelli. ARP non "si adatta" realmente al modello TCP / IP. Un altro esempio è il tunneling (VPN o MPLS). Non si adatta nemmeno al modello.