Appunti per Scuola e Università
humanisticheUmanistiche
Appunti e tesine di tutte le materie per gli studenti delle scuole medie riguardanti le materie umanistiche: dall'italiano alla storia riguardanti le materie umanistiche: dall'italiano alla storia 
sceintificheScientifiche
Appunti, analisi, compresione per le scuole medie suddivisi per materie scientifiche, per ognuna troverai appunti, dispense, esercitazioni, tesi e riassunti in download.
tecnicheTecniche
Gli appunti, le tesine e riassunti di tecnica amministrativa, ingegneria tecnico, costruzione. Tutti gli appunti di AppuntiMania.com gratis!
Appunti
informatica
CComputerDatabaseInternetJava
Linux unixReti


AppuntiMania.com » Informatica » Appunti di computer » Il problema generale dell'interfaccia software e i livelli iso-osi

Il problema generale dell'interfaccia software e i livelli iso-osi




Visite: 1370Gradito:apreciate 5-stela [ Medio appunti ]
Leggi anche appunti:

Il computer al servizio del progresso dell'umanità


Il computer al servizio del progresso dell'umanità   La nostra era moderna,

La codifica delle informazioni


La codifica delle informazioni Nell'elaboratore tutte le informazioni

La gestione della memoria


La gestione della memoria        Quando un processo diventa Running, è necessario
immagine di categoria

Scarica gratis Il problema generale dell'interfaccia software e i livelli iso-osi

Il  problema generale dell'inteRfaccia software e i livelli ISO-OSI


1. Interfaccia software con il video


Il livello 1 è il vero e proprio colloquio hardware con la porta di comunicazione

Il livello 2 è rappresentato dal codice a basso livello per la gestione diretta degli interrupt.

Esempio: Inviare la lettera 'A' sul video. spostando il cursore


REG 1,&H0E41         '0E, servizio --> AH, cod.ASCII di 'A' --> CALL INTERRUPT 16

o in ASSEMBLER

MOV AH, 0E

MOV AL, 41

INT 10


Il livello 3 è rappresentato da un sottoprogramma che opera su dati variabili ( parametri) di tipo elementare utilizzando al suo interno solo istruzioni a basso livello

call scrivi ( asc('A'))  ' Chiamata della procedure


SUB SCRIVI (car%)


REG 1,&H0E*256 +car%         '0E --> AH, cod.ASCII --> AL

CALL INTERRUPT 16


END SUB


Il livello 4 è rappresentato da un sottoprogramma che utilizza il livello 3 con dati di tipo strutturato


call parola ( a$ )    ' a$ è una stringa


SUB PAROLA (me$)

local lunghe%, i%, c$


lunghe% = len(me$)     'Lunghezza della stringa

for i%=1 to lunghe%

c$ = mid$(me$,i%,1)    ' Carattere n. i% della stringa

call scrivi(asc(c$)) ' livello 3

next i%

END SUB


Il livello 5 è rappresentato da un programma applicativo che ad esempio riceve in input una stringa e la visualizza.


ini:

input 'Stringa (fine = + ) : '.stri$

if stri$ '+' then goto fine

call parola(stri$) ' livello 4

goto ini

fine:

end


2. Interfaccia software tra due computer o in caso di rete

I computer siano collegati tramite una porta RS232, gestita dall'interrupt 20.

La rete utilizzi schede rete, gestite dall' interrupt 40 (fittizio).

Si possono utilizzare i medesimi nomi nei due casi, dovrà solo modificarsi il numero dell'interrupt, scrivendo 40 invece di 20 nel caso della rete.

Il livello 1 è rappresentato dall'hardware della porta o della scheda

Il livello 2 è rappresentato dalla diretta gestione degli interrupt.


Trasmette

REG 1, &H0141  

'01 --> AH, 'A'--> AL


CALL INTERRUPT 20


Riceve

REG 1,&H02000

'02 --> AH

CALL INTERRUPT 20

A% = REG (1) mod 256  

'AL --> A% il valore numerico del byte

END DEF


Il livello 3 è rappresentato da un sottoprogramma che opera su dati variabili ( parametri) di tipo elementare, costruito usando solo istruzioni a basso livello

