Domanda

Sto pensando di utilizzare SCTP anziché TCP per un'app p2p scritta in C. Dovrebbe Lo faccio? Inoltre, come si confronta la velocità di SCTP con la velocità di TCP?

EDIT: Ho scoperto che SCTP può essere incanalato su UDP con l'unico problema ad essere SCTP tunnel non è interoperabile con SCTP non tunnel.

È stato utile?

Soluzione

Se è per una rete locale, assicurati di farlo.

Si noti tuttavia che se si prevede di utilizzarlo su Internet aperto, molti firewall di livello consumer non sono abbastanza flessibili da consentire protocolli IP non riconosciuti attraverso di essi.

Altri suggerimenti

Hai considerato se su tutti i tuoi sistemi di destinazione sarà preinstallato SCTP o se la tua applicazione dovrà includere SCTP stesso? Nella mia esperienza non mi aspetterei che tutti i sistemi avessero installato SCTP su di essi e non mi sarei aspettato che fossero Windows.

Se includi SCTP nell'applicazione stessa, questo raddoppierà il numero di messaggi passati in un kernel out che avrà un impatto sulle prestazioni rispetto all'utilizzo del TCP preinstallato.

Hai considerato quali vantaggi desideri da SCTP? Hai menzionato la tolleranza agli errori, ma per funzionare con SCTP è necessario che l'applicazione abbia più porte Ethernet e indirizzi IP. È probabile sulla tua app?

Per quanto adoro SCTP (!), prenderei seriamente in considerazione l'idea di utilizzare il protocollo TCP a meno che tu non sia sicuro che sia necessario SCTP o a meno che controlli gli host su cui è distribuita la tua app.

Saluti

Come ti aiuta?

Sei P2P, quindi ogni peer deve avere almeno un socket aperto ad ogni altro peer.

Se hai un socket aperto, puoi fare tutto ciò che ti occorre. Se hai adottato l'approccio di un socket per file e hai più file trasferiti contemporaneamente tra due peer dati, SCTP ti salverà un socket per file. Tuttavia, su una normale rete P2P di qualsiasi dimensione, quasi non non verrà mai trasferito più file contemporaneamente tra due peer.

Basta avere un socket e avere il proprio piccolo protocollo; invia un pacchetto con un'intestazione, l'intestazione indica il tipo di contenuto, ad es. un comando o parte di un file - e in tal caso, quale file e quale intervallo di byte.

Ovviamente, hai un po 'di sovraccarico per questo, mentre se hai un socket per i comandi e uno per file, sei più efficiente. Salvare un socket per peer (supponendo un download alla volta) vale il tempo / la seccatura / la complessità dell'utilizzo di SCTP?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top