| Autore: PUOJACKZ | Data: 2005-11-27 |
| Modificato:
Documento non modificato
|
Letture: 1768 |
|
Cosa sono i messaggi di Quit di IRC? I messaggi di Quit servono per descrivere il motivo percui un utente lascia IRC o l'errore che ha causato la disconnessione dell'utente dal server dov'era connesso. Dove sono mostrati questi messaggi? Quando un utente quitta IRC (si disconnette) viene mostrato un messaggio nel canale/i dove lui era presente. Se non era presente da nessuna parte (ad es. perché era in chat in query/privato con qualcuno), non verrà mostrato nulla. Se non si riceve segnali di risposta dall'altro utente esegui un /whois a quest'ultimo per vedere il suo stato di connessione. In un canale, il testo standard di quit è ""Nick" has quit IRC (messaggio)" (il nickname è uscito da IRC). Nell'area dove dovrebbe essere scritto il messaggio, c'è sempre una descrizione. Come capire le info di un messaggio di Quit? Le info fornite da un client quando quitta da IRC volutamente di solito possono essere varie (es. PUOJACKZ has quit IRC (Ciao a tutti ci vediamo, vengo alle 19 ;D)), ma le info più importanti sono quelle fornite nel caso in cui un utente viene disconnesso da IRC perché c'è stato un problema o un errore. Per esempio, dei messaggi di quit frequenti sono "EOF from client", "Connection reset by peer" "Ping timeout", "Dead socket", "Excess flood", ecc. E' bene sapere, però, che i messaggi di quit causati da errori vari, cambiano a seconda dell'IRCd che la rete sta usando. Creazione di un messaggio di Quit proprio Molti utenti modificano il messaggio standard di quit inserendo il motivo per cui si disconnettono. Per fare ciò, il comando è: "/quit (motivo)". Se, ad esempio, il mio nickname è PUOJACKZ, verrà visualizzato un messaggio :
PUOJACKZ has quit IRC (motivo). Messaggi di Quit per errori di Scrittura/Lettura Errore di lettura Un errore di lettura lo si ha quando il server non riesce a leggere, in modo corretto o completamente, le info richieste al client dell'utente connesso ad esso. Questo errore è causato perché, durante l'attività, erano attese ulteriori info dalla fonte in fase di lettura, che il client non ha fornito (perchè non è più connesso e può essere dovuto all'inizio di un colloquio server-client non ultimato), oppure perchè la fonte delle informazioni è finita (EOF = end of file/fine del file, *** PUOJACKZ has quit IRC (EOF from client)), senza fornire le informazioni sufficienti per poter continuare il collegamento. Pertanto la connessione non può essere gestita in modo corretto e l'utente viene disconnesso. Errore di scrittura Un errore di scrittura lo si ha quando un server non riesce a scrivere delle info di collegamento, nel client di un utente, in modo appropriato. Quando il server riceve delle info, di solito risponde con le info che possiede. Se riceve un errore di scrittura, quest'ultimo disconnette l'utente con un messaggio di quit del tipo (sempre se il mio nick è PUOJACKZ): *** PUOJACKZ has quit IRC (Write error to PUOJACKZ, closing link). Questo errore è causato perché il server chiude il collegamento quando tenta di spedire dei dati al client connesso. Max SendQ Exceeded Il SendQ (Send Queue, coda di spedizione) è l'ammontare di dati che possono essere accodati, per la spedizione, dal server. Each server has Ogni utente ha un proprio limite massimo di dati. Questo evita che un utente possa floodare il server, spedendo enormi quantità di dati da instradare. Questo messaggio di Quit viene inviato quando un utente, a causa dell'attività del client con cui si connette al server, supera il limite di accodamento dei dati da spedire (durante la disconnessione, il messaggio si presenta così: *** PUOJACKZ has quit IRC (Max sendQ Exceeded)). Broken Pipe Questo messaggio di Quit è provocato quando avviene in interruzione istantanea di connessione con il server. Ciò può accadere per vari motivi, spesso non dovuti a causa dell'utente (es. traffico internet elevato, ISP sovraccarico, problemi di routing ecc...). Connection reset by peer Questo messaggio di quit viene inoltrato quando un client IRC chiude una connessione col server, in modo non standard (cioè non rispettando le procedure di chiusura). Ciò non permette al server di riuscire a comprendere se la connessione è ancora attiva o è stata terminata. Il server effettua la chiusura quando tenta di spedire o di leggere dei dati, ma tali azioni non riportano ad un risultato valido. Pertanto la connessione viene intesa non valida e quindi resettata. Tale routine è presente nei server IRC al fine di disconnettere eventuali connessioni "Ghosts" non resettate dalla richiesta PING (per vari motivi). Ping Timeout. Quando capita e cosa fare per evitarli? Per identificare se un utente è connesso oppure no, ogni server IRC spedisce un segnale di ping ad ogni utente ad intervalli regolari, che devono essere risposti da quest'ultimo. Grazie a ciò i Ghosts (ossia le connessioni morte, non controllate da nessuno) vengono disconnessi dai servers, così da permettere l'utilizzo dei nicknames erroneamente occupati. Questo meccanismo è la base che permette ad un utente di rimanere connesso al server stesso. (Infatti lo scopo di un attacco DoS è di occupare tutta la banda di trasmissione in modo tale che il server invii il segnale di ping ma non riceva nessuna risposta a causa del flood ricevuto dall'attacco e il server, pensando che l'utente sia un GhostClient, disconnetta quest'ultimo). Quando tu vedi "PING? PONG!" nella tua finestra status, questo significa che il server ha pingato il tuo client e gli è stata data una risposta per assicurare a quest'ultimo che si è ancora connessi e presenti. Quando il server non riceve una risposta di ping disconnette l'utente per Ping Timeout in quanto il tempo per la risposta del segnale inviato ha superato i limiti impostati dall'admin del Server. Per esempio se io sono connesso ad IRC e per un motivo qualsiasi non riesco a rispondere al server, quest'ultimo mi invierà il ping, ma, dopo un certo tempo, vedendo il mio client non rispondere a tale richiesta, mi disconnetterà col messaggio: *** PUOJACKZ has quit IRC (Ping timeout). Non c'è un sistema per evitare i ping timeout. Spesso sono causati dal sovraccarico degli utenti, del server, a causa di problemi di ISP, perché si è sotto attacco DDoS o è prossimo ad un crash del sistema. Che cos'è un Ping (a livello utente)? Un ping è uno messaggio che gli utenti (tramite il CTCP) usano per misurare l'ammontare di tempo tra la spedizione e la ricezione di un dato. Quando un utente pinga un altro utente, viene spedito il comando al server. Il server lo spedisce al server dove è collegato l'altro utente e poi all'utente di destinazione. Il client di quest'ultimo risponde, spedisce la risposta al suo server che verrà recapitata al server e all'utente iniziale. I servers, invece, usano un altro tipo di Ping, che segnala loro se un utente è ancora connesso oppure no. Nel caso in cui tale segnale non abbia un ritorno (tramite un Pong), il server, come prestabilito dal protocollo LiveNess, disconnette il nickname, in quanto lo considera invalido (senza un utente reale). Dead Socket & Excess Flood Questo tipo di errore avviene quando il server fornisce ad un utente un collegamento che non funziona, oppure quando il flood è talmente alto che il server interrompe la connessione per non ricevere o spedire i dati richiesti. Se l'utente è collegato al server tramite un collegamento malfunzionante, uscirà col messaggio: *** PUOJACKZ has quit IRC (Dead socket). Se invece il client richiede troppe informazioni, uscirà col messaggio: *** PUOJACKZ has quit IRC (Excess Flood). Riconoscere un Netsplit I messaggi di quit sono presenti anche durante i netsplit. Il messaggio di solito mostra i due servers che sono splittati. Per esempio, se PUOJACKZ si è disconnesso da IRC perchè irc.mio.uno e irc.mio.due sono splittati, si avrà: *** PUOJACKZ has quit IRC (irc.mio.uno irc.mio.due). Messaggi di quit causati dagli IRCOp Quando un IRCop disconnette un utente, ciò viene mostrato nel messaggio di quit di quest'ultimo. Per esempio, se PUOJACKZ è stato G:Lineato si vedrà: *** PUOJACKZ has quit IRC (G-lined). La stessa cosa succede quando vengono eseguiti dei Kill o delle K:Line: *** PUOJACKZ has quit IRC (Killed (PUOJACKZ (Abuse))), oppure *** PUOJACKZ has quit IRC (KLine active: (connessione_permanente)). Nick Collision Durante le fasi di NetMerging/Healing, in certe reti IRC, è possibile scontrarsi con il problema del "Nick Collision". Qualora 2 utenti abbiano lo stesso nickname, e provengono da 2 servers differenti, il risultato è la disconnessione di entrambi i clients. Questo, però, accadeva prima dell'introduzione del Timestamp e del NickID. In caso la rete supporti il Timestamp, l'utente che si è connesso per primo, con il nickname, continuerà ad utilizzarlo, mentre l'altro verrà disconnesso. Qualora sia supportato il NickID e venga ad effettuarsi questo tipo di evento, entrambi i nicknames verranno cambiati con i relativi NickID, generati secondo varie regole decise nel protocollo degli IRCd. Un altro caso di Nick Collide può accadere qualora il client risulti essere su due servers differenti, a causa dell'attività di un NetSplit, in fase di Merging/Healing. Se l'utente ha come nickname PUOJACKZ, il messaggio risulterà essere *** PUOJACKZ has quit IRC (Killed (*.myserver.org (nick collision))). Di norma, sono i lag tra i collegamenti Server-Server che causano le collisioni di nickname, in quanto, l'aggiornamento dei dati tra i servers avviene con ritardi. E' in questo caso che può accedere che un nickname cambi velocemente un server, per sfuggire ad un eventuale lag locale al server ov'era, oppure, 2 utenti differenti tentano di utilizzare lo stesso nickname, senza che sia loro vietato.
|