Trasmette


call out( asc('A'))


SUB OUT ( car%)

REG 1,&H01 * 256 + car%     

'01 --> AH, valore del byte AL

CALL INTERRUPT 20


END SUB


Riceve


a$ = chr$(Fninp%)


DEF FNINP%

REG 1,&H02000

'02 --> AH

CALL INTERRUPT 20

FNINP% = REG (1) mod 256  

'AL --> valore numerico del byte

END DEF



Il livello 4 è rappresentato da un sottoprogramma che utilizza il livello 3 su dati strutturati, in questo caso una stringa

Trasmette


call sout( a$)


SUB SOUT ( stri$)

local lu%,c%,c$,i%


lu% = len(stri$)

' lunghezza della stringa

for i% = 1 to lu%

c$ = mid$(stri$,i%,1)

'Carattere n, i% della stringa

c% = asc ( c$)

call out ( c% ) ' livello 3

next i%


END SUB


Riceve


a$ = Fnsinp$(10)


DEF FNSINP$(k%)

local c%,c$,i%

FNSINP$ = ''

FOR i% = 1 to k%

c% = Fninp% ' livello 3

c$ = chr$(c%)

FNSINP$=FNSINP$+c$

next i%

END DEF

'Riceve 10 caratteri dalla porta o dalla scheda


Il livello 5, nel caso della porta RS232, può essere  rappresentato da un programma applicativo, simile a quello mostrato in precedenza.

Nel caso della rete, occorre considerare il protocollo, l'insieme di regole che governano la trasmissione.

Usiamo il protocollo ( insieme di protocolli) TCP/IP con standard IEEE 802.3 (molto semplificato)

Il messaggio deve essere scomposto in frame ( trame, pacchetti ) con la seguente struttura in byte:


Da

A

Lungh.

Contenuto




Preambolo: contiene i bit di sincronizzazione, il criterio per i controlli, il codice identificativo del protocollo, eventuali flag, il tempo di vita del frame, se messaggio locale o per Internet, ecc. Non dettaglieremo questi byte, assumendo che siano contenuti nella stringa prea$




Indirizzo MAC del destinatario o IP. ( in desti$ )




Indirizzo MAC del mittente o IP della workstation (in mitte$)




Numero progressivo del frame ( intero a 2 byte )




Totale dei frame che compongono il messaggio (intero a 2 byte )




Lunghezza effettiva del campo dati




Dati da trasmettere


Per semplicità, supponiamo che il preambolo e gli indirizzi siano gestiti dal sistema, ipotizzando che il nome da noi dato alle stringhe siano variabili di sistema.

Se si trasmette, occorre inviare alla scheda rete una stringa di 8192 byte, da comporre ricavando le informazioni necessarie. A livello 5 di devono avere a disposizione, già separati e numerati, i dati che dovranno essere inseriti nei singoli frame che compongono il messaggio da trasmettere, e conoscere il numero totale dei frame.

Se si riceve, occorrerà depurare i frame delle informazioni necessarie alla trasmissione, non più necessarie.


Livello 5

Trasmette : NT0, NT1,NT2, ..NTn ---> frame$

Riceve frame$ ---> NT0, NT1, NT2,,,,,,NTn

' Legge i file NFx, li adatta al 'protocollo, e li trasmette alla scheda 'rete


'Valori fittizi del preambolo e degli indirizzi

prea$ = '1234'   ' Preambolo 4 byte

desti$= 'ARRIVO'

'Indirizzo del destinatario 6 byte

mitte$= 'PARTEN'

'Indirizzo del mittente 6 byte


'Si determina il numero totale dei 'frame

open 'NF0' for input as #2

line input #2,tota$

close 2

tota% = val(tota$)


'Si determinano i due byte 'corrispondenti alla rappresentazione

'interna

tota$ = FNIT$(tota%)


'I valori precedenti sono uguali per 'tutti i frame del messaggio

' Legge dalla scheda rete, e crea i 'file NTx


'Si legge il primo file, per 'determinare il numero totale dei frame

frame$ = Fnsinp$(8192) 'livello 4



'Determinazione del numero dei frame

a$ = mid$(frame$,19,1)

