Primeiro servidorIRC, tolsun.oulu.fi, um servidorSun-3 em exibição perto do centro de informática da universidade de Oulu (2001).Uma captura de tela doXChat, um clienteIRCmultiplataforma
Nainformática, oInternet relay chat (conhecido pelaabreviaçãoIRC) é umsistema de bate-papo online noformato texto/teletexto comunitário (originalmenteprotocolo de texto simples), criado em 1988 porJarkko Oikarinen, que permite discussões entre vários participantes nos chamados "canais de conversação", e conversas entre apenas dois parceiros de forma particular (em diálogos de perguntas e respostas, por exemplo),[1] utilizando o programa de chat chamado "clienteIRC" conectando-se a um servidorIRC. Qualquer participante pode criar um novo canal de conversa e, um único usuário de computador pode, participar de vários canais simultâneos.
Este cliente de conversação pode ser um programa independente no computador local (mIRC eXChat por exemplo) ou ter a forma de umainterface de usuário especial de dentro de um programa maior, como umnavegador deInternet. Por exemplo, o navegadorOpera inclui um clienteIRC e clientes como oMibbit, oIRCCloud, oKiwiIRC e oThe Lounge Chat doMIT podem funcionar em conexão com muitos navegadores populares.
Uma redeIRC de servidores interconectados que operam como estações de retransmissão é usada para mediar as chamadas noIRC. O recurso essencial desta rede é sua topologia de comunicaçãoBITNET, que permite apenas um caminho de comunicação entre dois participantes. Historicamente, isso garantiu comunicação eficiente porque, nos primeiros dias doIRC, as linhas intercontinentais de dados tinham uma capacidade muito limitada. A topologia permitiu que mensagens de um cliente em um continente não fossem enviadas individualmente para cada cliente em outro continente mas apenas uma vez para um servidor local que então as distribui para os clientes. Apesar das capacidades de gerenciamento limitadas, foram possíveis "paisagens de bate-papo". A desvantagem é a falta de redundância, que se manifesta nos chamadosnet splits: se algum servidor falha, a rede divide automaticamente as peças separadas até que uma nova conexão seja estabelecida entre as partes.
As maiores redesIRC consistem em várias dezenas de servidoresIRC que conectam simultaneamente mais de cem mil usuários e gerenciam dezenas de milhares de canais em que milhares de pessoas podem participar simultaneamente. Apesar dessas enormes proporções, o atraso em um texto enviado é na ordem de décimos de segundo (raramente excede o tempo de um segundo).
A utilização doIRC vem, desde 2003, diminuindo constantemente. Os números apontam uma perda de 60% dos usuários (de 1 milhão em 2003 para cerca de 400 mil em 2021) e mais de metade dos canais (de meio milhão em 2003 para menos de 200 mil em 2021). Em abril de 2011, hospedando centenas de milhares de canais e operando em um total de aproximadamente 1 500 servidores (além de aproximadamente 3 200 servidoresIRC em todo o mundo),[2] as 100 principais redesIRC serviam mais de meio milhão de usuários.[3] Em junho de 2021, existiam 481 diferentes redesIRC conhecidas por estarem operando.[4]
Do ponto de vista técnico, oInternet relay chat é implementado como um protocolo decamada de aplicação para facilitar a comunicação na forma de texto. O processo dechat funciona em ummodelo de rede cliente-servidor. Conforme já discutido, os clientesIRC podem ser programas de computador autônomos ou aplicativos baseados naweb executados localmente no navegador ou em um servidor de terceiros. Esses clientes se comunicam com servidores dechat para transferir mensagens para outros clientes.[5] OIRC é projetado principalmente para comunicação em grupo (em fóruns de discussões chamados decanais)[6] mas também permite comunicação um-para-um por meio demensagens privadas,[7] bem comobate-papo e transferência de dados[8] (incluindocompartilhamento de arquivos).[9]
Osoftware cliente está disponível para todos os principais sistemas operacionais que oferecem suporte ao acesso àInternet.[10]
OIRC foi criado porJarkko Oikarinen em agosto de 1988,[11][12] para substituir um programa chamadoMUT (MultiUser Talk) no sistemaBBS chamadoOuluBox na Universidade de Oulu naFinlândia, onde ele trabalhava no departamento de ciência de processamento de informação.[11] Jarkko pretendia estender osoftwareBBS que administrava, para permitir notícias no estiloUsenet, discussões em tempo real e recursosBBS semelhantes. A primeira parte que ele implementou foi a parte dochat, que ele fez com partes emprestadas escritas por seus amigos Jyrki Kuoppala e Jukka Pihl. A primeira redeIRC estava rodando em um único servidor chamado tolsun.oulu.fi.[13] Oikarinen encontrou inspiração em um sistema de bate-papo conhecido comoBitnet Relay, que operava naBITNET.[14]
Jyrki Kuoppala pressionou Oikarinen para pedir à Universidade de Oulu que liberasse o código doIRC para que ele também pudesse ser executado fora de Oulu e, depois que eles finalmente o liberaram, Jyrki Kuoppala imediatamente instalou outro servidor. Esta foi a primeira "redeIRC". Oikarinen conseguiu que alguns amigos daUniversidade de Helsinque e daUniversidade de Tampere começassem a rodar servidoresIRC quando seu número de usuários aumentou e outras universidades o seguiram. Nesse momento, Oikarinen percebeu que o restante dos recursos doBBS provavelmente não caberiam em seu programa.[13]
Oikarinen entrou em contato com pessoas daUniversidade de Denver e daUniversidade do Estado de Oregon. Eles tinham sua própria redeIRC funcionando e queriam se conectar à rede finlandesa. Eles haviam obtido o programa de um dos amigos de Oikarinen, Vijay Subramaniam (a primeira pessoa não finlandesa a usar oIRC). OIRC cresceu , foi usado em toda a rede nacional finlandesa (Funet) e então conectado àNORDUnet, a ramificação escandinava daInternet. Em novembro de 1988, oIRC se espalhou pelaInternet e, em meados de 1989, haviam cerca de 40 servidores em todo o mundo.[13]
Em agosto de 1990, o primeiro grande desacordo ocorreu no mundoIRC. A "A-net" (rede anarquia) incluía um servidor chamado eris.berkeley.edu. Estava tudo aberto, não exigia senhas e não tinha limite para o número de conexões. Como Greg "wumpus" Lindahl explica: "ela tinha uma linha de servidor curinga, então as pessoas estavam conectando servidores e colidindo com todo mundo". A "Rede Livre Eris" (EFnet) fez a máquina eris ser a primeira doIRCa ser alinhada como Q (Q para quarentena). Nas palavras de wumpus novamente: "Eris se recusou a remover essa linha, então formei aEFnet. Não foi muito difícil, consegui todos oshubs para entrar e quase todo mundo foi levado junto." AA-net foi formada com os servidores eris, enquanto aEFnet foi formada com os servidores não-eris. A história mostra que a maioria dos servidores e usuários usam aEFnet. Assim que aA-net se desfez, o nomeEFnet perdeu o sentido e mais uma vez existia uma única redeIRC.[13]
Outra tentativa de bifurcação, a primeira que realmente fez uma grande e duradoura diferença, foi iniciada por "Wildthang" nosEstados Unidos da América em outubro de 1992 (saiu daEFnetircd versão 2.8.10). Era para ser apenas uma rede de teste para desenvolverbots, mas rapidamente cresceu para uma rede "para amigos e seus amigos". Na Europa e no Canadá uma nova rede separada estava sendo trabalhada e em dezembro os servidores franceses se conectaram aos canadenses. No final do mês, as redes francesa e canadense foram conectadas à dos Estados Unidos da América, formando a que mais tarde veio a ser chamada de "aUndernet".[13]
Os "undernetters" queriam levar oircd mais longe, na tentativa de torná-lo menos consumidor de largura de banda e tentar resolver o caos de canais (netsplits etakeovers) que aEFnet começou a sofrer. Para o último propósito, aUndernet implementoutimestamps, novo roteamento e ofereceu oCService (um programa que permitia aos usuários registrar canais e então tentava protegê-los de criadores de problemas). A primeira lista de servidores apresentada, de 15 de fevereiro de 1993, incluia os servidores dos Estados Unidos da América, do Canadá, da França, da Croácia e do Japão. Em 15 de agosto, o novo registro de contagem de usuários foi estabelecido para 57 usuários.[13]
Em maio de 1993, aRFC 1459[5] foi publicada e detalhou um protocolo simples para operações de clientes, servidores, canais, conversas um para um e um para muitos.[13] É notável que um número significativo de extensões como oCTCP, as cores, os formatos e a codificação de caracteres[18] não estavam incluídas nas especificações do protocolo e isso levou várias implementações de servidores e clientes à divergências. Na verdade, a implementação dosoftware variava significativamente de uma rede para outra e cada uma delas implementava suas próprias políticas e seus próprios padrões em suas próprias bases de código.
Durante o verão de 1994 aUndernet foi bifurcada e a nova rede, formada para melhor serviço de usuário e mais proteções de usuários e canais, foi chamada deDALnet. Uma das alterações mais significativas nessa nova rede, foi o uso de apelidos mais longos (o limite original doircd sendo 9 letras). As modificações noircd foram feitas por Alexei "Lefler" Kosut e aDALnet foi, portanto, baseada no servidorircd daUndernet (embora os pioneiros daDALnet fossem pessoas que deixaram aEFnet). De acordo com James Ng, os pioneiros daDALnet foram "ops do canal #startrek que estavam cansados de constantes divisões (splits), colisões, atrasos (lags), aquisições (takeovers) e etc".[13]
ADALnet prontamente ofereceu:
WallOps globais - mensagens deIRCops que podem ser vistas por usuários que são+w,
apelidos mais longos,
apelidos "alinhados com Q" - apelidos que não podem ser usados (comoChanServ,IRCop eNickServ, por exemplo),
"linhas K" globais - para banir uma pessoa ou um domínio inteiro de um servidor ou de toda a rede e
comunicações somente deIRCops:
GlobOps,
modo +H mostrando que umIRCop é um "helpop" e etc.
Muitas das novas funções daDALnet foram escritas por Brian "Morpher" Smith, no início de 1995, e permitem que os usuários possuam apelidos, controlem canais, enviem memorandos e mais.[13]
Em julho de 1996, após meses deguerras inflamadas e discussões em listas dee-mails, houve outra divisão devido ao desacordo sobre como deveria evoluir o desenvolvimento doircd. Mais notavelmente, o lado "europeu" (a maioria desses servidores estavam na Europa) que mais tarde se autodenominouIRCnet argumentou sobre atrasos denick e canal, enquanto o ladoEFnet argumentou sobre ostimestamps.[13] Também haviam desacordos sobre as políticas: o lado europeu havia começado a estabelecer um conjunto de regras que direcionavam o que osIRCops podiam e não podiam fazer e o lado americano se opôs à tal ponto de vista.[19]
A maioria (não todos) dos servidoresIRCnet estavam na Europa e a maioria dos servidoresEFnet estavam nos Estados Unidos da América. Este evento também é conhecido como "a grande divisão" em muitas sociedadesIRC. AEFnet, desde então (em agosto de 1998), cresceu e ultrapassou o número de usuários que tinha na época. No outono (do norte) de 2000, aEFnet tinha cerca de 50.000 e aIRCnet tinha cerca de 70.000.[13]
OIRC mudou muito ao longo de sua vida naInternet. O novosoftware de servidor adicionou uma infinidade de novos recursos.
Serviços:bots operados em rede para facilitar o registro de apelidos e canais, envio de mensagens para usuáriosoffline e funções de operador de rede.
Modos extras: Enquanto o sistemaIRC original usava um conjunto de modos de usuário e canal padrão, novos servidores adicionam muitos novos modos para recursos como a remoção de códigos de cores do texto,[20] ou obscurecimento da máscara dehost de um usuário ("camuflagem") para proteção contraataques de negação de serviço.[21]
Detecção deproxy: a maioria dos servidores modernos oferece suporte à detecção de usuários que tentam se conectar por meio de umservidorproxy inseguro (mal configurado ou explorado), que pode ter a conexão negada. Estesoftware de detecção deproxy é usado por várias redes, embora a lista deproxies em tempo real esteja extinta desde o início de 2006.[22]
Comandos adicionais: novos comandos podem ser coisas como comandos abreviados para emitir comandos para serviços. Para comandos de operador de rede manipular a máscara dehost de um usuário.
Encriptação: para o trecho cliente-servidor da conexão, oTLS pode ser usado (as mensagens deixam de ser seguras quando são retransmitidas para outros usuários em conexões padrão, mas dificulta aespionagem ou a "escuta" de sessõesIRC de um indivíduo). Para a comunicação cliente a cliente, ocliente a cliente direto seguro (SDCC) pode ser usado.
Protocolo de conexão: é possível conectar-se aoIRC viaIPv4, a versão antiga doprotocolo deInternet, ou viaIPv6, o padrão atual do protocolo.
Desde 2016, um novo esforço de padronização está em andamento em um grupo de trabalho chamadoIRCv3 (que se concentra em recursos mais avançados de cliente, como notificações instantâneas, melhor suporte de histórico e segurança aprimorada).[23] Em 2019, nenhuma grande redeIRC havia adotado totalmente o padrão proposto.[24]
Após sua era de ouro durante a década de 1990 e início de 2000 (240.000 usuários naQuakeNet em 2004), oIRC teve um declínio significativo. Perdeu cerca de 60% dos usuários entre 2003 e 2012, os usuários mudaram para plataformas demídia social mais recentes (como oFacebook ou oTwitter) e também abriram plataformas como oXMPP (desenvolvido em 1999). Certas redes, como aFreenode, não seguiram a tendência geral e mais do que quadruplicaram de tamanho durante o mesmo período. No entanto, aFreenode (que em 2016 tinha cerca de 90.000 usuários) desde então diminuiu para cerca de 65.000 usuários.[25]
As maiores redes deIRC têm sido tradicionalmente agrupadas como as "quatro grandes (big four)",[26][27][28][29] uma designação para redes que encabeçam as estatísticas. As quatro grandes redes mudam periodicamente, mas devido à natureza comunitária doIRC, há um grande número de outras redes para os usuários escolherem.
Historicamente, as "quatro grandes redes" eram:[26][27][28]
Uma captura de tela doHexChat, um cliente IRC para ambientesGTK.Xaric, um cliente IRC baseado em texto, em uso noMac OS X. São mostrados dois canais de IRC e uma conversa privada com o autor do software.
O IRC é umprotocolo aberto que usaTCP[31] e, opcionalmente,TLS. Umservidor IRC pode se conectar a outros servidores IRC para expandir a rede IRC.[32] Os usuários acessam redes IRC conectando um cliente a um servidor.[33] Existem muitas implementações de cliente (comomIRC,HexChat eirssi) e implementações de servidor (por exemplo, oIRCd original). A maioria dos servidores IRC não exige que os usuários registrem uma conta, mas umapelido é necessário antes de se conectar.[34]
O IRC era originalmente umprotocolo de texto simples[31] (embora posteriormente estendido) que, a pedido, foi atribuído a portaTCP 194 pelaIANA.[35] No entanto, opadrão de fato sempre foi executar o IRC em TCP 6667[36] e números de porta próximos (por exemplo, portas TCP 6660-6669 e 7000)[37] para evitar ter que executar o softwareIRCd comprivilégios de root.
O protocolo especificava que os caracteres eram de 8 bits, mas não especificava a codificação de caracteres que o texto deveria usar.[18] Isso pode causar problemas quando os usuários que usam clientes e (ou) plataformas diferentes desejam conversar.
Todos os protocolos IRC (cliente para servidor) em uso hoje descendem do protocolo implementado na versão irc 2.4.0 do servidor IRC2 e documentado naRFC 1459. Desde a publicação daRFC 1459, os novos recursos na implementação do irc 2.10 levaram à publicação de vários documentos de protocolo revisados (RFC 2810,RFC 2811,RFC 2812 eRFC 2813). No entanto, essas alterações de protocolo não foram amplamente adotadas entre outras implementações.
Embora muitas especificações sobre o protocolo IRC tenham sido publicadas, não há uma especificação oficial, pois o protocolo permanece dinâmico. Praticamente nenhum cliente e muito poucos servidores confiam estritamente nas RFCs acima como referência.
A Microsoft fez uma extensão para o IRC em 1998 através do proprietárioIRCX.[38] Posteriormente, eles pararam de distribuir software que suportasse o IRCX e desenvolveram o proprietárioMSNP.
A estrutura padrão de uma rede de servidores IRC é umaárvore.[39] As mensagens são encaminhadas apenas para os ramos necessários da árvore, mas o estado da rede é enviado para cada servidor[40] e geralmente há um alto grau de confiança implícita entre os servidores. Essa arquitetura tem, no entanto, vários problemas. Um servidor mal-intencionado ou com comportamento inadequado pode causar grandes danos à rede[41] e quaisquer mudanças na estrutura, sejam intencionais ou resultado de condições na rede subjacente, requerem uma divisão de rede e junção de rede. Isso resulta em muito tráfego de rede, falsas mensagens (de entrada saída) para os usuários[42] e perda temporária de comunicação com os usuários nos servidores de divisão. Adicionar um servidor a uma grande rede significa uma grande carga de largura de banda em segundo plano na rede e uma grande carga de memória no servidor. Uma vez estabelecida, no entanto, cada mensagem para vários destinatários é entregue de maneira semelhante amulticast, o que significa que cada mensagem viaja por um link de rede exatamente uma vez.[43] Isso é um ponto forte em comparação aos protocolos 'não multicast', como oSimple Mail Transfer Protocol (SMTP) ou oExtensible Messaging and Presence Protocol (XMPP).
Um daemon IRC também pode ser usado em uma rede local (LAN). O IRC pode, portanto, ser usado para facilitar a comunicação entre as pessoas dentro da rede local (comunicação interna).[44][45]
O IRC tem uma estrutura baseada em linha. Os clientes enviam mensagens de linha única para o servidor[46] recebem respostas para essas mensagens[47] e cópias de algumas mensagens enviadas por outros clientes. Na maioria dos clientes, os usuários podem inserir comandos prefixando-os com '/'. Dependendo do comando, eles podem ser manipulados inteiramente pelo cliente ou, geralmente para comandos que o cliente não reconhece, passados diretamente para o servidor (possivelmente com alguma modificação).
Devido à natureza do protocolo, os sistemas automatizados nem sempre emparelham corretamente um comando enviado com sua resposta com total confiabilidade e estão sujeitos a adivinhação.[48]
O meio básico de comunicação com um grupo de usuários em uma sessão de IRC estabelecida é através de umcanal.[49] Canais em uma rede podem ser exibidos usando o comandoLIST,[50] que lista todos os canais atualmente disponíveis que não têm os modos +s ou +p definidos nessa rede específica.
Os usuários podemingressar em um canal usando o comandoJOIN,[51] disponível na maioria dos clientes como/join #nome do canal. As mensagens enviadas aos canais associados são, então, retransmitidas à todos os outros usuários.[49]
Os canais que estão disponíveis em uma redeIRC inteira são prefixados com um '#', enquanto aqueles locais para um servidor usam '&'.[52] Outros tipos de canais menos comuns incluem canais '+' (canaismodeless, sem operadores)[53] e canais '!' (uma forma de canaltimestamped em redes normalmente semtimestamped.[54]
Usuários e canais podem ter "modos" que são representados por letras simples, que diferenciam maiúsculas de minúsculas[55] e são configurados usando o comandoMODE.[56] Modos de usuário e modos de canal são separados e podem usar a mesma letra para significar coisas diferentes (por exemplo, o modo de usuário "i" é o modo invisível, enquanto o modo de canal "i" é o que define que apenas convidados podem ingressar no canal.[57]) Os modos são, geralmente, configurados ou não configurados usando o comando de modo que pega um alvo (usuário ou canal), um conjunto de modos para configurar (+) ou desconfigurar (-) e quaisquer parâmetros que os modos precisem.
Alguns modos de canal usam parâmetros e outros modos de canal se aplicam a um usuário em um canal ou adicionam ou removem uma máscara (por exemplo, uma máscara de proibição) de uma lista associada ao canal em vez de aplicar ao canal como um todo.[58] Os modos que se aplicam à usuários em um canal têm um símbolo associado que é usado para representar o modo nas respostas de nomes[59] (enviada aos clientes na primeira entrada em um canal[51] e no uso dos comandos de nomes) e, em muitos clientes, é usado também para representá-los na lista de usuários exibida pelo cliente em um canal ou para exibir um indicador próprio para os modos de um usuário.
A fim de analisar corretamente as mensagens do modo de entrada e rastrear o estado do canal, o cliente deve saber qual modo é de qual tipo e, para os modos que se aplicam a um usuário em um canal, qual símbolo vai com qual letra. Nas primeiras implementações doIRC, isso tinha que ser codificado no cliente. Mas agora, existe uma extensão padrão de fato para o protocolo chamadoISUPPORT que envia essas informações ao cliente no momento da conexão usando o 005 numérico.[60][61]
Há uma pequena falha de design noIRC em relação aos modos que se aplicam aos usuários nos canais: a mensagem de nomes usada para estabelecer o estado inicial do canal pode enviar apenas um modo por usuário no canal[59] mas vários desses modos podem ser definidos em um único usuário. Por exemplo, se um usuário mantém o status de operador (+o) e o status de voz (+v) em um canal, um novo cliente não será capaz de ver o modo com menos prioridade (ou seja, o de voz). Soluções alternativas para isso são possíveis no lado do cliente e do servidor mas nenhuma é amplamente implementada.
Umoperador de canal é umcliente em umcanal IRC que gerencia o canal.Operadores de canal de IRC podem ser facilmente vistos por um símbolo ou ícone próximo ao seu nome (varia de acordo com a implementação do cliente, normalmente um prefixo de símbolo "@", um círculo verde ou uma letra latina "+o" ou "o").Na maioria das redes, um operador pode:
Chutar(expulsar) um usuário.
Banir um usuário.
Conceder a outro usuário o status de operador ou voz do canal IRC.
Alterar o tópico do canal IRC enquanto o modo de canal +t estiver definido.
Também há usuários que mantêm direitos elevados em seu servidor local ou em toda a rede, são chamados de operadoresIRC[67] e, às vezes, abreviados paraIRCops ouOpers (não devem ser confundidos com operadores de canal). Como a implementação doIRCd varia, também variam os privilégios do operador deIRC noIRCd fornecido. ARFC 1459[67] afirma que os operadores deIRC são "um mal necessário" para manter um estado limpo da rede e, como tal, precisam ser capazes de desconectar e reconectar servidores. Além disso, para evitar que usuários mal-intencionados ou mesmo programas automatizados prejudiciais entrem noIRC, os operadores deIRC geralmente têm permissão para desconectar clientes e proibir completamente endereçosIP ou sub-redes completas. Redes que transportam serviços geralmente permitem que seus operadores deIRC lidem com questões básicas de "propriedade" também. Outros direitos privilegiados podem incluir a anulação de proibições (ser capaz de entrar em canais que não teriam permissão para entrar se não fossem operadores), se promover a operador (sem ser operador do canal),auto-op e etc.
Uma máscara dehost é um identificador único de umclienteIRC conectado a umservidorIRC.[68][69]Servidores,serviços e outros clientes (incluindobots)IRC podem usá-la para identificar uma sessão deIRC específica.
O formato de uma máscara dehost éapelido!usuário@host. A máscara dehost é semelhante, mas não deve ser confundida com, umendereço dee-mail.
A parte do apelido é o apelido escolhido pelo usuário e pode ser alterado durante a conexão.A parte do usuário é o nome de usuário relatado peloprotocoloident no cliente.[70] Se oident não estiver disponível no cliente, o nome de usuário especificado quando o cliente conectou-se é usado após ser prefixado com umtil.[71]
A parte dohost é ohostname do qual o cliente está se conectando. Se oendereçoIP do cliente não puder ser resolvido para umhostname válido pelo servidor, ele (o endereço deIP) será usado em vez do nome dohost.
Devido às implicações deprivacidade de expor o endereçoIP ou o nome dehost de um cliente, algunsdaemons IRC também fornecem recursos de privacidade como oInspIRCD ou o modo "+ x" doUnrealIRCd. Istocriptografa um endereço deIP do cliente ou mascara parte do nome dohost de um cliente (tornando-o ilegível para usuários que não sejamIRCops). Os usuários também podem ter a opção de solicitar um "host virtual" (ou "vhost"), exibido na máscara dehost para permitir maior anonimato. Algumas redesIRC, como aFreenode, os usam como "disfarces" para indicar que um usuário é afiliado a um grupo ou projeto.[72]
Existem três esquemasURI reconhecidos para oIRC:irc,ircs, eirc6.[73] Quando suportados, eles permitemligações de várias formas, incluindo:irc://<host>[:<porta>]/[<canal>[?<senha do canal>]]ircs://<host>[:<porta>]/[<canal>[?<senha do canal>]]irc6://<host>[:<porta>]/[<canal>[?<senha do canal>]]Os itens entre colchetes são opcionais para serem usados (se necessário) para se conectar aohost especificado (ou rede, se conhecido do clienteIRC) e ingressar no canal especificado.[74] Isso pode ser usado no próprio cliente ou em outro aplicativo (como um navegador daweb). OURI padrão éirc. Oirc6 especifica uma conexão a ser feita usandoIPv6 e oircs especifica uma conexão segura.
De acordo com a especificação, o usualsímbolohash (#) prefixado em nomes de canais que começam com um caracterealfanumérico permite que eles sejam omitidos. Algumas implementações (por exemplo,mIRC) farão isso "incondicionalmente", resultando em um (geralmente não intencional) extra (por exemplo, canal ##), se incluído naURL.
Algumas implementações permitem que vários canais sejam especificados (separados por vírgulas).[75]
Os problemas nodesign original doIRC eram a quantidade de dados de estado compartilhados[76][77] sendo uma limitação em sua escalabilidade,[78] a ausência de identificações de usuário exclusivas levando ao problema de colisão de apelidos,[79] falta de proteção dedivisões de redes por meio de roteamento cíclico,[80][81] a compensação em escalabilidade por causa das informações de presença do usuário em tempo real,[82] fraquezas do protocolo fornecendo uma plataforma para mau uso,[83] nenhuma passagem de mensagem transparente e otimizável[84] e ausência de criptografia.[85] Algumas dessas questões foram tratadas no "IRC moderno".
Como as conexõesIRC podem não ser criptografadas e normalmente se estendem por longos períodos, elas são um alvo atraente paraataquesDoS/DDoS ehackers. Por causa disso, uma política de segurança cuidadosa é necessária para garantir que uma redeIRC não seja suscetível a um ataque como uma guerra paraassumir o controle. As redesIRC também podem listar em "linha K" ou "linha G" usuários ou servidores que tenham um efeito prejudicial.
Alguns servidoresIRC suportam conexõesSSL/TLS para fins de segurança. Isso ajuda a interromper o uso de programasanalisadores de pacotes para obter as senhas de usuários deIRC, mas tem pouco uso além desse escopo devido à natureza pública dos canais deIRC. As conexõesSSL requerem suporte ao cliente e ao servidor (que pode exigir que o usuário instale bináriosSSL e patches ou módulos específicos do clienteIRC em seus computadores). Algumas redes também usamSSL para conexões servidor a servidor e fornecem um sinalizador de canal especial (como+S) para permitir apenas usuários conectados porSSL no canal, enquanto proíbe a identificação do operador em texto não criptografado, para melhor utilizar as vantagens que oSSL oferece.[86][87]
OIRC serviu como um primeiro laboratório para muitos tipos de ataques nainternet, como o uso deinacessíveis falsas mensagensICMP para quebrar as conexõesIRC baseadas noTCP (nuking) para incomodar os usuários ou facilitarassumir o controle (takeover).
Uma das questões técnicas mais controversas em torno das implementações deIRC, que sobrevive até hoje, é o mérito dos protocolos"nick/channel delay vs. timestamp". Ambos os métodos existem para resolver o problema de ataques de negação de serviço, mas têm abordagens muito diferentes.O problema com o protocoloIRC original implementado era que, quando dois servidores se dividiam e se juntavam, os dois lados da rede simplesmente fundiam seus canais. Se um usuário entrarasse em um servidor "dividido", em um canal (que existia do outro lado da rede) vazio e obtivesse ostatus de operador, ele se tornaria um operador de canal do canal "combinado" após o término donetsplit. Se um usuário pegasse um apelido que existia do outro lado da rede, o servidor "mataria" os dois usuários ao reingressarem (ou seja, "colisão de apelidos").Isso era freqüentemente usado para "matar em massa" todos os usuários em um canal, criando canais"opless" (onde nenhum operador estava presente para lidar com o mau uso). Além de causar problemas dentro doIRC, isso encorajou as pessoas à conduzirem ataques de negação de serviço contra servidoresIRC para causarnetsplits (dos quais elas, então, se aproveitariam para mau uso).
As estratégias denick delay echannel delay visam prevenir mau uso (atrasando reconexões e renomeações). Depois que um usuário termina a sessão e oapelido fica disponível, ou um canal deixa de existir porque todos os seus usuários partiram (como freqüentemente acontece durante umadivisão de rede), o servidor não permite que usuário algum use aquele apelido ou entre naquele canal, até que um certo período de tempo (o "atraso") tenha passado. A ideia por trás disso é que, mesmo que ocorra uma divisão de rede, é inútil para os usuários "mal-intencionados" porque eles não podem pegar o apelido ou obterstatus de operador em um canal por meio da vulnerabilidade anteriormente mencionada (portanto, a colisão de um apelido ou a "fusão" de um canal não pode acontecer). Até certo ponto, isso é inconveniente para os usuários legítimos, que podem ser "forçados (ou induzidos)" à usar, brevemente, um nome (apelido) diferente após o retorno (anexar umsubtraço é prática comum nesses casos).
O protocolotimestamp é uma alternativa, aos atrasos de apelido/canal, que resolve colisões usando a prioridade detimestamp. Cada apelido e canal na rede são atribuídos a umtimestamp com a data e a hora em que foram criados. Quando ocorre umnetsplit, dois usuários de cada lado são livres para usar o mesmo apelido ou canal, mas quando os dois lados são unidos, apenas um pode "sobreviver". No caso de apelidos, o usuário mais novo, de acordo com seutimestamp, é "morto". Quando um canal colide, os membros (usuários no canal) são mesclados, mas os operadores de canal no lado "perdedor" da divisão perdem seustatus de operador de canal.
OTS (timestamp) é um protocolo muito mais complicado do que oND (nick delay)/CD (channel delay), tanto emdesign como em implementação. Apesar de ter passado por várias revisões, algumas implementações ainda têm problemas com "dessincronização" (onde dois servidores na mesma rede discordam sobre o estado atual da rede), permitindo muita clemência no que seria permitido pelo lado "perdedor". Sob os protocolosTS originais, por exemplo, não havia proteção contra usuários definindo banimentos ou outros modos no canal perdedor (que seriam então mesclados na fusão quando a divisão (netsplit) terminasse, mesmo que os usuários que configuraram esses modos perdessem seusstatus de operador de canal). Alguns servidoresIRC modernos baseados emTS também incorporaram alguma forma deND/CD, além da marcação de tempo, em uma tentativa de conter ainda mais o mau uso.
A maioria das redes hoje usa a abordagem de carimbo de data/hora. Os desacordos de"TS versus ND/CD" fizeram com que vários servidores se separassem daEFnet e formassem os mais novosIRCnets. Após a divisão, aEFnet mudou para um protocoloTS, enquanto aIRCnet optou peloND/CD.
Em versões recentes doircd IRCnet, bem comoircds usando o protocoloTS6 (incluindoCharybdis), oND foi estendido/substituído por um mecanismo chamadoSAVE. Este mecanismo atribui umidentificador exclusivo à cada cliente (ao se conectar a um servidorIRC). EsteID começa com um número, é proibido em apelidos (nicknames) (embora algunsircds, nomeadamenteIRCnet eInspIRCd, permitam que os clientes usem o próprioUID como apelido).
Se dois clientes com o mesmo apelido se juntam de lados diferentes de umnetsplit ("colisão de apelidos"), o primeiro servidor a ver esta colisão "força ambos" os clientes à mudarem seu apelido (nickname) para seuUID( evitando assim que ambos os clientes sejam desconectados). NaIRCnet, o apelido também ficará bloqueado por algum tempo (ND) para evitar que ambos os clientes voltem ao apelido original, colidindo novamente.
Osoftware cliente existe para váriossistemas operacionais ou pacotes desoftware, bem como jogos baseados naweb ou internos. Muitos clientes diferentes estão disponíveis para os vários sistemas operacionais, incluindoWindows,Unix eLinux,Mac OS X e sistemas operacionais móveis (tais comoiOS eAndroid). NoWindows,mIRC é um dos clientes mais populares.[88]
Alguns programas extensíveis através deplug-ins também servem como plataformas para clientesIRC. Por exemplo, um cliente chamadoERC, escrito inteiramente emEmacs Lisp, está incluído na versão 22.3 doEmacs. Portanto, qualquer plataforma que pode executar oEmacs pode executar oERC.
Váriosnavegadores têm clientesIRC integrados (como oOpera versões 12.18 e anteriores[89] e o complementoChatZilla paraMozillaFirefox (56 e anteriores) incluído como um componente integrado doSeaMonkey). Clientes baseados na Web, comoMibbit eKiwiIRC de código aberto, podem ser executados na maioria dos navegadores.
Um uso típico debots noIRC é o de fornecerserviços ou funcionalidades específicas dentro de um canal, como hospedar um jogo baseado emchat ou fornecer notificações de eventos externos. No entanto, algunsbots IRC são usados para lançar ataques maliciosos, como negação de serviço,spamming ou exploração.[97]
Um programa que é executado como umdaemon em umservidor e funciona como umproxy persistente é conhecido comoBNC ou bouncer. O objetivo é manter uma conexão com um servidorIRC, atuando como um retransmissor entre o servidor e o cliente, ou simplesmente atuar como umproxy. Caso o cliente perca a conectividade de rede, oBNC pode permanecer conectado e arquivar todo o tráfego para entrega posterior, permitindo ao usuário retomar sua sessão deIRC sem interromper sua conexão com o servidor.[98]
Além disso, como forma de obter um efeito semelhante ao do bouncer, um clienteIRC, normalmentebaseado em texto (como oIrssi por exemplo), pode ser executado em um servidor sempre ativo ao qual o usuário se conecta viaSSH. Isso também permite que dispositivos que têm apenas a funcionalidade ssh, mas nenhum cliente deIRC real instalado, se conectem aoIRC e permite o compartilhamento de sessões deIRC.[99]
Para evitar que o clienteIRC feche quando a conexão ssh for fechada, o cliente pode ser executado dentro de umterminal multiplexador, comoGNU Screen outmux, mantendo-se assim constantemente ligado à(s) rede(s)IRC, podendo registar as conversações nos canais de interesse do utilizador e manter a presença nos canais na rede. Modelado a partir dessa configuração, em 2004 um clienteIRC seguindo omodelo cliente-servidor, chamadoSmuxi, foi lançado.[100][101]
Existem vários motores de busca disponíveis para ajudar o usuário a encontrar o que procura noIRC.[102][103] Geralmente, o mecanismo de pesquisa consiste em duas partes, um"back-end" (ou"spider/crawler") e um "mecanismo de pesquisa""front-end".
Oback-end (spider /webcrawler) é o cavalo de batalha do mecanismo de pesquisa. É responsável por rastrear servidoresIRC para indexar as informações enviadas por eles. As informações indexadas, geralmente, consistem apenas no texto do canal (texto que é exibido publicamente em canais públicos).
O "mecanismo de busca"front-end é a interface do usuário para o banco de dados. Ele fornece aos usuários uma maneira de pesquisar o banco de dados de informações indexadas para recuperar os dados que estão procurando. Esses mecanismos de pesquisafront-end também podem ser codificados em várias linguagens de programação.
A maioria dos mecanismos de pesquisa tem seu própriospider, que é o único aplicativo responsável por rastrear oIRC e indexar os próprios dados; entretanto, outros são indexadores "baseados no usuário". Os últimos contam com os usuários para instalarem seu "complemento" em seu clienteIRC; o add-on é o que envia as informações de canal de quaisquer canais em que o usuário esteja ao banco de dados.
Muitos usuários implementaram seus próprios motores de buscaad hoc usando os recursos de registro embutidos em muitos clientesIRC. Esses mecanismos de pesquisa são geralmente implementados comobots e dedicados a um determinado canal ou grupo de canais associados.
OIRC ainda carece de uma única convenção padrão globalmente aceita para transmitir caracteres fora do repertórioASCII de 7bits.Os servidoresIRC normalmente transferem mensagens de um cliente para outro cliente como sequências debytes, sem nenhuma interpretação ou recodificação decaracteres.O protocoloIRC (ao contrário, por exemplo, doMIME ouHTTP) carece de mecanismos para anunciar e negociar opções de codificação de caracteres. Isso colocou a responsabilidade de escolher ocodec de caractere apropriado no cliente. Na prática, os canais deIRC têm usado amplamente as mesmas codificações de caracteres que também foram usadas pelos sistemas operacionais (em particular os derivadosUnix) nas respectivas comunidades linguísticas:
Era de 7 bits: Nos primeiros dias doIRC, especialmente entre os usuários deescandinavo elíngua finlandesa, as variantes nacionais deISO 646 eram dominantes comocodificação de caracteres. Estes codificam caracteres (nãoASCII) como Ä, Ö, Å, ä, ö, e å nas posições de código 0x5B, 0x5C, 0x5D, 0x7B, 0x7C e 0x7D (ASCII:[,\,],{,| e}). É por isso que esses códigos são sempre permitidos em apelidos. De acordo com aRFC 1459, "{", "|" e "}" em apelidos devem ser tratados, respectivamente, como equivalente (em minúsculas) de "[", "\" e "]".[18] No final da década de 1990, o uso de codificações de 7bits desapareceu em favor doISO 8859-1 e tais mapeamentos de equivalência foram retirados de algunsdaemons IRC.
Era de 8 bits: Desde o início dos anos 1990, codificações de 8bits comoISO 8859-1 tornaram-se comumente usadas para idiomas europeus. Os usuários russos podiam escolherKOI8-R,ISO 8859-5 eWindows-1251, e desde cerca de 2000, as redesIRC russas modernas convertem entre essas diferentes codificações comumente usadas doscript cirílico.
Eramultibyte: Por muito tempo, os canaisIRC do leste asiático comscripts logográficos na China, Japão e Coreia têm usado codificaçõesmultibyte, comoEUC ouISO-2022-JP. Com a migração comum deISO 8859 paraUTF-8 em plataformasLinux eUnix desde cerca de 2002, oUTF-8 tornou-se um substituto cada vez mais popular para muitas das codificações de 8bits usadas anteriormente em canais europeus. Alguns clientes deIRC agora são capazes de ler mensagens emISO 8859-1 ouUTF-8 no mesmo canal, detectando heuristicamente qual codificação é usada. A mudança paraUTF-8 começou em particular noIRC de língua finlandesa (Merkistö(em finlandês)).
Hoje, a codificaçãoUTF-8 deUnicode/ISO/IEC 10646 seria a candidata mais provável para uma única codificação de caracteres padrão futura para todas as comunicaçõesIRC, se tal padrão já relaxou a restrição de tamanho de mensagem de 510bytes. OUTF-8 é compatível com oASCII e cobre o superconjunto de todos os outrosconjuntos de caracteres codificados padrões comumente usados.
Muito parecido com o convencional compartilhamento de arquivosP2P, os usuários podem criar servidores de arquivos que lhes permitem compartilhar arquivos uns com os outros usandobots ouscripts personalizados para seucliente. Freqüentemente, os usuários se agrupam para distribuirwarez por meio de uma rede debots IRC.[104]
Tecnicamente, oIRC não fornece mecanismos detransferência de arquivo. O compartilhamento de arquivos é implementado pelos "clientes"IRC, normalmente usando o protocoloDCC, no qual as transferências de arquivos são negociadas por meio da troca de mensagens privadas entre clientes. A grande maioria dos clientes deIRC oferece suporte para transferências de arquivosDCC, daí a visão de que o compartilhamento de arquivos é um recurso integral doIRC.[105] O uso comum desse protocolo, entretanto, às vezes também causaspam deDCC. Os comandosDCC também têm sido usados para explorar clientes vulneráveis para executar uma ação, como desconectar do servidor ou sair do cliente.
↑«CanalIRCSAGE» (em inglês). Sage - Grupo de interesse especialUSENIX para administradores de sistemas. Consultado em 21 de julho de 2021. Arquivado dooriginal em 7 de fevereiro de 2012
↑abcdefghijkStenberg, Daniel (29 de março de 2011).«História doIRC (Internet relay chat)» (em inglês). Consultado em 21 de julho de 2021.Eu não experimentei tudo isso. Encontrei informações em vários lugares e recebi informações de várias pessoas para escrever isto. As pessoas que me ajudaram com isso incluem: Greg "wumpus" Lindahl, Vesa "vesa" Ruokonen, James Ng, Tuomas Heino, Richard (águia na undernet), Ari Lemmke
↑Engen, Vegard (maio de 2000).«A grande divisão» (em inglês). irc.org. Consultado em 22 de julho de 2021
↑«Modos de canal».Wiki de documentação UnrealIRCd (em inglês). Consultado em 23 de julho de 2021
↑«Camuflagem».Wiki de documentação UnrealIRCd (em inglês). Consultado em 23 de julho de 2021
↑«Monitor aberto deproxyBlitzed» (em inglês).O monitor aberto deproxy fornecido pela redeIRCBlitzed foi desligado... O banco de dados era tão grande que é quase impossível para a equipe fazerbackup ou encontrar um novo local para continuar o serviço. Somado a isso, a maioria dos membros da equipe não tem mais tempo para manter o serviço funcionando.
↑«IRCv3» (em inglês). Grupo de trabalhoIRCv3. 2016. Consultado em 24 de julho de 2021.O grupo de trabalhoIRCv3 é uma coleção de autores desoftware cliente e servidor deIRC trabalhando para aprimorar, manter e padronizar o protocoloIRC usando extensões compatíveis com versões anteriores.
↑«Redes -IRCv3» (em inglês). 2019. Consultado em 24 de julho de 2021
↑abCharalabidis, Alex (15 de dezembro de 1999). «IRCing noMacintosh:Ircle».O livro do IRC: o guia definitivo para o Internet relay chat 1ª ed.São Francisco,Califórnia: no starch press. p. 61.ISBN978-1-886411-29-6.Em grandes redes como as quatro grandes (EFnet,IRCnet,Undernet eDALnet) tentar listar os milhares de canais com oIrcle sempre faz com que você se desconecte devido à enxurrada de informações. Enquanto que com outros clientes é possível gerenciar o feito se estiver em uma conexãoethernet direta.
↑abRittner, Don (3 de março de 1999).O livro do iMac (em inglês) 1ª ed.Scottsdale,Arizona: Grupo Coriolis. p. 215.ISBN978-1-57610-429-3.Existem várias redes grandes:EFnet,UnderNET,DALnet eIRCnet constituem as quatro grandes.
↑Turban, Efraim; Leidner, Dorothy; McLean, Ephraim; Wetherbe, James (7 de fevereiro de 2005). «Comunicação».Tecnologia da informação para gestão: transformando as organizações na economia digital (em inglês) 5ª ed.Hoboken (Nova Jérsei),Nova Jérsei:John Wiley & Sons. pp. 106 e 107.ISBN978-0-471-70522-2.As maiores redes têm sido tradicionalmente agrupadas como as "quatro grandes":EFNet,IrcNet,QuakeNet eUnderNet.
↑«RedesIRC -Top 100».irc.netsplit.de. netsplit.de. Consultado em 25 de julho de 2021
↑Lucas, Mark; Singh, Abhishek; Cantrell, Chris (5 de outubro de 2006). «Defining a firewall - Definindo um firewall». In: Henmi, Anne.Firewall policies and VPN configurations [Políticas de firewall e configurações de VPN] (em inglês).Rockland,Massachusetts: Syngress Publishing. p. 93.ISBN978-1-59749-088-7
↑Thiedeke, Udo (23 de setembro de 2003).«Nicola Döring, Alexander Schestag».Virtuelle gruppen: charakteristika und problemdimensionen [Grupos virtuais: características e dimensões do problema] (em alemão) 2 ed. [S.l.]: Springer VS. pp. 314, 337.ISBN978-3-531-33372-4. Consultado em 20 de abril de 2021
↑Rogers, Russ (13 de janeiro de 2004).«The mind of terror». In: Devost, Matthew G.Hackeando uma rede terrorista: a ameaça silenciosa de canais secretos 1 ed.Rockland,Massachusetts: Syngress Publishing. p. 10.ISBN978-1-928994-98-5. Consultado em 20 de abril de 2021
↑Petersen, Julie K., ed. (29 de maio de 2002).«Internet relay chat».The telecommunications illustrated dictionary [O dicionário ilustrado de telecomunicações] 2 ed. [S.l.]:CRC Press. p. 500.ISBN978-0-8493-1173-4. Consultado em 20 de abril de 2021