# Upload

L'upload, anche noto come caricamento, in informatica è il processo di invio o trasmissione di un file (o più genericamente di un flusso finito di dati o informazioni) da un client ad un sistema remoto (denominato server) attraverso una rete informatica; l'azione inversa è chiamata download.

## Descrizione

La navigazione web, ad esempio, è svolta in architettura client-server e, dal punto di vista utente, viene svolta esclusivamente in download.
Nella tecnologia di accesso alla rete Internet tramite ADSL, al flusso di upload tra destinatario e sorgente della comunicazione è associata una banda di trasmissione minore rispetto a quella in download (asimmetria o sbilanciamento) e quindi una velocità di trasmissione inferiore, in quanto tale flusso è inferiore a quello di trasferimento di informazioni utili all'utente consentendo così un risparmio della banda totale del canale full-duplex di comunicazione.
In particolare il traffico di upload comprende traffico di segnalazione ovvero tutte le richieste da parte del client-destinatario alla sorgente-server sia a applicativo sia sotto forma di Ack ovvero di conferme di pacchetti regolarmente ricevuti in una connessione TCP.
Il concetto di upload è fondamentale anche nelle architetture e programmi peer to peer (quali ad es. eMule, Direct Connect, Bearshare) poiché la sua configurazione influisce sulla quantità di file che permettiamo di scaricare in download dagli utenti esterni che dipende a sua volta dalla loro banda di upload. È quindi molto importante in questo caso scegliere un corretto utilizzo della banda suddividendola in modo equilibrato tra upload e download. In particolare la lentezza tipica del download dei PC client nelle reti P2P dipende essenzialmente dalla già discussa bassa capacità in upload, cioè in trasmissione, da parte dei PC server da cui si stanno scaricando dati dovuta alla tipologia di accesso alla rete ADSL.
Alcuni siti offrono servizi di upload e download che possono essere gestiti in modo pubblico o con l'obbligo della registrazione. Esistono ad esempio programmi che mettono (condividono) i file sul web, che vengono caricati in particolari siti di upload per poi permettere ad altre persone di scaricare i file che abbiamo caricato a velocità di download accettabili per la qualità di servizio richiesta generalmente dall'utente finale.

## Sviluppo storico

La condivisione di file in remoto è stata realizzata per la prima volta nel gennaio 1978, quando Ward Christensen e Randy Suess, membri del Chicago Area Computer Hobbyists 'Exchange (CACHE), hanno creato il Computerized Bulletin Board System (CBBS). Questo utilizzava un protocollo di trasferimento file precedente (MODEM, in seguito XMODEM) per inviare file binari tramite un modem hardware, accessibile da un altro modem tramite un numero di telefono.
Negli anni successivi furono rilasciati nuovi protocolli come Kermit, fino a quando il File Transfer Protocol (FTP) non fu standardizzato nel 1985 (RFC 959). FTP è basato su TCP/IP e ha dato origine a molti client FTP, che a loro volta hanno fornito agli utenti di tutto il mondo l'accesso allo stesso protocollo di rete standard per trasferire i dati tra i dispositivi.
Il trasferimento di dati ha visto un notevole aumento di popolarità dopo il rilascio del World Wide Web nel 1991, che, per la prima volta, ha permesso agli utenti che non erano appassionati di computer di condividere facilmente file, direttamente dal proprio browser web su HTTP.

### Resumabilità dei trasferimenti di file

I trasferimenti sono diventati più affidabili con il lancio di HTTP/1.1 nel 1997 (RFC 2068), che dava agli utenti la possibilità di riprendere i download interrotti, ad esempio a causa di connessioni inaffidabili. Prima che i browser web distribuissero ampiamente il supporto, programmi software come GetRight potevano essere utilizzati per riprendere i download. La ripresa dei caricamenti non è supportata da HTTP, ma può essere aggiunta con il protocollo aperto Tus per i caricamenti di file ripristinabili, che sovrappone la ripresa dei caricamenti alle connessioni HTTP esistenti.

## Tipi di caricamento
### Caricamento da client a server

La trasmissione di un file locale a un sistema remoto seguendo il modello client-server, ad esempio, un browser Web che trasferisce un video a un sito Web, è chiamato caricamento da client a server.

### Caricamento remoto

Il trasferimento di dati da un sistema remoto a un altro sistema remoto sotto il controllo di un sistema locale è chiamato caricamento remoto o trasferimento da sito a sito. Viene utilizzato quando un computer locale ha una connessione lenta ai sistemi remoti, ma questi sistemi hanno una connessione veloce tra di loro. Senza la funzionalità di caricamento remoto, i dati dovrebbero essere prima scaricati sul sistema locale e quindi caricati sul server remoto, entrambe le volte tramite una connessione più lenta. Il caricamento remoto viene utilizzato da alcuni servizi di hosting di file online. Un altro esempio può essere trovato nei client FTP, che spesso supportano il File eXchange Protocol (FXP) per istruire due server FTPcon connessioni ad alta velocità per lo scambio di file. Un esempio basato sul Web è l'uploader di file Uppy che può trasferire file dall'archivio cloud di un utente come Dropbox, direttamente a un sito Web senza prima accedere al dispositivo dell'utente.

### Peer-to-peer

Il peer-to-peer (P2P) è un modello di comunicazione decentralizzato in cui ciascuna parte ha le stesse capacità e ciascuna delle parti può avviare una sessione di comunicazione. A differenza del modello client-server, in cui il client effettua una richiesta di servizio e il server soddisfa la richiesta (inviando o accettando un trasferimento di file), il modello di rete P2P consente a ciascun nodo di funzionare sia come client che come server. BitTorrent ne è un esempio, così come l'InterPlanetary File System (IPFS). Il peer-to-peer consente agli utenti sia di ricevere (download) che di ospitare (upload) contenuto. I file vengono trasferiti direttamente tra i computer degli utenti. Lo stesso trasferimento di file costituisce un caricamento per una parte e un download per l'altra parte.

## Problemi di copyright

La crescente popolarità della condivisione di file durante gli anni '90 culminò con l'emergere di Napster, una piattaforma di condivisione di musica specializzata in file MP3 che utilizzava la tecnologia di condivisione di file peer-to-peer (P2P) per consentire agli utenti di scambiare file liberamente. La natura P2P significava che non c'era un gatekeeper centrale per il contenuto, il che alla fine ha portato alla diffusa disponibilità di materiale protetto da copyright attraverso Napster.
La Recording Industry Association of America (RIAA) ha preso atto della capacità di Napster di distribuire musica protetta da copyright tra la sua base di utenti e, il 6 dicembre 1999, ha presentato una mozione per un'ingiunzione preliminare al fine di interrompere lo scambio di canzoni protette da copyright sul servizio. Dopo un appello fallito da Napster, l'ingiunzione è stata concessa il 5 marzo 2001. Il 24 settembre 2001, Napster, che aveva già chiuso l'intera rete due mesi prima, accettato di pagare 26 milioni di dollari. insediamento.
Dopo che Napster ha cessato le operazioni, sono seguiti molti altri servizi di condivisione di file P2P, come Limewire, Kazaa e Popcorn Time. Oltre ai programmi software, c'erano molti siti Web BitTorrent che consentivano l'indicizzazione e la ricerca dei file. Questi file potrebbero quindi essere scaricati tramite un client BitTorrent. Sebbene il protocollo BitTorrent stesso sia legale e indipendente dal tipo di contenuto condiviso, molti dei servizi che non imponevano una politica rigorosa per rimuovere materiale protetto da copyright alla fine avrebbero anche incontrato difficoltà legali.