b$ = mid$(frame$,20,1)

nume& = asc(b$)*256 + asc(a$)

if nume& > 32676 then nume& = nume& - 65536

tota% = nume&


'Scrittura del numero dei frame in NT0

open 'nt0' for output as #2

print #2,str$(tota%)

close 2


'Lunghezza effettiva del campo dati

a$ = mid$(frame$,21,1)

b$ = mid$(frame$,22,1)

nume& = asc(b$)*256 + asc(a$)

if nume& > 32676 then nume& = nume& - 65536

ludati% = nume&


' Campo dati

bu$ = mid$(frame$,23,ludati%)


' Scrittura del campo dati su NT1

open 'NT1+mid$(str$(i%),2) for binary as #2

put$ 2, bu$

close 2



Trasmette : NT0, NT1,NT2, ..NTn ---> frame$

Riceve frame$ ---> NT0, NT1, NT2,,,,,,NTn

' Composizione del campo dati dei 'frame, da 1 a tota%, di lunghezza 'fissa 8170

for i% = 1 to tota%

nofile$ = 'NF'+mid$(str$(i%),2)


open nofile$ for binary as #1

lufile% = lof(1)

get$ 1,lufile%, bu$

' Tutto il file in bu$

close 1


'Controllo e forzatura a 8170 byte

if len(bu$) > 8170 then bu$=mid$(bu$,1,8170)

end if

for j = len(bu$)+1 to 8170

bu$ = bu$+chr$(32)

next j

ludati$ = FNIT$(lufile%)

' 2 byte con i caratteri effettivi del campo dati


nupro$ = FNIT(i%)  

' 2 bye corrispondenti al numero 'progressivo


'Composizione del frame i%

frame$ = ''

frame$ = frame$ + prea$ + desti$ + mitte$

frame$ = frame$ + nupro$ + tota$ + ludati$

frame$ = frame$ + bu$

CALL SOUT$ ( frame$ )

' Invio sulla scheda rete livello 4

next i%

fine:

end

DEF FNIT$(num%)

local indi&, a$, b$

def seg = varseg(num%)

' Si fissa il segmento

indi& = VARPTR (num%)  

' Offset di num%

a$ = chr$(PEEK(indi&))

b$ = CHR$(PEEK(indi&+1))

FNIT$ = a$ + b$

END DEF

'Si leggono dalla scheda rete tutti gli 'altri  frame e si scrive il campo dati 'in NTx


for i% = 2 to tota%

frame$ = Fnsinp$(8192) 'livello 4


'Lunghezza effettiva del campo dati

a$ = mid$(frame$,21,1)

b$ = mid$(frame$,22,1)

nume& = asc(b$)*256 + asc(a$)

if nume& > 32676 then nume& = nume& - 65536

ludati% = nume&


' Campo dati

bu$ = mid$(frame$,23,ludati%)


' Scrittura del campo dati su NTx

open 'NT'+mid$(str$(i%),2) for binary as #2

put$ 2, bu$

close 2

next i%


fine:

end



Il livello 6 si dovrà occupare, in trasmissione, di suddividere il file che si vuole trasmettere in tanti piccoli file ciascuno composto da 8170 byte, pari alla dimensione del campo dati del protocollo, escluso l'ultimo, che presumibilmente ne conterrà di meno, di stabilire il numero dei file così determinato, che coinciderà con il numero dei frame, e di individuare la lunghezza effettiva del campo dati.

In ricezione, il livello 6 dovrà riunire in un unico file gli spezzoni ricavati dai frame, attribuendo il nome e la giusta estensione.

Livello 6

Trasmette file ---> NF0, NF1,NF2,..FNn

Riceve NF0, NF1,NF2,..FNn ---> file

' Trasforma un file in tanti file da '8170 byte


cls

input 'Nome del file : ',no$


open no$ for binary as #1  '

lufile& = lof(1)

' lunghezza in byte del file


num& = int(lufile& / 8170) 

' Numero dei file da generare

re& = lufile& - num&*8170

'Byte dell'ultimo file


for i= 1 to num&

open 'NF'+mid$(str$(i),2) for binary as #2

