Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    porte e socket, domanda niubbi assoluto

    Ciao,

    sono un niubbi assoluto per quanto concerne reti e telematica. Vorrei fare una domanda, perché ho molti dubbi in vista di un esame (non faccio informatica, ma devo sostenerlo comunque)

    Che differenza c'è tra una porta ed un socket? Per esempio: la porta 80 è la porta classica di HTTP se non sbaglio, e le socket? Cosa sono? Dove stanno?

    Grazie mille a chi vorrà rispondermi


  2. #2
    Utente di HTML.it L'avatar di TOXiC
    Registrato dal
    Aug 2007
    Messaggi
    16
    Dunque le porte sono delle "gestioni virtuali" del protocollo TCP/IP; esse servono per indirizzare i vari pacchetti provenienti dalla scheda di rete in modo più ordinato.
    Per essere chiaro pensa se non esistessero le porte tutte le applicazioni in "ascolto" (spiego dopo) come ad esempio un browser beccherebbero indiscriminatamente tutto il traffico TCP a lui non indirizzato (messaggi di MSN e così via...).
    Le porte a livello fisico non esistono ma sono una specifica del protocollo TCP/IP.
    I socket (letteralmente "zoccolo") sono invece la base.
    Se nella scheda madre il processore comunica con i vari bus tramite il socket, una generica applicazione comunica con la scheda di rete tramite i socket.
    Se non esistessero per scrivere uno stupidissimo programmino di chat bisognerebbe programmare in linguaggio macchina la scheda di rete VVoVe: !!!
    Essi sono una specie di interfaccia virtuale che espone al programmatore i metodi e le chiamate alla scheda (opcodes) sotto forma di comandi semplici come appunto LISTEN, SEND...
    Spero di averti chiarito le idee.

    fammi sapere per dubbi o chiarimenti!

    Ciauz,

    TOXiC.
    E' curioso vedere come tutte le scimmiette meccaniche che urlano per qualsiasi idiota che canta, fanno lo stesso con ogni papa.

  3. #3
    Ecco: ma i socket sono collegati alle porte? E sono in numero predeterminato?

    Per capire: io ricevo pacchetti sulla scheda di rete, questi pacchetti transitano attraverso la porta 80 e poi un socket li passa al livello dell'applicazione oppure non c'entra niente??

    Scusa la mia ignoranza, ma sono come dicevo un novellino assoluto. Grazie per la risposta

  4. #4
    Utente di HTML.it L'avatar di TOXiC
    Registrato dal
    Aug 2007
    Messaggi
    16
    No, non centra niente.
    Sulla scheda di rete transitano solo segnali elettrici.
    Il socket è un applicazione software a bassissimo livello che si preoccupa di interpretare (in ambo i versi) i segnali elettrici (0 e 1) in comandi specificati nel protocollo TCP/IP (ovvere i pachetti) che saranno reindirizzati tramite un processo di pipeling all'applicazione (tamite la porta) che ha creato il socket.
    Per capire se io volessi implementare un nuovo protocollo dovrei scrivere un nuovo socket.
    Vedilo come un interprete se ti aiuta.
    I socket in quanto interpreti del protocollo sono strettamente correlati con le porte ma;
    Si possono creare infiniti (teoricamente) socket, uno e uno solo per ogni applicazione.
    Le porte sono invece finite in quanto facenti parti di uno standard.

    Sempre a tua disposizione per chiarimenti.

    TOXiC.
    E' curioso vedere come tutte le scimmiette meccaniche che urlano per qualsiasi idiota che canta, fanno lo stesso con ogni papa.

  5. #5
    Scusa se ti disturbo ancora, ma data la tua gentilezza e competenza mi permetto di chiederti ancora se ho capito con un esempio.

    Es.: il mio client chiede ad un server una pagina web:

    - i router fanno transitare il datagramma a livello di rete;
    - poi il pacchetto giunge all'host del server;
    - il protocollo TCP a livello di trasporto fa passare dalla porta 80 il pacchetto;
    - la socket porta il pacchetto a livello applicativo;
    - il livello applicativo del server elabora la richiesta http
    - il server risponde;
    - il pacchetto viene incapsulato e passa a livello di rete;
    - giunge al mio host;
    - passa da una porta TCP (anche qui la 80?)
    - viene interpretato da una socket (quella dedicata ad http, sempre che sia così e ce ne sia una...) per il mio browser

    E' così che funziona?

  6. #6
    Utente di HTML.it L'avatar di TOXiC
    Registrato dal
    Aug 2007
    Messaggi
    16
    Ciao,
    Non ti preuccupare di "disturbarmi"; il livello socket/porta è abbastanza ostico.

    Ho corretto così il tuo schema:



    - il tuo SOCKET (della tua applicazione) interpreta e "compila" le istruzioni TCP (i comandi semplici di cui ti parlavo) con indirizzo la porta 80, in codice macchina;
    -la scheda invia attraverso il router i segnali alla scheda del server
    -il socket dell'applicazione server interpreta e compila i segnali in istruzioni TCP e capisce che deve indirizzarli all'applicazione che dice di essere in ascolto sulla porta 80.

    La stessa operazione per i dati a ritorno.

    Il concetto di socket che hai è sbagliato.

    Pensa ai socket come la presa elettrica di casa; se vuoi far passare elettroni ad un tuo apparecchio(metafora per dire che se vuoi visionare il traffico di rete devi connettere il socket) devi mettere la spina del tuo apparecchio nella presa (che è una per ogni apparecchio ma sempre lo stesso flusso di elettroni passa no?).
    Un elettrone (immaginatelo come una pallina da biliardo) ha su scritto il numero 80
    allora l'apparecchio che dice di essere l'80 si vedrà recapitare sulla sua presa l'elettrone 80.

    Hai capito? i socket sono 2 cose:
    Interpretano l'anonimo codice macchina in istruzioni standardizzate (TCP/IP protocol)
    assegano le istruzioni alle applicazioni giuste.

    Per farti capire bene;
    per interagire con la rete mi è indispensabile avere un socket per capire cosa diavolo passa per la scheda.
    I socket delle applicazioni sono tutti uguali sono come dei cartellini ;
    se non li hai non entri e tramite il numero ti vengono dati alcuni messaggi. non esiste uno per http l'altro per ftp ecc.. sta all'applicazione interpretare i comandi ricevuti che segnano come ricevente l'applicazione sulla porta 80(o quella che sia)!

    I socket stanno a monte di tutte le operazioni.

    Scusa per i mille esempi e per gli eventuali errori di grammatica

    Sempre a disposizione.

    TOXiC.
    E' curioso vedere come tutte le scimmiette meccaniche che urlano per qualsiasi idiota che canta, fanno lo stesso con ogni papa.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    892
    ok, così mi è piu' chiaro. Scusa se ti disturbo ancora, ma data la tua gentilezza approfitto.

    Dunque:
    - il mio browser, attraverso la sua socket, invia una richiesta http per una pagina web attraverso la porta 80 della mia scheda di rete
    - i pacchetti transitano
    - giungono alla scheda di rete del server

    A questo punto, da quel che ho capito, dovrebbe esserci una socket "davanti" alla scheda di rete che interpreta il segnale elettrico, lo fa transitare per la porta 80 e lo decodifica per il servizio (sia esso IIS o Apache o altro...). Ho capito bene?

    E in questo caso deduco che vi siano alcune socket "precompilate" (per esempio quelle del browser e delle schede di rete, che regolano il traffico attraverso le porte competenti...)

    Quindi ti chiedo: quand'è in pratica che si rende necessario creare nuove socket? Esiste differenza tra le socket della scheda di rete (e che da ciò che ho capito instradano i pacchetti attraverso le porte) e quelle applicative??

    Scusa ancora l'ignoranza ma faccio Comunicazione e di Informatica non so una mazza
    :berto:

  8. #8
    Utente di HTML.it L'avatar di TOXiC
    Registrato dal
    Aug 2007
    Messaggi
    16
    Tutto giusto tranne per una cosa:
    tutti i socket sono avanti alla porta (quindi sono allo stesso livello) e non esisitono socket precompilati in quanto sono ignoranti: consegnano il pacco al destinatario senza sapere cosa c'è dentro.
    Sta poi all'applicazione riconoscere che sono istruzioni http (decodificare).

    quindi non esistono socket della scheda di rete e sochet applicative ma sono tutte uguali ed allo stesso livello.

    I socket vengono creati (ricordi: uno ed uno solo per ogni applicazione) dall'applicazione ogni qualvolta voglia interfacciarsi con il flusso di rete.

    Ti scrivo un piccolo esempio di pseudocode per la creazione di un socket.

    SERVER

    SC = CreateSocket(127.0.0.1) //indirizzo
    SC.Listen(80) //porta
    if SC.PacketsReceived.Text = "CIAO CIAO" then
    SC.Close // Chiude il socket liberando la porta
    else
    ... // Continua ad aspettare il pacchetto

    CLIENT

    SC = CreateSocket(128.0.0.9) //indirizzo
    // SC.Listen non è necessario in quanto non riceve nulla
    SC.SendOverNet (127.0.0.1, 80, "CIAO CIAO")
    SC.Close

    A fini didattici prova ad installare il programma ETHEREAL.
    Questo programma ti fa vedere tutto il traffico sulla rete (quindi agisce come un socket)
    e poi dopo interpreta i pacchetti e te li mostra. Molto utile ai fini della comprensione.

    Fammi sapere.

    Ciauz,

    TOXiC
    E' curioso vedere come tutte le scimmiette meccaniche che urlano per qualsiasi idiota che canta, fanno lo stesso con ogni papa.

  9. #9
    l'unica cosa che mi manca da capire è questa: io ho un server che riceve impulsi elettrici nella scheda di rete, la prima cosa che entra in funzione è la socket, che li decodifica e indirizza alla porta corrispondente dove trovo il processo in ascolto.

    Nel client poi arrivano i pacchetti sotto forma di impulsi elettrici nella scheda di rete. La socket li decodifica e li manda al processo corrispondente.

    Quindi ti faccio una domanda: a che servono più socket? Non ne basterebbe una soltanto per "smistare" i pacchetti alle porte? E nel caso in cui ve ne sia più di una, come fa ad entrare in funzione quella "giusta"? Si tratta solo di impulsi elettrici in fondo, e dall'idea che mi sono fatto finché la socket non li "legge" non possono transitare attraverso la porta verso il processo.

    Ma se le socket sono per esempio 6, e io sto ricevendo una pagina web tramite http da un server, come fa ad attivarsi proprio la socket che prende il pacchetto, lo passa attraverso la porta 80 ad Internet Explorer e non quella che passa il pacchetto attraverso la stessa porta p.e. a Netscape, oppure un'altra socket che non c'entra niente con http??

    Scusami ancora...

  10. #10
    Prima di capire cosa sia un socket dovresti capire cosa è in sostanza il protocollo TCP/IP.
    Infatti, a meno che non programmi, il concetto di 'socket' non ti interessa granchè dato che non è altro che un'API che utilizzi per interfacciarti a TCP/IP, appunto.
    Le tue domande, in definitiva, richiedono una lettura dei fondamenti di TCP/IP, del modello ISO/OSI e compagnia bella, non delle "socket".
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.