Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    34

    Sequence number server UDP in C

    Sempre io che vi rompo le scatole.
    Allora, se vi ricordate ho implementato un server concorrente UDP in C(causa utilizzo macchine virtuali), e grazie al vostro aiuto, ora funziona che è una meraviglia.
    Ora, ho montato le macchine virtuali uml e funzionanpo perfettamente con il server.
    A questo punto, mi è stato chiesto (il tutto è per crearmi l'emulatore per lo studio dei ritardi per la mia tesi di laurea) di cercare di fare il sequence number dei pacchetti scambiati tra client/server.
    Il problema è che l'header UDP non ha un campo sequence number, a differenza di TCP.
    Ora, prima di fare una figuraccia con il Prof., volevo gentilmente sapere se ho ragione io, quindi Sequence number impossibile con UDP, o se c'e' un modo per poterlo fare, e se si quale (sto diventando matto!!!!).
    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Forse intendevano riferirsi al protocollo RUDP

    http://www.javvin.com/protocolRUDP.html
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    34
    Allora, ti spiego meglio. Ho dovuto utilizzare UDP perche' devo emulare una rete satellitare, quindi TCP a causa del three way handsnake praticamente mi triplicherebbe i ritardi (motivo x cui TCP fa schifo via satellite).
    Ora non conosco questo RUDP, ma sto documentandomi.
    Il problema è che le socket in C sono DGRAM appunto perche' UDP. Cambia qualcosa con RUDP?
    Nel senso, ho gia il mio servere ed i miei client implementati. Modificando con RUDP cambierebbe qualcosa?
    Tutto li, ti ripeto, non lo conosco!!
    Comunque grazie!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Neanche io conosco i dettagli di RUDP ma so che e' previsto il Sequence Number per migliorare l'affidabilita' del protocollo dato che viene utilizzato nel VoIp ... a te l'onere di approfondire ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5

    Re: Sequence number server UDP in C

    Originariamente inviato da MadAlex
    Sempre io che vi rompo le scatole.
    Allora, se vi ricordate ho implementato un server concorrente UDP in C(causa utilizzo macchine virtuali), e grazie al vostro aiuto, ora funziona che è una meraviglia.
    Ora, ho montato le macchine virtuali uml e funzionanpo perfettamente con il server.
    A questo punto, mi è stato chiesto (il tutto è per crearmi l'emulatore per lo studio dei ritardi per la mia tesi di laurea) di cercare di fare il sequence number dei pacchetti scambiati tra client/server.
    Il problema è che l'header UDP non ha un campo sequence number, a differenza di TCP.
    Ora, prima di fare una figuraccia con il Prof., volevo gentilmente sapere se ho ragione io, quindi Sequence number impossibile con UDP, o se c'e' un modo per poterlo fare, e se si quale (sto diventando matto!!!!).
    Grazie in anticipo.
    Il quesito del prof è insensato, ammeso che abbia capito.
    UDP non ha nessun sequence number.
    Se vuoi implementare un sequence number, beh è fattibile.


  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    34
    Si, infatti risulta insensato anche a me!!!
    Implementarlo?
    Hai qualche idea o esempio?
    Grazie

  7. #7
    Allora, ti spiego meglio. Ho dovuto utilizzare UDP perche' devo emulare una rete satellitare, quindi TCP a causa del three way handsnake praticamente mi triplicherebbe i ritardi (motivo x cui TCP fa schifo via satellite).
    Il ritardo di TCP rispetto ad UDP non è certamente imputabile al 3 way handshake, cosa che avviene solo a inizio connessione.
    Sono altri i fattori che lo rendono più lento.

    Allora, se vi ricordate ho implementato un server concorrente UDP in C(causa utilizzo macchine virtuali), e grazie al vostro aiuto, ora funziona che è una meraviglia.
    Ora, ho montato le macchine virtuali uml e funzionanpo perfettamente con il server.
    A questo punto, mi è stato chiesto (il tutto è per crearmi l'emulatore per lo studio dei ritardi per la mia tesi di laurea) di cercare di fare il sequence number dei pacchetti scambiati tra client/server.
    Il problema è che l'header UDP non ha un campo sequence number, a differenza di TCP.
    Ora, prima di fare una figuraccia con il Prof., volevo gentilmente sapere se ho ragione io, quindi Sequence number impossibile con UDP, o se c'e' un modo per poterlo fare, e se si quale (sto diventando matto!!!!).
    Grazie in anticipo.
    Non ho capito cosa devi fare di preciso.
    Se il sn non è previsto nativamente gia in UDP non puoi certo inventartelo se il protocollo è nato in quel modo.
    Forse il prof vuole che tu implementi un sistema di verifica dell'ordine di arrivo dei pacchetti non nell'header di UDP (ovviamente) ma nel payload (il campo "dati", per capirci).
    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.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da billiejoex
    Forse il prof vuole che tu implementi un sistema di verifica dell'ordine di arrivo dei pacchetti non nell'header di UDP (ovviamente) ma nel payload (il campo "dati", per capirci).
    Concordo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    34
    Allora, concordo con voi su tutto. Il discorso è semplice. Ho implementato un server in C UDP, che mi gestisce piu di 100 client ( che girano su delle virtual machine linux). Quindi si scambiano vari messaggi (dal logon, al first trasmission time, ecc..). Tutto c'ho l'ho implementato senza problemi, e funziona tutto alla grande. Ora, volevo vedere praticamente il "sequence number" dei vari pacchetti scambiati( per valutare eventuali perdite e per eventuali altre simulazioni future). Per far cio' ho praticamente creato per ogni client un int seq_num, inizializzato a zero, che viene incrementato per ogni invio di un pacchetto (ovviamente nel campo dati), quindi quando mi arriva un pacchetto al server, con una printf mi dice "Ricevuto pacchetto [i] dal client x.x.x.x" per capirci.
    Ora volevo semplicemente sapere se c'era un altro modo un po' piu pulito per far cio', o se cosi' puo' andar bene.

  10. #10
    Puoi stabilire un semplice protocollo per cui se noti una discrepanza del valore di sn lato ricevente (es: 1, 2, 3, 5) interrompi temporaneamente la ricezione (nel senso ignori i pacchetti marcati 6, 7, 8 che potrebbero arrivarti) e mandi un pacchetto al mittente chiedendo di ricominciare da sn 4.
    E' pressapoco quello che fa TCP (molto pressapoco).

    Il protocollo te lo inventi di sana pianta utilizzando il segmento dati per supplire alle mancanze dell'header.
    Puoi ad esempio decidere che i caratteri da 1 a 3 li dedichi al sn, da 3 a 6 li tieni riservati (che so... eventuali comandi) e da 6 in avanti è tutto dati.
    Io avevo fatto una cosa molto simile utilizzando ICMP ma il principio è lo stesso dato che entrambi i protocolli sono connection-less e dispongono di un campo dati:
    http://billiejoex.altervista.org/Prj_Py_soicmp.shtml

    Cmq chiederei al tuo professore una traccia precisa dato che non è chiaro cosa si vuole emulare da TCP e come si intende farlo.
    Il rischio di reinventare una ruota tutta sgangherata è molto alto.
    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.