'Vengono creati tanti file NF1, 'NF2,.NF15, se num&=15


get$ 1, 8170, bu$

' Letti 8170 byte dal file da 'trasmettere..

put$ 2,bu$     

'e scritti sul file n. i

close 2           

next i


tot& = num& + 1   

' Si determina l'ultimo numero di file


open 'NF'+mid$(str$(tot&),2) for binary as #2


get$ 1, re&, bu$  

' Letti gli ultimi byte dal file da 'trasmettere..

put$ 2,bu$       

'e scritti sul file n. tot&

close 2           

' Si trascrive sul file ASCII 'NF0' il 'totale dei file

open 'NF0' for output as #2

print #2,str$(tot&)

close 2

close 1


fine:

end



' Unisce in un unico file i file NTx, attribuendogli  un nome


cls:

input 'Nome da attribuire al file : ',no$


'Numero di file NTx

open 'nt0' for input as #1

line input #1, tota$

close 1

tota% = val(tota$)


open no$ for binary as #2 


for i= 1 to tota%


open 'NT'+mid$(str$(i),2) for binary as #1

get$ 1, lof(1), bu$ 

' Letto in bu$ il file NTx

put$ 2, bu$        

'e scritto sul file globale

close 1           

next i

close 2


fine:

end







Infine, il livello 7 può essere considerato la creazione, con il software opportuno ( WINWORD, EXCEL, POWER POINT, PAINTBRUSH, Visual basic, ACCESS ecc. ) del file da trasmettere.


3 I Livelli ISO - OSI


Studiato in linea di principio cosa deve avvenire per una comunicazione in rete, ed è superfluo sottolineare le enormi semplificazioni che sono state adottate, è evidente come se ogni rete locale provvedesse per conto suo al software necessario per la gestione dei protocolli e situasse in momenti diversi tutto ciò che nell'esempio precedente abbiamo volutamente trascurato, le difficoltà di comunicare sarebbero enormi.

Si è pertanto stabilito uno standard internazionale dei protocolli di trasmissione ( intesi in questo caso come software di gestione, soprattutto da intendersi come momenti in cui intervenire con le aggiunte e le specifiche da adottare ) strutturato in 7 livelli di catena di interfaccia, ciascuno dei quali individuato dai compiti specifici che deve eseguire.

Ogni livello dialoga, ovviamente in senso inverso nella trasmissione e nella ricezione dei messaggi, con quello precedente e quello successivo.

In pratica ogni livello è formato da applicativi, nè più ne meno come nell'esempio per i livelli 5 e 6, e presume di poter comunicare con l'applicativo di pari livello degli altri computer.

Cosa ciò significhi è chiarissimo se si esaminano con attenzione i due applicativi esempi a livello 5 e 6 del nostro esempio


N.

Livello

Layer

Compito


Applicazione

Application

Applicativi rivolti all'utente


Presentazione

Presentation

Criptatura e compressione dei dati,


Sessione

Session

Tempi, turni, dimensioni delle sessioni di comunicazione


Trasporto

Transport

Controllo di errori, ricupero dei  dati, pacchettizzare informazioni troppo lunghe, chiedere nuovamente pacchetti danneggiati


Rete

Network

Trasformazione di indirizzi logici in indirizzi fisici, determinazione della rotta da seguire, risoluzione di problemi di congestione


Linea

Data Link

Invio dei pacchetti ed attesa del segnale di ACK di ritorno per inviare il pacchetto successivi ( o in caso di NACK di nuovo il medesimo pacchetto)


Fisico

Phisical

Invio fisico dei bit dei dati


Scarica gratis Il problema generale dell'interfaccia software e i livelli iso-osi
Appunti su:



Scarica 100% gratis e , tesine, riassunti



Registrati ora

Password dimenticata?
  • Appunti superiori
  • In questa sezione troverai sunti esame, dispense, appunti universitari, esercitazioni e tesi, suddivisi per le principali facoltà.
  • Università
  • Appunti, dispense, esercitazioni, riassunti direttamente dalla tua aula Universitaria
  • all'Informatica
  • Introduzione all'Informatica, Information and Comunication Tecnology, componenti del computer, software, hardware ...