Debian 的个人资料Una Debian è per sempre日志列表网络 工具 帮助

日志


2006年2月

Protocollo DCC

Il primo commento che farei riguarda il fatto che il protocollo DCC non fu mai destinato ad essere supportabile da altri clients all’infuori di IRCII. Perciò non mi assumo alcuna responsabilità riguardo ad esse,in quanto difficile da rendere effettivo per altri clients.

Perché DCC?

Il DCC permette all’utente di prevalere su alcune limitazioni della rete di server IRC e avere in ultimo allo stesso tempo,connessioni chat sicure in un protocollo orientato ad IRC.
Per il trasferimento dati attraverso i clients, DCC usa connessioni dirette TCP. Non c’è nessun controllo per il flood, così i pacchetti possono essere spediti al massimo della velocità e non ci sono dipendenze dai link dei server (o carichi a loro imposti). In più,dal passaggio attraverso la rete IRC
del’inizio contatto della connessione DCC, è impossibile spiare i messaggi in DCC da parte degli operatori con server crackati.

Come?

Per una connessione DCC il socket iniziale è creato dalla parte che inizia (offre) la connessione.
Questo dovrebbe essere un socket TCP accoppiato a INADDR_ANY per captare le connessioni,
il client chiamante,nel creare il socket,potrebbe inviare i propri dettagli al client destinatario usando il comando CTCP DCC. Questo comando assume la forma:

DCC type argument address port

type - Il tipo di connessione
argument – L’argomento da cui dipende il collegamento
addres - L’indirizzo host tutto intero di chi ha iniziato la connessione.
port - La porta o il socket sulla quale l’iniziatore attende di ricevere la connessione

L’indirizzo e la porta dovrebbero essere inviati come rappresentazioni ascii del completo formato decimale in modo da convertire i valori in ordine di host byte e trattarli rispettivamente come an unsigned long and unsigned short.
I seguenti tipi di connessione sono conosciuti da IRCII:

Type Scopo Argomento
CHAT per condurre una conversazione sicura la stringa”chat”
SEND per inviare un file al ricevente il nome del file


In più i seguenti sono inclusi nel comando DCC di IRCII sebbene non trasmettono una richiesta DCC tramite IRC:

TALK stabilisce una connessione audio.

Esecuzioni

I tipi di connessione CHAT e SEND non dovrebbero essere accettati automaticamente in quanto questo creerebbe il potenziale per il terrorismo. Invece essi notificheranno all’utente che è stata fatta una proposta e consentono all’utente di accettarla.
Il ricevente dovrebbe avere la possibilità di rinominare il file inviato con il comando DCC SEND previa il ritrovamento di esso.

A seguire,i passaggi che ricorrerebbero nei clients:

Iniziante:
Comando DCC inoltrato.
- Crea un socket accoppiato a INADDR_ANY,porta 0,e lo rende passivo (un socket listening)
- Invia al ricevente attraverso CTCP una richiesta DCC fornendo l’indirizzo e la porta del socket.(Questo è idealmente preso dall’indirizzo della parte locale del socket a sua volta connesso ad un server. Questo è presumibilmente l’interfaccia sull’host più vicino al resto della net e deriva in un piccolo salto di instradamento nel caso di nodi sul percorso).
- Continua normalmente fino a quando viene ricevuta una connessione.

Su una connessione:
- accetta la connessione
- chiudi il socket passivo originale
- esegui l’operazione sul nuovo socket.

Accettante:
Richiesta CTCP DCC ricevuta.
Registra l’informazione riguardante la richiesta del DCC e notifica all’utente.

A questo punto,l’utente sarebbe abilitato ad arrestare(chiudere) la richiesta oppure ad accettarla.
La richiesta dovrebbe essere accettata con un comando che specifica al mittente tipo e argomento oppure un sottogruppo di questi dove non esiste alcuna ambiguità.

Se accettato, crea un socket TCP.
Connette il nuovo socket all’indirizzo ed alla porta forniti.
Esegue l’operazione attraverso il socket.

Dettagli specifici dei tipi

CHAT I dati inviati attraverso una connessione chat dovrebbero essere inviati linea per linea senza alcun prefissi o comandi. La connessione CHAT finisce quando una delle parti inoltra il comando DCC CLOSE al loro client il quale fa in modo che venga chiuso il socket e le informazioni sulla connessione siano tralasciate.
FILE I dati sono inviati in pacchetti piuttosto che ammassati a modo di flusso. Questo permette alla connessione DCC SEND di continuare la dove una connessione FTP invece fallisce. La dimensione dei pacchetti è sul client e può essere impostata dall’utente. Piccoli pacchetti hanno una probabilità più alta di riuscita in caso di links deboli. Il ricevente dovrebbe riconoscere ogni pacchetto dalla la trasmissione del numero totale di byte ricevuti come non siglati,4 byte integri in ordine di byte network. L’inviante non dovrebbe continuare a trasmettere finche il ricevente non ha riconosciuto tutti i dati già trasmessi. In più,l’inviante non dovrebbe chiudere la connessione finchè l’ultimo byte non è stato riconosciuto dal ricevente.
  Da notare che non è possibile per il ricevente dire se ha ricevuto l’intero file-solamente chi invia ha quella informazione,poiché IRCII non la riporta. Gli utenti generalmente verificano il trasferimento attraverso il controllo delle dimensioni del file.
  Da notare anche che nessun provvedimento è preso per il trasferimento di testi.
  La dimensione del blocco usato da IRCII è BIG_BUFFER_SIZE (1024).
Questo dovrebbe essere probabilmente rivisto e ridotto.

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。
Debian 在此页禁用了评论功能。

引用通告

引用此项的网络日志