Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows 10
  • Inserimento della dimensione della finestra scorrevole nella calcolatrice scientifica del trader. Algoritmi di compressione delle immagini senza perdita di dati

Inserimento della dimensione della finestra scorrevole nella calcolatrice scientifica del trader. Algoritmi di compressione delle immagini senza perdita di dati

Ora devi inserire la dimensione della finestra scorrevole per calcolare le autocorrelazioni. Finestra scorrevole viene utilizzato per calcolare i valori della funzione di autocorrelazione per una funzione specificata su un intervallo finito inserito per calcolare il coefficiente di correlazione. La finestra scorrevole cattura i primi M intervalli temporali della serie temporale e poi si sposta ad ogni passo di un arco temporale nell'intervallo inserito per calcolare le correlazioni dei due strumenti.

Una finestra scorrevole può formalmente assumere valori da due a 999. Impostare un valore superiore a 999 non ha senso, poiché l'intervallo massimo utilizzato nei calcoli è 1000. Ma in realtà la dimensione della finestra scorrevole non può essere maggiore di N- 1, dove N è la dimensione dell'intervallo selezionato (numero di righe utilizzate nei calcoli).

Una finestra scorrevole inferiore a 2 non ha senso per definizione.

Se non è necessario calcolare l'autocorrelazione, inserire una dimensione della finestra mobile inferiore a 2. In questo caso, il calcolatore scientifico del trader ignorerà il calcolo della funzione di autocorrelazione.

I principianti di solito sono interessati a quale dimensione della finestra scorrevole è meglio installare. Questo di solito dipende dall'intervallo a cui sei interessato in termini di studio del comportamento delle autocorrelazioni. Ma tieni presente quanto segue.

Se hai a che fare con una funzione molto regolare, ad esempio periodica, quando l'intervallo studiato contiene molti periodi, allora tale regolarità della funzione studiata è ben rilevata da una breve finestra scorrevole. Utilizzando tentativi ed errori, è possibile selezionare la dimensione della finestra scorrevole che coincide approssimativamente con il periodo di regolarità della funzione studiata.

Se hai a che fare con il rumore bianco (in in questo caso con il suo analogo discreto, dove tutte le frequenze dell'intervallo tagliato dal valore dell'intervallo di tempo sono presenti con ampiezze approssimativamente uguali), allora tale processo viene meglio rilevato da una lunga finestra scorrevole, con una dimensione vicina all'intervallo in studio.

Se conduci una ricerca indipendente sulle autocorrelazioni di diversi strumenti di mercato, vedrai che la maggior parte di essi si trova nella regione intermedia tra il movimento puramente regolare con l'aggiunta di rumore casuale e il rumore puramente bianco. Cioè, da un lato, questo non è un casinò e, dall'altro, non è una rigida legge del movimento, a cui è stato aggiunto un rumore di ampiezza così elevata che i segni di regolarità erano visivamente annegati in questo rumore . Tutto quanto detto qui sulla ricerca vale soprattutto per i dati quotidiani, poiché sono proprio questi dati che ho sottoposto alla ricerca più grande, poiché è su questi dati che lavoro principalmente.

Ad esempio, se parliamo delle principali coppie di valute, è impossibile separare chiaramente il movimento regolare e il rumore, poiché è diviso nella teoria dei segnali, quando hai una sorta di segnale radio, ma è annegato nelle interferenze. Uno dei motivi per l'impossibilità di una divisione così chiara della dinamica valutaria in regolarità e rumore è che la regolarità della dinamica di una coppia di valute stessa rappresenta una serie infinita (o una somma finita con un largo numero termini) di funzioni regolari di ampiezza decrescente, alle quali si sovrappone rumore non uguale, ma di ampiezza diversa. Inoltre, la non stazionarietà dell'intero processo, quando le proprietà statistiche alla fine dell'intervallo di studio possono differire notevolmente dalle proprietà statistiche all'inizio dell'intervallo di studio. Ma la discussione di questi problemi va ben oltre lo scopo di queste istruzioni.

Allora, cosa abbiamo?

Se la dimensione della finestra scorrevole è molto più piccola dell'intervallo studiato, otterrai una lunga funzione di autocorrelazione, poiché la finestra scorrevole produrrà molte diapositive. Ma questa sarà una funzione poco informativa, a meno che, ovviamente, non vengano scoperte alcune regolarità di breve periodo. Al contrario, se la dimensione della finestra scorrevole è troppo vicina alla dimensione dell'intervallo studiato, tale funzione di autocorrelazione conterrà molte informazioni, ma sarà molto breve. Una finestra scorrevole farà pochissime diapositive e, ad esempio, non raggiungerà il punto in cui l'autocorrelazione si avvicina allo zero.

Pertanto, ti consiglio di iniziare sempre a ricercare uno strumento di mercato sconosciuto con una dimensione della finestra mobile pari a circa la metà dell'intervallo studiato. E solo allora, in base ai risultati ottenuti, decidere se ridurre o aumentare le dimensioni della finestra scorrevole. Ad esempio, se si esamina un intervallo di tre mesi su un intervallo di tempo giornaliero, si tratta di circa 64-67 righe. Ciò significa che la dimensione della finestra scorrevole può essere inizialmente considerata pari a 33 punti. Quindi puoi vedere cosa cambierà se prendi la dimensione della finestra scorrevole pari a un mese (22 punti) e due mesi (44 punti).

TCP utilizza la tecnologia della finestra scorrevole per specificare il numero di segmenti che il destinatario può accettare inviati da un numero di riconoscimento. Questa sezione tratta la finestra scorrevole TCP.

Quando si utilizza una finestra taglia unica, la dimensione della finestra viene determinata una volta e non cambia in futuro. Quando si utilizza una finestra scorrevole, la dimensione della finestra viene negoziata all'inizio del trasferimento e può cambiare dinamicamente durante la sessione di comunicazione TCP. La finestra scorrevole ti aiuta a utilizzare in modo più efficiente portata, perché il taglia più grande finestra consente di trasferire più dati prima di ricevere la conferma. Inoltre, se il destinatario riduce la dimensione della finestra a 0, questa azione interrompe effettivamente l'ulteriore trasmissione dei dati finché non viene inviato un valore della finestra maggiore di 0.

Nella figura, la dimensione della finestra è 3. Il mittente può trasmettere tre segmenti al destinatario. Da questo momento in poi il mittente attende la conferma del destinatario. Una volta che il ricevitore conferma la ricezione di tre segmenti di dati, il mittente può trasmettere i tre segmenti successivi. Tuttavia, man mano che la capacità di ricevere segmenti diminuisce, il ricevitore ridurrà la dimensione della finestra in modo che i dati ricevuti non causino un overflow del buffer e scartino i segmenti.

Ciascuna conferma inviata dal ricevitore contiene una dimensione della finestra dichiarata, espressa nel numero di byte che il ricevitore accetta di accettare (altrimenti nota come dimensione della finestra). Ciò consente alla finestra di espandersi o contrarsi secondo necessità per controllare la dimensione del buffer e la velocità di elaborazione del ricevitore.

Il protocollo TCP supporta un parametro speciale: la dimensione della finestra di congestione (CWS), che di solito è la stessa dimensione della finestra del ricevitore, ma il CWS viene ridotto di un fattore 2 quando i segmenti iniziano a perdersi. La perdita di segmenti è percepita come congestione della rete. Il protocollo TCP abilita meccanismo complesso rollback e riavvia gli algoritmi per non contribuire ulteriormente alla congestione della rete.

PROCESSO DI APPLICAZIONE DELLA FINESTRA SCORREVOLE.

Azione

Un commento

Il mittente e il destinatario si scambiano i valori iniziali della finestra: in questo esempio, la dimensione della finestra è di 3 segmenti finché non viene ricevuta una conferma.

Ciò si verifica durante la procedura di creazione della connessione.

Il mittente invia i segmenti 1, 2 e 3 al destinatario

Dopo aver inviato il segmento 3, il mittente attenderà la conferma dal destinatario.

Il ricevitore riceve i segmenti 1 e 2, ma ora imposta la dimensione della finestra su 2

Il ricevitore potrebbe essere lento nell'elaborazione per molte ragioni, ad esempio l'unità di elaborazione centrale (CPU) cerca valori nel database o scarica file di grandi dimensioni con grafica.

Il mittente trasmette i segmenti 3 e 4.

Dopo aver inviato due segmenti, il mittente attende l'arrivo di una conferma da parte del destinatario.

Il ricevitore conferma la ricezione dei segmenti 3 e 4, ma continua a mantenere una dimensione della finestra pari a 2.

Il ricevitore conferma l'avvenuta ricezione dei precedenti segmenti 3 e 4, richiedendo la trasmissione del segmento 5.

MASSIMIZZARE LA PRODUZIONE.

L'algoritmo di windowing controlla la velocità di trasferimento dei dati. Ciò ci consente di ridurre al minimo lo scarto di dati poiché si spendono soldi per la trasmissione dei dati persi. Tempo extra, e quindi è possibile aumentare l'efficienza.

SINCRONIZZAZIONE GLOBALE.

D’altro canto, l’algoritmo della finestra di congestione provoca una sincronizzazione TCP complessiva, che ha un impatto molto negativo sull’efficienza. La sincronizzazione generale si verifica quando tutti i mittenti utilizzano gli stessi algoritmi e le azioni dei mittenti sono le stesse. I mittenti percepiscono lo stesso sovraccarico allo stesso modo e impostano il rollback su contemporaneamente. Ora, poiché tutti i mittenti utilizzano gli stessi algoritmi, continueranno a trasmettere nello stesso intervallo di tempo, il che a sua volta porterà a una congestione a forma di onda.

Questo algoritmo (algoritmo LZ77 4 Prende il nome dagli autori Abraham Lempel e Jacob Ziv. Pubblicato nel 1977.) è stato uno dei primi a utilizzare un dizionario. Gli ultimi N elementi già codificati della sequenza vengono utilizzati come dizionario. Durante il processo di compressione, il dizionario delle sottosequenze si sposta ("scorre") lungo la sequenza di input. La catena di elementi in uscita è codificata come segue: la posizione della parte corrispondente della catena di elementi elaborata nel dizionario - offset (relativo alla posizione corrente), lunghezza, il primo elemento che segue la parte corrispondente della catena. La lunghezza della catena corrispondente è limitata sopra dal numero n. Di conseguenza, il compito è trovare nel dizionario la catena più grande che corrisponda alla sequenza da elaborare. Se non ci sono corrispondenze, vengono registrati l'offset zero, la lunghezza unitaria e solo il primo elemento della sequenza non codificata - (0, 1, e) .

Lo schema di codifica sopra descritto porta al concetto finestra scorrevole(finestra scorrevole inglese), composta da due parti:

  1. sottosequenza di elementi già codificati di lunghezza N - dizionario - buffer di ricerca(buffer di ricerca inglese);
  2. una sottosuccessione di lunghezza n da una catena di elementi per i quali verrà effettuato un tentativo di trovare una corrispondenza - respingente anteprima (buffer look-ahead inglese).

In termini finestra scorrevole L'algoritmo di compressione è descritto come segue: se e 1, . . . , e i è una sottosequenza già codificata, allora e i-N+1 , . . . , e i è un dizionario o buffer di ricerca ed e i+1 , . . . , e i+n - buffer di anteprima. Allo stesso modo, il compito è trovare la catena più grande di elementi dal buffer di anteprima, a partire dall'elemento e i+1, che corrisponde alla catena dal buffer di ricerca - questa catena può iniziare da qualsiasi elemento e terminare con qualsiasi elemento, ad es. andare oltre il buffer di ricerca, invadendo il buffer di anteprima. È naturale andare oltre finestra scorrevoleè vietato. Sia trovata la catena di elementi corrispondente alla lunghezza massima e i-p , , nella finestra scorrevole. . . , e i+q , verrà codificato come segue: (p+1, q+p+1, e i+p+q+2 ) - offset relativo all'inizio del buffer di anteprima (e i+1) , lunghezza della catena corrispondente, l'elemento che segue la stringa corrispondente dal buffer di anteprima. Se la ricerca dà come risultato due corrispondenze della stessa lunghezza, viene selezionata quella più vicina all'inizio del buffer di anteprima. Successivamente la finestra scorrevole viene spostata di p + q + 2 elementi in avanti e la procedura di ricerca viene ripetuta.

La scelta dei numeri N e n è un problema importante separato, perché Quanto più grandi sono N e n, tanto più spazio è necessario per memorizzare i valori di offset e lunghezza. Naturalmente anche il tempo di esecuzione dell'algoritmo aumenta all'aumentare di N e n. Si noti che N e n solitamente differiscono di un ordine di grandezza.

Diamo un esempio di compressione utilizzando questo algoritmo. Comprimiamo la stringa "TOBEORNOTTOBE" con i parametri N = 10 e n = 3:

fare un passo finestra scorrevole Massimo. catena abbinata Uscita
1 ""+"TOB" T 0,1,T
2 "T"+"OBE" O 0,1,O
3 "A"+"BEO" B 0.1.B
4 "TOB"+"EOR" E 0.1.E
5 "TOBE"+"ORN" O 3,1,R
6 "TOBEOR"+"NOT" N 0,1,N
7 "TOBEORN"+"OTT" O 3,1,T
8 "TOBEORNOT"+"TOBE" ESSERE 9.3.E

Se assegniamo 4 bit per la memorizzazione dell'offset, 2 bit per la lunghezza e 8 bit per gli elementi, la lunghezza della sequenza codificata (senza tenere conto della fine della designazione della sequenza) sarà 4 x 8 + 2 x 8 + 8 x 8 = 112 bit e quello originale sarà 102 bat. In questo caso non abbiamo compresso la sequenza, ma, al contrario, abbiamo aumentato la ridondanza della rappresentazione. Questo perché la lunghezza della sequenza è troppo piccola per un simile algoritmo. Ma, ad esempio, un disegno albero dei codici Huffmann nella fig. 13.1, occupando 420 kilobyte spazio sul disco, dopo la compressione ha una dimensione di circa 310 kilobyte.

Di seguito è riportato lo pseudo codice per l'algoritmo di compressione.

// M - confine fisso // legge i caratteri in sequenza dal flusso di input // in - input - sequenza compressa // n - lunghezza massima catene // pos - posizione nel dizionario, len - lunghezza della catena // nelem - elemento dietro la catena, str - catena trovata // in - input, out - output // SlideWindow - buffer di ricerca while(!in.EOF() ) / /mentre ci sono dati ( // cercando la corrispondenza massima e i suoi parametri SlideWindow.FindBestMatch(in, n, pos, len, nelem); // scrivi l'output: offset, length, element out.Write(pos) ; out.Write(len ); out.Write(nelem); // sposta la finestra scorrevole di len + 1 elementi SlideWindow.Move(in, len + 1); ) Listato 13.2. Algoritmo di compressione LZ77

La decodifica di una sequenza compressa è una decodifica diretta dei codici registrati: ad ogni voce viene abbinata una catena del dizionario e un elemento scritto esplicitamente, dopodiché il dizionario viene spostato. Ovviamente, il dizionario viene ricreato durante l'esecuzione dell'algoritmo di decodifica.

Si può notare che il processo di decodifica è molto più semplice dal punto di vista computazionale.

// n - lunghezza massima della catena // pos - posizione nel dizionario, len - lunghezza della catena // nelem - elemento dietro la catena, str - catena trovata // in - input, out - output // Dict - dizionario while(!in. EOF()) //mentre ci sono dati ( in.Read(pos); in.Read(len); in.Read(nelem); if(pos == 0) ( //nuovo carattere separato//rimuove il primo elemento (distante) dal dizionario Dict.Remove(1); //aggiunge un elemento al dizionario Dict.Add(nelem); out.Write(nelem); ) else ( //copia la riga corrispondente dal dizionario str = Dict.Get(pos, len); //rimuove gli elementi len + 1 dal dizionario Dict.Remove(len + 1); //Aggiungi la catena Dict.Add (str) al dizionario + nelem); out.Write(str + nelem); ) ) Listato 13.3. Algoritmo

Questo algoritmo è il fondatore di un'intera famiglia di algoritmi e nella sua forma originale non viene praticamente utilizzato. I suoi vantaggi includono un discreto grado di compressione su sequenze abbastanza grandi, una decompressione rapida e l'assenza di un brevetto 5 un documento che conferisce il diritto esclusivo di sfruttare l'invenzione per un certo periodo (di solito 15-20 anni) all'algoritmo. Gli svantaggi includono bassa velocità compressione, nonché un rapporto di compressione inferiore rispetto agli algoritmi alternativi (le modifiche dell'algoritmo combattono questo svantaggio). La combinazione degli algoritmi di Huffman ("Algoritmi di compressione delle immagini senza perdita") e LZ77 è chiamata metodo DEFLATE 6 Questo si chiama compressione e la decompressione si chiama INFLATE (inglese: DEFLATE - sgonfiare, INFLATE - gonfiare).. Il metodo DEFLATE viene utilizzato in grafica Formato PNG, così come in formato universale Compressione dei dati ZIP.

Il livello trasporto utilizza i servizi forniti dal livello rete:

selezione ottimale del percorso e servizi di indirizzamento logico. Questi servizi di livello 3 forniscono una connessione end-to-end tra il mittente e il destinatario. Questo capitolo descrive come il livello di trasporto regola il flusso di informazioni trasmesse da un mittente a un destinatario. Lo strato di trasporto ha le seguenti caratteristiche:

Un flusso di dati del livello di trasporto è una connessione logica tra endpoint reti;

---------------- Il meccanismo della finestra scorrevole fornisce controllo end-to-end e affidabilità della connessione, consente di tracciare la sequenza dei numeri di pacchetti e notifiche;

。 per controllare vari le connessioni di rete nei protocolli di quarto livello TCP e UDP e di trasmettere informazioni ai livelli superiori, i cosiddetti porti(porta).

Stack dei livelli di trasportoTCP/IP

Come suggerisce il nome, il livello di trasporto dello stack del protocollo TCP/IP è responsabile del trasporto dei dati tra le applicazioni sul dispositivo ricevente e sul dispositivo mittente. La conoscenza di come funziona lo strato di trasporto è fondamentale per una profonda comprensione del moderno tecnologie di rete. Le sezioni seguenti descrivono in dettaglio le funzioni e i servizi di uno dei livelli più importanti del modello TCP/IP: il livello di trasporto.

Introduzione allo stack dei livelli di trasportoTCP/IP

Per descrivere il quarto livello, quello dei trasporti, si usa spesso l'espressione qualità del servizio. UDP, discusso in dettaglio di seguito, è un protocollo del livello di trasporto che fornisce servizi di trasporto senza connessione. Tuttavia, il protocollo principale che opera a questo livello è TCP, che utilizza un meccanismo di creazione della connessione. Le funzioni principali di questo protocollo sono il trasporto e il controllo affidabile del flusso di informazioni dal mittente al destinatario. Le funzioni principali dello strato di trasporto includono il controllo della trasmissione end-to-end, il controllo del flusso attraverso un meccanismo di finestra scorrevole e la garanzia dell'affidabilità della consegna attraverso la definizione di numeri di sequenza e l'uso di riconoscimenti.

Per capire perché sono necessari una trasmissione affidabile dei dati e un controllo del flusso, immagina uno straniero che parli molto velocemente. Molto probabilmente il suo ascoltatore sarà costretto a ripetere a volte singole parole (analogamente all'affidabilità della trasmissione) e chiedergli di parlare più lentamente (analogamente al flusso).

Il livello di trasporto fornisce i mezzi per trasferire in modo affidabile i dati da un nodo mittente a un nodo ricevente. Questo livello crea una connessione logica tra gli endpoint di rete; Inoltre, le attività del livello di trasporto includono la segmentazione e il riassemblaggio dei dati trasmessi da vari applicazioni strati superiori in un unico flusso di dati del livello di trasporto. Questo flusso fornisce il trasferimento dati end-to-end tra endpoint.

Un flusso di dati del livello di trasporto è una connessione logica tra gli endpoint su una rete; Il livello di trasporto verifica anche se è possibile stabilire una connessione tra le applicazioni. Nella fig. La Figura 11.2 illustra il funzionamento dello strato di trasporto.

Il livello di trasporto fornisce le seguenti funzioni:

    segmentazione dei dati applicativi di livello superiore;

    gestione dell'interazione end-to-end;

    trasferire segmenti da un nodo terminale a un altro;

    controllo del flusso ridimensionando la finestra;

    garantire l'affidabilità assegnando numeri e utilizzando conferme.

Per lo strato di trasporto rete esterna può essere rappresentato come un determinato mezzo (solitamente raffigurato come una nuvola) attraverso il quale i pacchetti di dati vengono trasmessi dal mittente al destinatario. Questo ambiente è responsabile della determinazione del percorso ottimale per un particolare destinatario. Già in questa fase è possibile comprendere l'importante ruolo svolto dai router nel processo di trasmissione dei dati sulla rete.

La suite di protocolli TCP/IP è composta da due protocolli separati: TCP e IP. Il protocollo IP è un protocollo Layer 3 senza connessione che consente un trasferimento efficiente dei dati su una rete. TCP è un protocollo di livello 4 ed è un servizio orientato alla connessione che fornisce il controllo del flusso e quindi un'elevata affidabilità della trasmissione. La combinazione di questi due protocolli consente di risolvere un'ampia gamma di attività di trasferimento dati. Naturalmente, lo stack di protocolli TCP/IP è costituito da molti altri protocolli, ma TCP e IP sono i protocolli principali. A proposito, tutto Rete Internet si basa specificamente sullo stack di protocolli TCP/IP.

Controllo del flusso

Quando il livello di trasporto TCP inoltra segmenti di dati, può garantire l'integrità dei dati. Un metodo per raggiungere questo obiettivo è controllo del flusso (fluirecontrollo) , che evita i problemi associati alle situazioni in cui un nodo a un'estremità di una connessione trabocca i buffer di una stazione all'altra estremità. L'overflow causa seri problemi perché può portare alla perdita di dati.

I servizi del livello di trasporto consentono agli utenti di richiedere un trasporto affidabile dei dati tra i nodi di invio e di ricezione. Per garantire un trasferimento dati affidabile tra i sistemi dei partner di comunicazione viene utilizzato un meccanismo orientato alla connessione. Un trasporto affidabile fornisce le seguenti funzioni:

    assicura che il mittente riceva conferma dell'avvenuta consegna di ciascun segmento;

    fornisce rispedizione eventuali segmenti per i quali non è stata ricevuta la conferma di consegna;

    consente di ordinare i segmenti a destinazione nell'ordine corretto;

    previene la congestione della rete e garantisce la gestione della congestione qualora si verifichi.

Installazione, gestione e chiusura della sessione

Nel modello di riferimento OSI, più applicazioni possono utilizzare contemporaneamente una singola connessione di trasporto. La funzione di trasporto dei dati viene implementata segmento per segmento. Ciò significa che varie applicazioni possono trasferire dati secondo il principio FIFO (first-in, first-out). I segmenti possono essere destinati a uno o più destinatari. Questa regola è talvolta chiamata meccanismo di multiplexing del dialogo dell'applicazione di livello superiore (Figura 3).

Riso. 3. Varie applicazioni al livello più alto del modello OSI utilizzano il livello di trasporto

Una delle funzioni principali del livello di trasporto è organizzare una sessione di comunicazione per stabilire una connessione con un sistema peer-to-peer. Per iniziare il trasferimento dei dati, le applicazioni del mittente e del destinatario informano i loro sistema operativo sull'inizializzazione della connessione. Una delle stazioni avvia una connessione che deve essere accettata dall'altra stazione. I moduli del sistema operativo responsabili del funzionamento dei protocolli comunicano tra loro inviando un messaggio speciale e controllano la possibilità di trasferimento dei dati e la disponibilità dei nodi finali.

Una volta completato il processo di sincronizzazione e stabilita la connessione, inizia il trasferimento dei dati. Durante il processo di trasferimento, entrambe le stazioni continuano a scambiarsi messaggi per garantire che i dati ricevuti siano corretti. Nella fig. La Figura 4 illustra una tipica connessione tra un mittente e un destinatario. Il primo messaggio di richiesta è necessario per sincronizzare i nodi finali. Il secondo e il terzo servono per confermare la richiesta di sincronizzazione iniziale; sincronizzano anche i parametri di connessione nella direzione inversa. L'ultimo messaggio è conferma(riconoscimento), che viene utilizzato per informare il destinatario che entrambe le parti sono pronte a stabilire una connessione. Una volta stabilita la connessione, inizia il trasferimento dei dati.

Riso. 4. Processo di creazione di una connessione con un sistema peer-to-peer

Durante il trasferimento dei dati può verificarsi una congestione per due motivi. Il primo è che un computer veloce può generare un flusso di dati più velocemente di quanto la rete possa trasmetterlo. Il secondo si verifica in una situazione in cui molti computer devono inviare simultaneamente dati a un destinatario. In questo caso, il destinatario potrebbe riscontrare un sovraccarico, sebbene ciascun mittente individualmente non causi problemi.

Nei casi in cui i datagrammi arrivano troppo rapidamente perché il nodo finale o il gateway possano elaborarli, vengono temporaneamente archiviati in memoria. Se il flusso di dati non diminuisce, il nodo finale o il gateway, esaurendo eventualmente le proprie risorse di memoria, sarà costretto a scartare tutti i datagrammi successivi.

Per evitare la perdita di dati, la funzione di trasporto può inviare un messaggio informativo al mittente: "Il dispositivo non è pronto a ricevere". Agendo come un semaforo rosso, questo messaggio indicatore segnala al mittente di interrompere l'invio di dati. Non appena il ricevitore è in grado di elaborare nuovamente ulteriori dati, invia un messaggio indicatore di trasporto "dispositivo pronto per ricevere dati", simile a un semaforo verde. Dopo aver ricevuto tale indicatore, il mittente può riprendere la trasmissione dei segmenti.

Al termine del trasferimento dei dati, il mittente invia un segnale al destinatario, che indica il completamento del trasferimento. Il destinatario conferma che la connessione è interrotta, dopodiché la connessione tra le macchine è completata.

Stretta di mano in tre fasi

Il protocollo TCP utilizza un algoritmo orientato alla connessione, quindi è necessario stabilire una connessione logica prima che i dati possano essere trasferiti. Per stabilire una connessione di rete tra due postazioni di lavoro è necessario sincronizzare i loro numeri di sequenza iniziali (ISN - Initial Sequence Number). La sincronizzazione si ottiene attraverso lo scambio di segmenti specializzati che contengono il SYN (abbreviazione di Ssincronizzazione) e numeri ISN. I moduli che trasportano il bit SYN sono talvolta chiamati anche messaggi SYN. Per risolvere il problema della creazione, è necessario selezionare un meccanismo appropriato per la selezione dei numeri ISN stabilendo una connessione iniziale per lo scambio dei numeri ISN.

La sincronizzazione richiede che ciascuna parte invii il proprio ISN iniziale e riceva conferma sotto forma di ACK (abbreviazione di riconoscimento) da un'altra parte alla connessione. Inoltre ciascuna parte deve ottenere il numero ISN del partner di comunicazione e inviare una notifica ACK al riguardo. Di seguito viene descritta la sequenza di scambio dei messaggi tra due nodi della rete, A e B.

Questo messaggio si chiama riconoscimento in tre fasi (tre- modo stretta di mano) (figura 5).

Riso. 5. Stretta di mano in tre fasi

1.AB SIN. La mia iniziale numero di serie L'ISN è X, il numero ACK è 0, il bit SYN è impostato, ma il bit ACK non è impostato.

2. BUN ACK. Il tuo numero di sequenza è X+1, il mio numero ISN è Y, i bit SYN e ACK sono impostati.

3.AINDIETRO. Il tuo numero di sequenza è Y+1, il mio numero di sequenza è X+1, il bit ACK è impostato e il bit SYN non è impostato.

L'handshake a tre vie è un meccanismo di connessione asincrono necessario per sincronizzare i numeri di sequenza, poiché tali numeri non dipendono da alcun contatore globale virtuale sulla rete. Pertanto, in una rete che esegue il protocollo TCP, vengono utilizzati vari meccanismi per l'assegnazione dei numeri ISN. Uno di questi è la stretta di mano in tre fasi. Tuttavia, questo meccanismo non è finalizzato solo all'ottenimento di un numero ISN. Utilizzandolo, i dispositivi finali si scambiano informazioni sulla dimensione della finestra di trasmissione dei dati, Parametro MTU e ritardo nella trasmissione dei dati sulla rete. Il destinatario del primo SYN non ha modo di determinare se il segmento ricevuto era un vecchio messaggio rinviato o un nuovo messaggio finché non viene ricevuto il messaggio successivo; l'unica eccezione è se il destinatario memorizza l'ultimo numero di sequenza utilizzato nella connessione (cosa non sempre possibile). Pertanto, il destinatario deve richiedere al mittente di verificare tale messaggio SYN.

Meccanismo della finestra scorrevole

Nella forma più generale di inoltro dati affidabile orientato alla connessione, i pacchetti di dati devono essere consegnati al destinatario nello stesso ordine in cui sono stati trasmessi. Il protocollo segnala un errore se i pacchetti di dati vengono persi, danneggiati, duplicati o ricevuti fuori ordine. La soluzione più semplice a questo problema è utilizzare le conferme di ricezione di ciascun segmento di dati da parte del destinatario.

Tuttavia, se il mittente è costretto ad attendere una conferma dopo l'invio di ciascun segmento, come mostrato in Fig. 6, la velocità di trasmissione con questo metodo viene notevolmente ridotta. Poiché dal momento in cui il mittente termina l'invio di un pacchetto di dati fino al completamento dell'elaborazione di un'eventuale conferma ricevuta trascorre un certo intervallo di tempo, è possibile utilizzarlo per trasmettere un ulteriore dato. Viene chiamato il numero di pacchetti di dati che possono essere inviati al mittente senza ricevere una conferma finestra(finestra).

TCP utilizza i cosiddetti riconoscimenti in sospeso; contengono un numero relativo all'ottetto atteso successivamente. Il meccanismo della finestra scorrevole è il luogo in cui le dimensioni della finestra vengono negoziate dinamicamente durante la sessione TCP. Meccanismo della finestra scorrevoleè un meccanismo di controllo del flusso che richiede al destinatario di accettare una conferma dal mittente dopo aver trasmesso una certa quantità di dati.

Riso. 6. La dimensione della finestra è una

Per controllare il flusso di dati trasferiti tra due dispositivi, utilizza TCP meccanismo di controllo del flusso(meccanismo di controllo del flusso). Il destinatario segnala al mittente l'avvenuta ricezione dei dati; la ricezione di tale notifica consente di impostare la dimensione della finestra. La finestra specifica il numero di ottetti, in base al numero di riconoscimento corrente, che un dispositivo TCP è in grado di ricevere in un dato momento.

Ad esempio, con una dimensione della finestra pari a 3, il mittente può inviare tre ottetti al destinatario. Successivamente dovrà attendere la conferma da parte del destinatario. Se il destinatario ha ricevuto tre ottetti, deve inviare una conferma al mittente degli ottetti. Il mittente può quindi inviare i successivi tre ottetti. Se il destinatario non riceve tre ottetti, ad esempio a causa di un buffer overflow, non invierà alcuna conferma. Se il mittente non riceve una conferma, ciò significa che gli ultimi ottetti devono essere ritrasmessi e allo stesso tempo ridurre la velocità di trasmissione.

La dimensione della finestra TCP può cambiare durante il flusso di dati tra due dispositivi di rete. Ciascuna conferma inviata dal destinatario contiene informazioni sul numero di byte che il destinatario è in grado di ricevere. TCP utilizza la cosiddetta finestra di controllo della congestione, che normalmente ha le stesse dimensioni della finestra del dispositivo ricevente, ma viene dimezzata se un segmento di dati viene perso (ad esempio, a causa della congestione della rete). Questo meccanismo consente di ridurre o aumentare le dimensioni della finestra in base alle esigenze durante la gestione del buffer del dispositivo e l'elaborazione del flusso di dati. Le dimensioni maggiori della finestra consentono la trasmissione simultanea grande quantità ottetti.

Quando il mittente trasmette tre ottetti, passa ad attendere un segnale ACK per quattro ottetti. Se il ricevitore è in grado di elaborare un blocco di dati di due ottetti, scarta il terzo ottetto e lo designa come il successivo blocco di dati previsto. Ciò specifica la nuova dimensione della finestra, che è uguale a due. Il mittente trasmette i due ottetti successivi, ma la dimensione della finestra è ancora tre (assumendo che il dispositivo possa ancora gestire tre ottetti contemporaneamente). Il destinatario richiede l'ottetto numero 5 e imposta nuova dimensione finestre pari a due.

Conferme

Un meccanismo di consegna affidabile garantisce che un flusso di dati inviato da una stazione verrà consegnato sul collegamento dati di un'altra senza duplicazioni o perdite di dati. La conferma positiva con ritrasmissione è una delle tecniche che garantisce la consegna affidabile dei flussi di dati. La conferma positiva richiede che il destinatario comunichi con il mittente inviando un messaggio di conferma dopo aver ricevuto i dati. Il mittente registra ogni pacchetto inviato e attende la conferma prima di inviare il pacchetto di dati successivo. Nel momento in cui il segmento viene inoltrato, il mittente avvia anche un timer e ritrasmette il blocco di dati se impostato dal timer scade il tempo prima che venga ricevuta la conferma.

Nella fig. La Figura 7 mostra un mittente che trasmette i pacchetti 1, 2 e 3. Il ricevitore riconosce i pacchetti richiedendo il pacchetto 4. Il mittente, dopo aver ricevuto una conferma, invia i pacchetti 4, 5 e 6. Se il pacchetto 5 non viene consegnato al destinatario , invia una conferma richiedendo un altro pacchetto di invio 5. Il mittente invia nuovamente il pacchetto 5 e deve ricevere una conferma appropriata per continuare a inviare il pacchetto numero 7.

Il protocollo TCP impone una sequenza di segmenti seguiti da un riconoscimento. Ad ogni datagramma viene assegnato un numero prima della trasmissione (Fig. 8). Dopo che il destinatario ha ricevuto tutti i datagrammi, questi vengono assemblati in un messaggio completo. La responsabilità del protocollo TCP è recuperare i dati danneggiati, persi, duplicati o fuori servizio trasmessi su Internet. Il meccanismo di recupero funziona assegnando un numero di sequenza a ciascun ottetto trasmesso, alla ricezione del quale il destinatario deve inviare un riconoscimento (ACK). Se entro il tempo di attesa non viene ricevuta alcuna conferma, i dati vengono ritrasmessi dal mittente. Una volta consegnati gli ottetti al destinatario, i loro numeri di sequenza vengono utilizzati per ricomporre il messaggio dai frammenti ed eliminare i duplicati. I dati danneggiati vengono recuperati utilizzando un checksum aggiunto a ciascun segmento trasmesso. Il checksum viene verificato dal destinatario e se non corrisponde, i dati corrotti vengono scartati.

Riso. 7. La dimensione della finestra è tre

Riso. 8. Numeri progressivi e conferme

ProtocolloTCP

TCP(Protocollo di controllo della trasmissione - protocollo di controllo della trasmissione) è un protocollo del livello di trasporto orientato alla connessione e fornisce una trasmissione dati full-duplex affidabile. Il protocollo TCP fa parte dello stack di protocolli TCP/IP. In un ambiente orientato alla connessione, è necessario stabilire una connessione tra due computer per iniziare il trasferimento dei dati. Il protocollo TCP è responsabile della segmentazione dei messaggi in pacchetti, del loro riassemblaggio al destinatario e della ritrasmissione dei dati se non sono stati ricevuti. Il protocollo è anche in grado di creare canali virtuali tra le applicazioni dell'utente finale.

Servizi e protocolli di livello superiore che utilizzano meccanismi TCP:

    FTP (protocollo di trasferimento file);

    HTTP (protocollo di trasferimento ipertestuale);

    SMTP (Simple Mail Transfer Protocol - protocollo di posta elettronica semplice);

I campi del segmento TCP mostrati nella diapositiva sono descritti di seguito.

Porta mittente - numero della porta chiamante.

Porta del ricevitore - numero di porta chiamato.

Numero di serie - numero utilizzato per organizzare i dati in entrata nella sequenza corretta.

Numero di conferma- numero del prossimo ottetto TCP previsto.

HLEN numero di parole a 32 bit nell'intestazione.

Campo riservato- tutti i bit sono impostati su 0.

Bit di codice- funzioni di servizio (ad esempio, impostazione e conclusione di una sessione).

Finestra- il numero di ottetti che il mittente è disposto ad accettare.

Controlla la somma- calcolato controlla la somma campi di intestazione e dati.

Puntatore dati urgenti- indica la fine dei dati urgenti.

Opzioni- attualmente è definito un parametro: taglia massima Segmento TCP.

Dati- dati di protocollo di livello superiore.

ProtocolloUDP

UDP (Utente Datagramma Protocollo- protocollo di trasferimento del datagramma utente), il cui formato del segmento è mostrato nella diapositiva, è un protocollo di trasporto senza connessione nello stack di protocolli TCP/IP. UDP è un protocollo semplice che scambia datagrammi senza riconoscimento e senza garanzia di consegna. La semplicità del protocollo diventa evidente quando si confrontano i formati dei segmenti dei protocolli UDP e TCP. Quando si utilizza il protocollo UDP, la gestione degli errori e la ritrasmissione dei dati devono essere gestite da un protocollo di livello superiore. Ad esempio, se il trasferimento viene interrotto durante l'invio di dati tramite TFTP, solo un operatore umano può scaricare nuovamente le informazioni.

L'elenco seguente mostra i campi del segmento UDP mostrato nella diapositiva

    Porta mittente - numero della porta chiamante.

    Porta del ricevitore - numero di porta chiamato.

    Lunghezza- numero di byte, inclusi intestazione e dati.

    Controlla la somma- checksum calcolato dei campi di intestazione e dati.

    Dati- dati di protocollo di livello superiore.

Il protocollo UDP non utilizza un meccanismo di finestra scorrevole, quindi deve essere garantita l'affidabilità della trasmissione dei dati protocolli del livello applicativo(protocollo del livello applicativo). UDP è stato progettato per applicazioni che non necessitano di collegare insieme segmenti ordinati.

Il protocollo UDP viene utilizzato dai seguenti servizi e protocolli di livello superiore:

    TFTP (protocollo di trasferimento file banale - protocollo più semplice trasferimento di file);

    SNMP (Simple Network Management Protocol - protocollo semplice di gestione della rete);

    DHCP (Dynamic Host Configuration Protocol - protocollo di configurazione host dinamico);

    DNS (Domain Name System - servizio di nomi di dominio).

Numeri di porta del protocolloTCPEUDP

Per trasferire informazioni a livelli superiori sia il protocollo TCP che Protocollo UDP utilizzare il numero di porta o il cosiddetto socket. I numeri di porta vengono utilizzati per tenere traccia delle varie interazioni che si verificano simultaneamente sulla rete.

Gli sviluppatori di software applicativo hanno accettato di utilizzare numeri di porta riservati, la cui assegnazione è gestita dall'Internet Assigned Numbers Authority (IANA). Ad esempio, qualsiasi scambio che coinvolga il trasferimento di dati utilizzando il protocollo FTP dovrebbe utilizzare le porte standard 20 (per i dati) e 21 (per il controllo). Alle comunicazioni di rete che non coinvolgono applicazioni che hanno un numero di porta noto vengono assegnati numeri di porta in modo casuale, ma vengono selezionati da un intervallo specifico di valori superiore a 1023. Alcune porte sono riservate in Protocolli TCP e UDP. Sebbene alcune porte siano riservate in TCP e UDP, le applicazioni potrebbero non essere collegate a questi numeri.

Come mostrato nella diapositiva, per selezionare l'applicazione corrispondente sistema finale utilizza il numero di porta. Il numero della porta di origine è solitamente un numero maggiore di 1023, assegnato dinamicamente dal nodo mittente. Ad esempio, un nodo tenta di connettersi a un altro nodo tramite FTP inviando pacchetti che specificano il numero di porta TCP del destinatario 21 (FTP) e genera dinamicamente un numero di porta di origine pari a 1028. Questa coppia di porte (mittente e destinatario) determina l'unicità dell'interazione tra i due nodi. Se lo stesso nodo avvia una connessione FTP con un terzo nodo, la porta di destinazione rimane impostata su 21, ma la porta del mittente viene scelta come diversa (ad esempio, 1030) per separare le due sessioni di comunicazione.

I migliori articoli sull'argomento