imported>Juan90264 m (Página marcada que existem referências sem formatação) |
imported>Juan90264 m (ajustando datas, traduzindo nome/parâmetro nas citações, outros ajustes usando script, +correções semiautomáticas (v0.57/3.1.56/)) |
||
Linha 1: | Linha 1: | ||
{{Alvo-redireccionamento|IRC}} | |||
{{Formatar referências|data=novembro de 2020}} | {{Formatar referências|data=novembro de 2020}} | ||
{{Desatualizado|Esta página}} | {{Desatualizado|Esta página}} | ||
{{mais | {{mais fontes|data=dezembro de 2013}} | ||
{{ProtocolosIP}} | {{ProtocolosIP}} | ||
[[Imagem:Screenshot-XChat- Moniker42 @ FreeNode - -ubuntuforums (+tn)-1.png|thumb|250px|Uma captura de ecrã do XChat, um cliente multiplataforma do IRC | [[Imagem:Screenshot-XChat- Moniker42 @ FreeNode - -ubuntuforums (+tn)-1.png|thumb|250px|Uma captura de ecrã do XChat, um cliente multiplataforma do IRC]] | ||
'''Internet Relay Chat''' ('''IRC''') é um protocolo de comunicação utilizado na [[Internet]]. Ele é utilizado basicamente como bate-papo ([[chat]]) e troca de arquivos, permitindo a conversa em grupo ou privada. Foi documentado formalmente pela primeira vez em 1993, com a RFC 1459. | '''Internet Relay Chat''' ('''IRC''') é um protocolo de comunicação utilizado na [[Internet]]. Ele é utilizado basicamente como bate-papo ([[chat]]) e troca de arquivos, permitindo a conversa em grupo ou privada. Foi documentado formalmente pela primeira vez em 1993, com a RFC 1459. | ||
Linha 34: | Linha 34: | ||
=== Decadência === | === Decadência === | ||
[[Imagem:Xaric screen shot.jpg|thumb|250px|Xaric, um console baseado no IRC. São mostrados dois canais de IRC e uma conversa privada com o autor do software | [[Imagem:Xaric screen shot.jpg|thumb|250px|Xaric, um console baseado no IRC. São mostrados dois canais de IRC e uma conversa privada com o autor do software]] | ||
A decadência do IRC começou por volta de [[2003]]<ref name="royal pingdom">{{citar web |url=http://royal.pingdom.com/2012/04/24/irc-is-dead-long-live-irc/ |titulo=IRC is dead, long live IRC |data=24 de Abril de 2012 |publicado=pingdom |lingua=en |acessodata=20 de Agosto de 2017}}</ref> quando os [[Mensageiro instantâneo|mensageiros instantâneos]] se tornavam ainda mais populares, permitindo bate-papo com amigos sem ser importunado por desconhecidos e uma série de recursos que o IRC não permitia. Primeiramente o [[ICQ]] chamou a atenção dos usuários, pela praticidade e simplicidade na comunicação direta entre estes. Posteriormente o [[MSN|MSN Messenger]] foi ganhando espaço pois permitia conversas em vídeo por [[webcam]]s e [[voz]], além de integração com e-mail do [[Hotmail]], jogos do portal MSN e salas de chat comunitárias que eram tão eficientes como o IRC em controle de usuários. Apesar de o bate-papo comunitário nos mensageiros não ter prosperado, eles permitiam conexões com sites de [[namoro]] aumentando a eficiência em conhecer gente nova como acontecia no IRC.<ref>{{citar web |url=http://www20.opovo.com.br/app/revistas/cultura/2017/01/30/notrcultura,3680146/no-dia-da-saudade-relembre-o-que-mais-faz-falta-da-internet-dos-anos.shtml |titulo=Relembre o que mais faz falta da internet dos anos 1990 e 2000 |data=30 de Janeiro de 2017 |autor=Sabryna Esmeraldo |publicado=O Povo |acessodata=20 de Agosto de 2017}}</ref> | A decadência do IRC começou por volta de [[2003]]<ref name="royal pingdom">{{citar web |url=http://royal.pingdom.com/2012/04/24/irc-is-dead-long-live-irc/ |titulo=IRC is dead, long live IRC |data=24 de Abril de 2012 |publicado=pingdom |lingua=en |acessodata=20 de Agosto de 2017}}</ref> quando os [[Mensageiro instantâneo|mensageiros instantâneos]] se tornavam ainda mais populares, permitindo bate-papo com amigos sem ser importunado por desconhecidos e uma série de recursos que o IRC não permitia. Primeiramente o [[ICQ]] chamou a atenção dos usuários, pela praticidade e simplicidade na comunicação direta entre estes. Posteriormente o [[MSN|MSN Messenger]] foi ganhando espaço pois permitia conversas em vídeo por [[webcam]]s e [[voz]], além de integração com e-mail do [[Hotmail]], jogos do portal MSN e salas de chat comunitárias que eram tão eficientes como o IRC em controle de usuários. Apesar de o bate-papo comunitário nos mensageiros não ter prosperado, eles permitiam conexões com sites de [[namoro]] aumentando a eficiência em conhecer gente nova como acontecia no IRC.<ref>{{citar web |url=http://www20.opovo.com.br/app/revistas/cultura/2017/01/30/notrcultura,3680146/no-dia-da-saudade-relembre-o-que-mais-faz-falta-da-internet-dos-anos.shtml |titulo=Relembre o que mais faz falta da internet dos anos 1990 e 2000 |data=30 de Janeiro de 2017 |autor=Sabryna Esmeraldo |publicado=O Povo |acessodata=20 de Agosto de 2017}}</ref> | ||
Linha 45: | Linha 45: | ||
== Informação técnica == | == Informação técnica == | ||
<!-- Commented out: [[Imagem:MIRC 6.31 Screenshot.png|direita|thumb|Uma captura de tela do [[mIRC]], um cliente IRC para versões do [[Microsoft Windows|Windows]].]] --> | |||
[[Imagem:Screenshot of HexChat in Windows 8.png|direita|thumb|Uma captura de tela do [[HexChat]], um cliente IRC para ambientes [[GTK]].]] | |||
[[ | |||
[[ | [[Imagem:Xaric screen shot.jpg|direita|thumb|Xaric, um cliente IRC baseado em texto, em uso no [[Mac OS X]]. São mostrados dois canais de IRC e uma conversa privada com o autor do software.]] | ||
O IRC é um [[Protocolo de rede|protocolo]] aberto que usa [[Transmission control protocol|TCP]] <ref name="rfc 1459 1 introduction" /> e, opcionalmente, [[Transport Layer Security|TLS]]. Um [[IRCd|servidor IRC]] pode se conectar a outros servidores IRC para expandir a rede IRC<ref>{{cite IETF | O IRC é um [[Protocolo de rede|protocolo]] aberto que usa [[Transmission control protocol|TCP]]<ref name="rfc 1459 1 introduction" /> e, opcionalmente, [[Transport Layer Security|TLS]]. Um [[IRCd|servidor IRC]] pode se conectar a outros servidores IRC para expandir a rede IRC.<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 59: | Linha 58: | ||
| page = 4 | | page = 4 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Os usuários acessam redes IRC conectando um cliente a um servidor.<ref>{{cite IETF | ||
| rfc = 2810 | | rfc = 2810 | ||
|title=Internet Relay Chat: Architecture | |title=Internet Relay Chat: Architecture | ||
Linha 66: | Linha 65: | ||
| page = 3 | | page = 3 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Existem muitas implementações de cliente (como [[mIRC]], [[HexChat]] e [[irssi]]) e implementações de servidor (por exemplo, o [[IRCd]] original). A maioria dos servidores IRC não exige que os usuários registrem uma conta, mas um [[Nickname#Computing|apelido]] é necessário antes de se conectar.<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 73: | Linha 72: | ||
| page = 5 | | page = 5 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> | ||
O IRC era originalmente um [[Protocolo baseado em texto|protocolo de texto simples]] <ref name="rfc 1459 1 introduction" /> (embora posteriormente estendido) que, a pedido, foi atribuído a porta [[Lista de portas dos protocolos TCP e UDP|TCP 194]] pela [[Internet Assigned Numbers Authority|IANA]]<ref>{{ | O IRC era originalmente um [[Protocolo baseado em texto|protocolo de texto simples]]<ref name="rfc 1459 1 introduction" /> (embora posteriormente estendido) que, a pedido, foi atribuído a porta [[Lista de portas dos protocolos TCP e UDP|TCP 194]] pela [[Internet Assigned Numbers Authority|IANA]].<ref>{{Citar web | ||
| url = http://www.iana.org/assignments/port-numbers | | url = http://www.iana.org/assignments/port-numbers | ||
| | |título= Port Numbers | ||
| | |acessodata=8 de Abril de 2011 | ||
| | |data=6 de Abril de 2011 | ||
| | |publicado= [[Internet Assigned Numbers Authority]] | ||
| | |local= [[Marina del Rey, California]] | ||
}}</ref> | }}</ref> No entanto, o ''[[padrão de fato]]'' sempre foi executar o IRC em TCP 6667<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 89: | Linha 88: | ||
| page = 29 | | page = 29 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> e números de porta próximos (por exemplo, portas TCP 6660-6669 e 7000)<ref>{{ | }}</ref> e números de porta próximos (por exemplo, portas TCP 6660-6669 e 7000)<ref>{{citar livro | ||
| | |último1 = Lucas | ||
| | |primeiro1 = Mark | ||
| | |último2 = Singh | ||
| | |primeiro2 = Abhishek | ||
| | |último3 = Cantrell | ||
| | |primeiro3 = Chris | ||
| editor- | |editor-sobrenome = Henmi | ||
| editor- | |editor-nome = Anne | ||
| | |título= Firewall Policies and VPN Configurations | ||
| | |data=5 de outubro de 2006 | ||
| | |publicado= [[Syngress Publishing]] | ||
| | |local= [[Rockland, Massachusetts]] | ||
| isbn = 978-1-59749-088-7 | | isbn = 978-1-59749-088-7 | ||
| | |página= 93 | ||
| | |capítulo= Defining a Firewall | ||
}}</ref> para evitar ter que executar o software [[IRCd]] com [[Superusuário|privilégios de root]]. | }}</ref> para evitar ter que executar o software [[IRCd]] com [[Superusuário|privilé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<ref name="rfc 1459 2.2 character codes">{{cite IETF | O protocolo especificava que os caracteres eram de 8 bits, mas não especificava a codificação de caracteres que o texto deveria usar.<ref name="rfc 1459 2.2 character codes">{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 114: | Linha 113: | ||
| page = 7 | | page = 7 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Isso pode causar problemas quando os usuários que usam clientes e (ou) plataformas diferentes desejam conversar. | ||
Todos os protocolos IRC (cliente pra servidor) em uso hoje descendem do protocolo implementado na versão irc 2.4.0 do servidor IRC2 e documentado na RFC 1459. Desde a publicação da RFC 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 e RFC 2813). No entanto, essas alterações de protocolo não foram amplamente adotadas entre outras implementações. | Todos os protocolos IRC (cliente pra servidor) em uso hoje descendem do protocolo implementado na versão irc 2.4.0 do servidor IRC2 e documentado na RFC 1459. Desde a publicação da RFC 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 e RFC 2813). No entanto, essas alterações de protocolo não foram amplamente adotadas entre outras implementações. | ||
Linha 120: | Linha 119: | ||
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. | 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ário [[IRCX]]<ref>{{cite IETF | A Microsoft fez uma extensão para o IRC em 1998 através do proprietário [[IRCX]].<ref>{{cite IETF | ||
| title = Extensions to the Internet Relay Chat Protocol (IRCX) | | title = Extensions to the Internet Relay Chat Protocol (IRCX) | ||
| draft = draft-pfenning-irc-extensions-04 | | draft = draft-pfenning-irc-extensions-04 | ||
Linha 128: | Linha 127: | ||
| publisher = [[Internet Engineering Task Force|IETF]] | | publisher = [[Internet Engineering Task Force|IETF]] | ||
| accessdate = 08 de abril de 2011 | | accessdate = 08 de abril de 2011 | ||
}}</ref> | }}</ref> Posteriormente, eles pararam de distribuir software que suportasse o IRCX e desenvolveram o proprietário [[Protocolo de notificação Microsoft|MSNP]]. | ||
A estrutura padrão de uma rede de servidores IRC é uma [[Rede em árvore|árvore]]<ref>{{cite IETF | A estrutura padrão de uma rede de servidores IRC é uma [[Rede em árvore|árvore]].<ref>{{cite IETF | ||
| rfc = 2810 | | rfc = 2810 | ||
|title=Internet Relay Chat: Architecture | |title=Internet Relay Chat: Architecture | ||
Linha 137: | Linha 136: | ||
| pages = 3 – 4 | | pages = 3 – 4 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> As mensagens são encaminhadas apenas para os ramos necessários da árvore, mas o estado da rede é enviado para cada servidor<ref>{{cite IETF | ||
| rfc = 2810 | | rfc = 2810 | ||
|title=Internet Relay Chat: Architecture | |title=Internet Relay Chat: Architecture | ||
Linha 158: | Linha 157: | ||
| pages = 7 – 8 | | pages = 7 – 8 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> 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 a [[multicast]], o que significa que cada mensagem viaja por um link de rede exatamente uma vez<ref>{{cite IETF | }}</ref> 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 a [[multicast]], o que significa que cada mensagem viaja por um link de rede exatamente uma vez.<ref>{{cite IETF | ||
| rfc = 2810 | | rfc = 2810 | ||
|title=Internet Relay Chat: Architecture | |title=Internet Relay Chat: Architecture | ||
Linha 165: | Linha 164: | ||
| pages = 5 – 6 | | pages = 5 – 6 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Isso é um ponto forte em comparação aos protocolos 'não multicast', como o [[Simple Mail Transfer Protocol]] (SMTP) ou o [[Extensible 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)<ref>{{ | 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).<ref>{{Citar web|url=http://computerquestionhelp.com/content/how-guide-setup-your-own-irc-server-using-personal-or-dedicated-system-or-server-top-freewar|título=IRC daemons for LAN|publicado=|acessodata=2 de outubro de 2014}}</ref><ref>{{Citar web|url=http://www.irc-wiki.org/IRC_server|título=Running an own IRC server|publicado=|acessodata=2 de outubro de 2014}}</ref> | ||
=== Comandos e respostas === | === Comandos e respostas === | ||
{{Artigo principal|Lista de comandos IRC}} | |||
O IRC tem uma estrutura baseada em linha. Os clientes enviam mensagens de linha única para o servidor,<ref>{{cite IETF | |||
O IRC tem uma estrutura baseada em linha. Os clientes enviam mensagens de linha única para o servidor<ref>{{cite IETF | |||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 180: | Linha 178: | ||
| page = 8 | | page = 8 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> recebem respostas para essas mensagens<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 189: | Linha 187: | ||
}}</ref> 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). | }}</ref> 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<ref>{{ | 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.<ref>{{Citar web | ||
| url = http://www.shanemcc.co.uk/irc/#listmode | | url = http://www.shanemcc.co.uk/irc/#listmode | ||
| | |título= IRC List Modes – List mode extension showing pair confusion for lists | ||
| | |acessodata=8 de abril de 2011 | ||
| | |data= 25 de novembro de 2009 | ||
}}</ref> | }}</ref> | ||
=== Canal === | === Canal === | ||
O meio básico de comunicação com um grupo de usuários em uma sessão de IRC estabelecida é através de um ''[[chat room|canal]]''.<ref name="rfc 1459 3.2.2 to a group (channel)">{{cite IETF | |||
O meio básico de comunicação com um grupo de usuários em uma sessão de IRC estabelecida é através de um ''[[chat room|canal]]''<ref name="rfc 1459 3.2.2 to a group (channel)">{{cite IETF | |||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 205: | Linha 202: | ||
| page = 11 | | page = 11 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Canais em uma rede podem ser exibidos usando o comando IRC ''LIST'',<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 212: | Linha 209: | ||
| page = 24 | | page = 24 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> 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 podem ''ingressar'' em um canal usando o comando ''JOIN''<ref name="rfc 1459 4.2.1 join message">{{cite IETF | Os usuários podem ''ingressar'' em um canal usando o comando ''JOIN'',<ref name="rfc 1459 4.2.1 join message">{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 221: | Linha 218: | ||
| page = 19 | | page = 19 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> na maioria dos clientes disponível como ''/join #nome do canal''. As mensagens enviadas aos canais associados são então retransmitidas a todos os outros usuários.<ref name="rfc 1459 3.2.2 to a group (channel)" /> | ||
Os canais que estão disponíveis em uma rede IRC inteira são prefixados com um '#', enquanto aqueles locais para um servidor usam '&'<ref>{{cite IETF | Os canais que estão disponíveis em uma rede IRC inteira são prefixados com um '#', enquanto aqueles locais para um servidor usam '&'.<ref>{{cite IETF | ||
| rfc = 2811 | | rfc = 2811 | ||
|title=Internet Relay Chat: Channel Management | |title=Internet Relay Chat: Channel Management | ||
Linha 230: | Linha 227: | ||
| pages = 3 – 4 | | pages = 3 – 4 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Outros tipos de canais menos comuns incluem canais '+' (canais 'modeless', sem operadores)<ref>{{cite IETF | ||
| rfc = 2811 | | rfc = 2811 | ||
|title=Internet Relay Chat: Channel Management | |title=Internet Relay Chat: Channel Management | ||
Linha 237: | Linha 234: | ||
| page = 4 | | page = 4 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> e canais '!' (uma forma de canal [[# Nick/channel delay|timestamped]] em redes normalmente sem timestamped<ref>{{cite IETF | }}</ref> e canais '!' (uma forma de canal [[# Nick/channel delay|timestamped]] em redes normalmente sem timestamped.<ref>{{cite IETF | ||
| rfc = 2811 | | rfc = 2811 | ||
|title=Internet Relay Chat: Channel Management | |title=Internet Relay Chat: Channel Management | ||
Linha 244: | Linha 241: | ||
| page = 5 | | page = 5 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> | ||
=== Modos === | === Modos === | ||
Usuários e canais podem ter ''modos'' que são representados por letras simples que diferenciam maiúsculas de minúsculas<ref>{{cite IETF | Usuários e canais podem ter ''modos'' que são representados por letras simples que diferenciam maiúsculas de minúsculas<ref>{{cite IETF | ||
| rfc = 2811 | | rfc = 2811 | ||
Linha 255: | Linha 251: | ||
| page = 7 | | page = 7 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> e são configurados usando o comando ''MODE''. <ref>{{cite IETF | }}</ref> e são configurados usando o comando ''MODE''.<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 262: | Linha 258: | ||
| page = 21 | | page = 21 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> 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 apenas convidados no canal<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 271: | Linha 267: | ||
}}</ref>). 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. | }}</ref>). 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<ref>{{cite IETF | 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.<ref>{{cite IETF | ||
| rfc = 2811 | | rfc = 2811 | ||
|title=Internet Relay Chat: Channel Management | |title=Internet Relay Chat: Channel Management | ||
Linha 278: | Linha 274: | ||
| pages = 10 – 11 | | pages = 10 – 11 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Os modos que se aplicam a usuários em um canal têm um símbolo associado que é usado para representar o modo nas respostas de nomes<ref name="rfc 1459 p.51 rpl_namreply">{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 286: | Linha 282: | ||
}}</ref> (enviada aos clientes na primeira entrada em um canal<ref name="rfc 1459 4.2.1 join message" /> 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. | }}</ref> (enviada aos clientes na primeira entrada em um canal<ref name="rfc 1459 4.2.1 join message" /> 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 do IRC, isso tinha que ser codificado no cliente. Mas agora, existe uma extensão padrão de fato para o protocolo chamado ISUPPORT que envia essas informações ao cliente no momento da conexão usando o 005 numérico<ref>{{ | 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 do IRC, isso tinha que ser codificado no cliente. Mas agora, existe uma extensão padrão de fato para o protocolo chamado ISUPPORT que envia essas informações ao cliente no momento da conexão usando o 005 numérico.<ref>{{Citar web | ||
| url = http://www.irc.org/tech_docs/005.html | | url = http://www.irc.org/tech_docs/005.html | ||
| | |título= The 005 numeric: ISUPPORT | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Roeckx | ||
| | |primeiro = Kurt | ||
| | |data= 14 de outubro de 2004 | ||
| | |publicado= irc.org | ||
}}</ref><ref>{{cite IETF | }}</ref><ref>{{cite IETF | ||
| title = IRC RPL_ISUPPORT Numeric Definition | | title = IRC RPL_ISUPPORT Numeric Definition | ||
Linha 302: | Linha 298: | ||
| publisher = [[Internet Engineering Task Force|IETF]] | | publisher = [[Internet Engineering Task Force|IETF]] | ||
| accessdate = 10 de abril de 2011 | | accessdate = 10 de abril de 2011 | ||
}}</ref> | }}</ref> | ||
Há uma pequena falha de design no IRC 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<ref name="rfc 1459 p.51 rpl_namreply" /> 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. | Há uma pequena falha de design no IRC 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<ref name="rfc 1459 p.51 rpl_namreply" /> 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. | ||
==== Modos do padrão (RFC 1459) ==== | ==== Modos do padrão (RFC 1459) ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ Modos de usuário | |+ Modos de usuário | ||
Linha 325: | Linha 320: | ||
| '''w''' | | '''w''' | ||
| | | | ||
| Recebe wallops<ref>{{cite IETF | | Recebe wallops.<ref>{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
|title=Internet Relay Chat Protocol | |title=Internet Relay Chat Protocol | ||
Linha 332: | Linha 327: | ||
| page = 41 | | page = 41 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> | ||
|- | |- | ||
| '''o''' | | '''o''' | ||
Linha 403: | Linha 398: | ||
|} | |} | ||
Muitos daemons e redes adicionaram modos extras ou modificaram o comportamento dos modos na lista acima<ref>{{ | Muitos daemons e redes adicionaram modos extras ou modificaram o comportamento dos modos na lista acima.<ref>{{Citar web | ||
| url = http://www.alien.net.au/irc/usermodes.html | | url = http://www.alien.net.au/irc/usermodes.html | ||
| | |título= IRC User Modes List | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Butcher | ||
| | |primeiro = Simon | ||
| | |data= 12 de janeiro de 2005 | ||
| | |publicado= alien.net.au | ||
}}</ref><ref>{{ | }}</ref><ref>{{Citar web | ||
| url = http://www.alien.net.au/irc/chanmodes.html | | url = http://www.alien.net.au/irc/chanmodes.html | ||
| | |título= IRC Channel Modes List | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Butcher | ||
| | |primeiro = Simon | ||
| | |data= 12 de janeiro de 2005 | ||
| | |publicado= alien.net.au | ||
}}</ref><ref>{{ | }}</ref><ref>{{Citar web | ||
| url = http://www.alien.net.au/irc/servermodes.html | | url = http://www.alien.net.au/irc/servermodes.html | ||
| | |título= IRC Server Modes List | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Butcher | ||
| | |primeiro = Simon | ||
| | |data= 12 de janeiro de 2005 | ||
| | |publicado= alien.net.au | ||
}}</ref><ref>{{ | }}</ref><ref>{{Citar web | ||
|url = http://webtoman.com/opera/panel/ircdmodes.html | |url = http://webtoman.com/opera/panel/ircdmodes.html | ||
| | |título= IRCd Modes | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Olsen | ||
| | |primeiro = Tommy | ||
| | |publicado= webtoman.com | ||
| | |arquivourl= https://web.archive.org/web/20111015190740/http://webtoman.com/opera/panel/ircdmodes.html | ||
| | |arquivodata= 15 de outubro de 2011 | ||
}}</ref> | }}</ref> | ||
=== Operadores de canal === | === Operadores de canal === | ||
Um ''operador de canal'' é um [[Cliente (computação)|cliente]] em um [[canal IRC]] que gerencia o canal. | Um ''operador de canal'' é um [[Cliente (computação)|cliente]] em um [[canal 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"). | 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"). | ||
Linha 450: | Linha 444: | ||
=== Operadores IRC === | === Operadores IRC === | ||
Também há usuários que mantêm direitos elevados em seu servidor local ou em toda a rede, são chamados de operadores de IRC<ref name="rfc 1459 1.2.1 operators">{{cite IETF | Também há usuários que mantêm direitos elevados em seu servidor local ou em toda a rede, são chamados de operadores de IRC<ref name="rfc 1459 1.2.1 operators">{{cite IETF | ||
| rfc = 1459 | | rfc = 1459 | ||
Linha 461: | Linha 454: | ||
=== Máscara de host === | === Máscara de host === | ||
Uma máscara de host é um identificador único de um [[Cliente (computação)|cliente]] IRC conectado a um [[servidor (computação)|servidor]] IRC.<ref name="thiedeke-2003">{{citar livro | |||
Uma máscara de host é um identificador único de um [[Cliente (computação)|cliente]] IRC conectado a um [[servidor (computação)|servidor]] IRC<ref name="thiedeke-2003">{{ | |último = Thiedeke | ||
| | |primeiro = Udo | ||
| | |título= Virtuelle Gruppen: Charakteristika und Problemdimensionen | ||
| | |capítulourl= https://books.google.com/?id=aQ74THYRyYsC&lpg=PA314&pg=PA315#v=onepage&q=hostmask | ||
| | |acessodata= 30 de março de 2010 | ||
| | |edição= 2 | ||
| | |data= 23 de setembro de 2003 | ||
| | |publicado= {{Interlanguage link multi|Springer VS|de}} | ||
| | |língua= German | ||
| | |||
| isbn = 978-3-531-33372-4 | | isbn = 978-3-531-33372-4 | ||
| | |páginas= 314, 337 | ||
| | |capítulo= Nicola Döring, Alexander Schestag | ||
}}</ref><ref name="rogers-2005">{{ | }}</ref><ref name="rogers-2005">{{citar livro | ||
| | |último = Rogers | ||
| | |primeiro = Russ | ||
| editor- | |editor-sobrenome = Devost | ||
| editor- | |editor-nome = Matthew G. | ||
| | |título= Hacking a Terror Network: The Silent Threat of Covert Channels | ||
| | |capítulourl= https://books.google.com/books?id=e3ggsGgTzUgC&lpg=PA10&pg=PA10#v=onepage&q=Hostmask%20IRC | ||
| | |acessodata= 30 de março de 2010 | ||
| | |edição= 1 | ||
| | |data=1 de dezembro de 2004 | ||
| | |publicado= [[Syngress Publishing]] | ||
| | |local= [[Rockland, Massachusetts]] | ||
| isbn = 978-1-928994-98-5 | | isbn = 978-1-928994-98-5 | ||
| | |página= 10 | ||
| | |capítulo= The Mind of Terror | ||
}}</ref> | }}</ref> [[IRCd|Servidores]], [[Serviços de Internet Relay Chat|serviços]] e outros clientes (incluindo [[Robô de IRC|bots]]) IRC podem usá-la para identificar uma sessão de IRC específica. | ||
O formato de uma máscara de host é <code>apelido!usuário@host</code>. A máscara de host é semelhante, mas não deve ser confundida com, um [[endereço de e-mail]]. | O formato de uma máscara de host é <code>apelido!usuário@host</code>. A máscara de host é semelhante, mas não deve ser confundida com, um [[endereço de e-mail]]. | ||
A parte do apelido é o apelido escolhido pelo usuário e pode ser alterado durante a conexão. | 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 pelo [[ident protocol|protocolo ident]] no cliente<ref name="petersen-2002">{{ | A parte do usuário é o nome de usuário relatado pelo [[ident protocol|protocolo ident]] no cliente.<ref name="petersen-2002">{{citar livro | ||
| editor- | |editor-sobrenome = Petersen | ||
| editor- | |editor-nome = Julie K. | ||
| | |título= The Telecommunications Illustrated Dictionary | ||
| | |capítulourl= https://books.google.com/books?id=b2mMzS0hCkAC&lpg=PA500&pg=PA500#v=onepage&q=Hostmask | ||
| | |acessodata= 30 de março de 2010 | ||
| | |edição= 2 | ||
| | |data= 29 de maio de 2002 | ||
| | |publicado= [[CRC Press]] | ||
| isbn = 978-0-8493-1173-4 | | isbn = 978-0-8493-1173-4 | ||
| | |página= 500 | ||
| | |capítulo= Internet Relay Chat | ||
}}</ref> | }}</ref> Se o ident não estiver disponível no cliente, o nome de usuário especificado quando o cliente conectou-se é usado após ser prefixado com um [[til]].<ref name="freenode faq">{{Citar web | ||
| url = http://freenode.net/faq.shtml | | url = http://freenode.net/faq.shtml | ||
| | |título= Frequently-Asked Questions | ||
| | |acessodata= 30 de março de 2010 | ||
| | |publicado= [[freenode]] | ||
| | |arquivourl= https://web.archive.org/web/20100326082146/http://freenode.net/faq.shtml | ||
| | |arquivodata= 26 de março de 2010 | ||
}}</ref> | }}</ref> | ||
A parte do host é o [[hostname]] do qual o cliente está se conectando. Se o [[endereço IP]] do cliente não puder ser resolvido para um | A parte do host é o [[hostname]] do qual o cliente está se conectando. Se o [[endereço IP]] do cliente não puder ser resolvido para um hostname válido pelo servidor, ele (o endereço de ip) será usado em vez do nome do host. | ||
Devido às implicações de [[privacidade]] de expor o endereço de IP ou o nome de host de um cliente, alguns [[IRCd|daemons IRC]] também fornecem recursos de privacidade como o InspIRCD ou o modo "+ x" do UnrealIRCd. Isto [[função hash criptográfica|criptografa]] um endereço de ip do cliente ou mascara parte do nome do host de um cliente (tornando-o ilegível para usuários que não sejam [[Internet Relay Chat#IRC Operators|IRCops]]). Os usuários também podem ter a opção de solicitar um "host virtual" (ou "vhost"), exibido na máscara de host para permitir maior anonimato. Algumas redes IRC, como a [[Freenode]], os usam como "disfarces" para indicar que um usuário é afiliado a um grupo ou projeto<ref>{{ | Devido às implicações de [[privacidade]] de expor o endereço de IP ou o nome de host de um cliente, alguns [[IRCd|daemons IRC]] também fornecem recursos de privacidade como o InspIRCD ou o modo "+ x" do UnrealIRCd. Isto [[função hash criptográfica|criptografa]] um endereço de ip do cliente ou mascara parte do nome do host de um cliente (tornando-o ilegível para usuários que não sejam [[Internet Relay Chat#IRC Operators|IRCops]]). Os usuários também podem ter a opção de solicitar um "host virtual" (ou "vhost"), exibido na máscara de host para permitir maior anonimato. Algumas redes IRC, como a [[Freenode]], os usam como "disfarces" para indicar que um usuário é afiliado a um grupo ou projeto.<ref>{{Citar web | ||
| url = http://meta.wikimedia.org/wiki/IRC/Cloaks | | url = http://meta.wikimedia.org/wiki/IRC/Cloaks | ||
| | |título= IRC/Cloaks | ||
| | | acessodata = 27 de novembro de 2011 | ||
| | |publicado= [[Meta-wiki]] | ||
}}</ref> | }}</ref> | ||
=== Esquema URI === | === Esquema URI === | ||
Existem três esquemas [[Uniform resource identifier|URI]] reconhecidos para o IRC: <code>irc</code>, <code>ircs</code>, e <code>irc6</code>.<ref>{{Citar web | |||
Existem três esquemas [[Uniform resource identifier|URI]] reconhecidos para o IRC: <code>irc</code>, <code>ircs</code>, e <code>irc6</code><ref>{{ | |||
| url = http://www.iana.org/assignments/uri-schemes.html | | url = http://www.iana.org/assignments/uri-schemes.html | ||
| | |título= Uniform Resource Identifier (URI) Schemes | ||
| | |publicado= Internet Assigned Numbers Authority | acessodata = 14 de outubro de 2012 | ||
}}</ref> | }}</ref> Quando suportados, eles permitem [[Hiperligação|hiper ligações]] de várias formas, incluindo: | ||
<nowiki>irc://<host>[:<porta>]/[<canal>[?<senha do canal>]]</nowiki> | <nowiki>irc://<host>[:<porta>]/[<canal>[?<senha do canal>]]</nowiki> | ||
<nowiki>ircs://<host>[:<porta>]/[<canal>[?<senha do canal>]]</nowiki> | <nowiki>ircs://<host>[:<porta>]/[<canal>[?<senha do canal>]]</nowiki> | ||
<nowiki>irc6://<host>[:<porta>]/[<canal>[?<senha do canal>]]</nowiki> | <nowiki>irc6://<host>[:<porta>]/[<canal>[?<senha do canal>]]</nowiki> | ||
Os itens entre colchetes são opcionais para serem usados (se necessário) para se conectar ao host especificado (ou rede, se conhecido do cliente IRC) e ingressar no canal especificado<ref>{{cite IETF | Os itens entre colchetes são opcionais para serem usados (se necessário) para se conectar ao host especificado (ou rede, se conhecido do cliente IRC) e ingressar no canal especificado.<ref>{{cite IETF | ||
| title = Uniform Resource Locator Schemes for Internet Relay Chat Entities | | title = Uniform Resource Locator Schemes for Internet Relay Chat Entities | ||
| draft = draft-butcher-irc-url-04 | | draft = draft-butcher-irc-url-04 | ||
Linha 543: | Linha 534: | ||
| publisher = [[Internet Engineering Task Force|IETF]] | | publisher = [[Internet Engineering Task Force|IETF]] | ||
| accessdate = 10 de abril de 2011 | | accessdate = 10 de abril de 2011 | ||
}}</ref> | }}</ref> Isso pode ser usado no próprio cliente ou em outro aplicativo (como um navegador da Web). O URI padrão é 'irc'. O 'irc6' especifica uma conexão a ser feita usando IPv6 e o 'ircs' especifica uma conexão segura. | ||
De acordo com a especificação, o usual [[Cerquilha|símbolo de hash (#)]] prefixado em nomes de canais que começam com um caractere [[alfanumé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 na URL. | De acordo com a especificação, o usual [[Cerquilha|símbolo de hash (#)]] prefixado em nomes de canais que começam com um caractere [[alfanumé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 na URL. | ||
Algumas implementações permitem que vários canais sejam especificados (separados por vírgulas)<ref>https://www.npmjs.com/package/node-irc</ref> | Algumas implementações permitem que vários canais sejam especificados (separados por vírgulas).<ref>[https://www.npmjs.com/package/node-irc]</ref> | ||
== Desafios == | == Desafios == | ||
Os problemas no design original do IRC eram a quantidade de dados de estado compartilhados<ref>{{cite IETF | Os problemas no design original do IRC eram a quantidade de dados de estado compartilhados<ref>{{cite IETF | ||
| rfc = 1324 | | rfc = 1324 | ||
Linha 565: | Linha 555: | ||
| page = 7 | | page = 7 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> sendo uma limitação em sua escalabilidade<ref>{{harvnb|Loesch|2003}} 1.2.1 Growth</ref> | }}</ref> sendo uma limitação em sua escalabilidade,<ref>{{harvnb|Loesch|2003}} 1.2.1 Growth</ref> a ausência de identificações de usuário exclusivas levando ao problema de colisão de apelidos,<ref>{{cite IETF | ||
| rfc = 1324 | | rfc = 1324 | ||
|title=A Discussion on Computer Network Conferencing | |title=A Discussion on Computer Network Conferencing | ||
Linha 572: | Linha 562: | ||
| page = 10 | | page = 10 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> falta de proteção de [[netsplit|divisões de redes]] por meio de roteamento cíclico,<ref>{{cite IETF | ||
| rfc = 1324 | | rfc = 1324 | ||
|title=A Discussion on Computer Network Conferencing | |title=A Discussion on Computer Network Conferencing | ||
Linha 579: | Linha 569: | ||
| page = 10 | | page = 10 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref><ref>{{harvnb|Loesch|2003}} 1.2.2 Network failures</ref> | }}</ref><ref>{{harvnb|Loesch|2003}} 1.2.2 Network failures</ref> a compensação em escalabilidade por causa das informações de presença do usuário em tempo real,<ref>{{cite IETF | ||
| rfc = 1324 | | rfc = 1324 | ||
|title=A Discussion on Computer Network Conferencing | |title=A Discussion on Computer Network Conferencing | ||
Linha 586: | Linha 576: | ||
| page = 4 | | page = 4 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> fraquezas do protocolo fornecendo uma plataforma para abuso,<ref>{{harvnb|Loesch|2003}} 1.2.3 Sociological and security aspects</ref> nenhuma passagem de mensagem transparente e otimizável<ref>{{cite IETF | ||
| rfc = 1324 | | rfc = 1324 | ||
|title=A Discussion on Computer Network Conferencing | |title=A Discussion on Computer Network Conferencing | ||
Linha 593: | Linha 583: | ||
| page = 7 | | page = 7 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> e ausência de criptografia<ref>{{cite IETF | }}</ref> e ausência de criptografia.<ref>{{cite IETF | ||
| rfc = 1324 | | rfc = 1324 | ||
|title=A Discussion on Computer Network Conferencing | |title=A Discussion on Computer Network Conferencing | ||
Linha 600: | Linha 590: | ||
| page = 8 | | page = 8 | ||
| idanchor = ietf | | idanchor = ietf | ||
}}</ref> | }}</ref> Algumas dessas questões foram tratadas no ''IRC moderno''. | ||
=== Ataques === | === Ataques === | ||
Como as conexões IRC podem não ser criptografadas e normalmente se estendem por longos períodos, elas são um alvo atraente para [[ataque de negação de serviço|ataques DoS / DDoS]] e [[hacker]]s. Por causa disso, uma política de segurança cuidadosa é necessária para garantir que uma rede IRC não seja suscetível a um ataque como uma guerra para [[Internet Relay Chat takeover|assumir o controle]]. As redes IRC também podem listar em [[linha K (IRC)|linha K]] ou [[linha G]] usuários ou servidores que tenham um efeito prejudicial. | |||
Alguns servidores IRC suportam conexões [[Transport Layer Security|SSL / TLS]] para fins de segurança. Isso ajuda a interromper o uso de programas [[Analisador de pacotes|analisadores de pacotes]] para obter as senhas de usuários de IRC, mas tem pouco uso além desse escopo devido à natureza pública dos canais de IRC. As conexões SSL requerem suporte ao cliente e ao servidor (que pode exigir que o usuário instale binários SSL e patches ou módulos específicos do cliente IRC em seus computadores). Algumas redes também usam SSL para conexões servidor a servidor e fornecem um sinalizador de canal especial (como <code>+S</code>) para permitir apenas usuários conectados por SSL no canal, enquanto proíbe a identificação do operador em texto não criptografado, para melhor utilizar as vantagens que o SSL oferece.<ref>{{Citar web | |||
Alguns servidores IRC suportam conexões [[Transport Layer Security|SSL / TLS]] para fins de segurança. Isso ajuda a interromper o uso de programas [[Analisador de pacotes|analisadores de pacotes]] para obter as senhas de usuários de IRC, mas tem pouco uso além desse escopo devido à natureza pública dos canais de IRC. As conexões SSL requerem suporte ao cliente e ao servidor (que pode exigir que o usuário instale binários SSL e patches ou módulos específicos do cliente IRC em seus computadores). Algumas redes também usam SSL para conexões servidor a servidor e fornecem um sinalizador de canal especial (como <code>+S</code>) para permitir apenas usuários conectados por SSL no canal, enquanto proíbe a identificação do operador em texto não criptografado, para melhor utilizar as vantagens que o SSL oferece<ref>{{ | |||
| url = http://esper.net/help.php | | url = http://esper.net/help.php | ||
| | |título= Getting Help on EsperNet | ||
| | |publicado= The EsperNet IRC Network | ||
| | |acessodata=31 de julho de 2012 | ||
}}</ref><ref>{{ | }}</ref><ref>{{Citar web | ||
| url = http://www.dal.net/news/shownews.php?id=67 | | url = http://www.dal.net/news/shownews.php?id=67 | ||
| | |título= New Feature: SSL For Users | ||
| | |autor = brandon | ||
| | |data=18 de maio de 2010 | ||
| | |publicado= DALnet | ||
| | |acessodata=31 de julho de 2012 | ||
}}</ref> | }}</ref> | ||
O IRC serviu como um primeiro laboratório para muitos tipos de ataques na Internet, como o uso de | O IRC serviu como um primeiro laboratório para muitos tipos de ataques na Internet, como o uso de | ||
inacessíveis falsas mensagens [[Internet Control Message Protocol|ICMP]] para quebrar as conexões IRC baseadas no [[Transmission Control Protocol|TCP]] ([[Nuke (computador)|nuking]]) para incomodar os usuários ou facilitar [[Internet Relay Chat takeover|assumir o controle (takeover)]]. | inacessíveis falsas mensagens [[Internet Control Message Protocol|ICMP]] para quebrar as conexões IRC baseadas no [[Transmission Control Protocol|TCP]] ([[Nuke (computador)|nuking]]) para incomodar os usuários ou facilitar [[Internet Relay Chat takeover|assumir o controle (takeover)]]. | ||
Linha 626: | Linha 615: | ||
Uma das questões técnicas mais controversas em torno das implementações de IRC, 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. | Uma das questões técnicas mais controversas em torno das implementações de IRC, 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 protocolo IRC 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 pudesse entrar em um servidor "dividido", onde um canal que existia do outro lado da rede estava vazio, e obter status de operador, ele se tornaria um operador de canal do canal "combinado" após o término do [[netsplit]]; se um usuário pegou um apelido que existia do outro lado da rede, o servidor mataria os dois usuários ao se reingressar (ou seja, 'colisão de apelidos'). | O problema com o protocolo IRC 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 pudesse entrar em um servidor "dividido", onde um canal que existia do outro lado da rede estava vazio, e obter status de operador, ele se tornaria um operador de canal do canal "combinado" após o término do [[netsplit]]; se um usuário pegou um apelido que existia do outro lado da rede, o servidor mataria os dois usuários ao se reingressar (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 abuso. Além de causar problemas dentro do IRC, isso encorajou as pessoas a conduzirem ataques de negação de serviço contra servidores IRC para causar | 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 abuso. Além de causar problemas dentro do IRC, isso encorajou as pessoas a conduzirem ataques de negação de serviço contra servidores IRC para causar netsplits, os quais eles então abusariam. | ||
{{anchor|delay}} | {{anchor|delay}} | ||
As estratégias de '''nick delay''' e '''channel delay''' visam prevenir abusos atrasando reconexões e renomeações. Depois que um usuário termina a sessão e o [[apelido]] fica disponível, ou um canal deixa de existir porque todos os seus usuários partiram ( como freqüentemente acontece durante uma [[netsplit|divisão de rede]]), o servidor não permitirá que nenhum usuário 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 | As estratégias de '''nick delay''' e '''channel delay''' visam prevenir abusos atrasando reconexões e renomeações. Depois que um usuário termina a sessão e o [[apelido]] fica disponível, ou um canal deixa de existir porque todos os seus usuários partiram ( como freqüentemente acontece durante uma [[netsplit|divisão de rede]]), o servidor não permitirá que nenhum usuário 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 um agressor porque eles não podem pegar o apelido ou obter status de operador em um canal e, portanto, a colisão de um apelido ou 'fusão' de um canal não pode acontecer. Até certo ponto, isso é inconveniente para usuários legítimos, que podem ser forçados a usar brevemente um nome diferente após o retorno (anexar um [[sublinhado]] é comum). | ||
O protocolo de timestamp é uma alternativa aos atrasos de nick / canal que resolve colisões usando a prioridade de timestamp. Cada apelido e canal na rede são atribuídos a um timestamp{{spaced ndash}}com a data e hora em que foram criados. Quando ocorre um netsplit, 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 seu TS, é 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 seu status de operador de canal. | O protocolo de timestamp é uma alternativa aos atrasos de nick / canal que resolve colisões usando a prioridade de timestamp. Cada apelido e canal na rede são atribuídos a um timestamp{{spaced ndash}}com a data e hora em que foram criados. Quando ocorre um netsplit, 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 seu TS, é 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 seu status de operador de canal. | ||
Linha 642: | Linha 631: | ||
== Clientes == | == Clientes == | ||
=== Software cliente === | === Software cliente === | ||
{{Details| Comparação dos clientes de IRC}} | {{Details| Comparação dos clientes de IRC}} | ||
[[ | [[Imagem:Ircnetz-Schema.svg|direita|thumb| Esquema de uma rede IRC com [[Cliente (computação)|clientes normais]] (verde), [[Robô de IRC|bots]] (azul) e [[BNC (software)|bouncers]] (laranja)]] | ||
O software cliente existe para vários [[sistemas operacionais]] ou pacotes de software, bem como jogos baseados na web ou internos. Muitos clientes diferentes estão disponíveis para os vários sistemas operacionais, incluindo [[Microsoft Windows|Windows]], [[Unix]] e [[Linux]], [[Mac OS X]] e sistemas operacionais móveis (tais como [[iOS]] e [[Android (sistema operacional)|Android]]). No Windows, [[mIRC]] é um dos clientes mais populares<ref>{{ | O software cliente existe para vários [[sistemas operacionais]] ou pacotes de software, bem como jogos baseados na web ou internos. Muitos clientes diferentes estão disponíveis para os vários sistemas operacionais, incluindo [[Microsoft Windows|Windows]], [[Unix]] e [[Linux]], [[Mac OS X]] e sistemas operacionais móveis (tais como [[iOS]] e [[Android (sistema operacional)|Android]]). No Windows, [[mIRC]] é um dos clientes mais populares.<ref>{{citar livro|último =Smith|primeiro =Roderick W.|título=The Multi-Boot Configuration Handbook|capítulourl=https://books.google.com/books?id=OuPtI5fHhBoC|acessodata=25 de julho de 2010|series=Handbook Series|data=8 de abril de 2000|publicado=[[Que Publishing]]|local=[[Upper Saddle River, New Jersey]]|isbn=978-0-7897-2283-6|página=[https://archive.org/details/isbn_9780789722836/page/289 289]|capítulo=The Internet: Using IRC to Get Help|citação=mIRC is one of the most popular Windows IRC clients.|url=https://archive.org/details/isbn_9780789722836/page/289}}</ref> | ||
Alguns programas extensíveis através de [[ | Alguns programas extensíveis através de [[plug-in]]s também servem como plataformas para clientes IRC. Por exemplo, um cliente chamado [[ERC (software)|ERC]], escrito inteiramente em [[Emacs Lisp]], está incluído na versão 22.3 do Emacs. Portanto, qualquer plataforma que pode executar o Emacs pode executar o ERC. | ||
Vários [[navegadores]] têm clientes IRC integrados (como o [[Opera]] versões 12.18 e anteriores<ref>{{ | Vários [[navegadores]] têm clientes IRC integrados (como o [[Opera]] versões 12.18 e anteriores<ref>{{Citar web| url=http://operawiki.info/OperaIRC| título=Opera Browser Wiki: IRC Client|acessodata=10 de abril de 2011|arquivourl=https://web.archive.org/web/20110317014824/http://operawiki.info/OperaIRC|arquivodata=17 de março de 2011}}</ref> e o complemento [[ChatZilla]] para Mozilla [[Firefox]] (56 e anteriores) incluído como um componente integrado do [[SeaMonkey]]). Clientes baseados na Web, como [[Mibbit]] e KiwiIRC de código aberto, podem ser executados na maioria dos navegadores. | ||
Jogos como ''[[Warsow|War§ow]]'',<ref>{{ | Jogos como ''[[Warsow|War§ow]]'',<ref>{{Citar web | ||
| url = http://www.warsow.net/wiki/index.php?title=IRC_Module | | url = http://www.warsow.net/wiki/index.php?title=IRC_Module | ||
| | |título= Warsow Wiki: IRC Module | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |arquivourl= https://web.archive.org/web/20110425010535/http://www.warsow.net/wiki/index.php?title=IRC_Module | ||
| | |arquivodata= 25 de abril de 2011}}</ref> ''[[Unreal Tournament]]'' (até o [[Unreal Tournament 2004]]),<ref>{{Citar web | ||
| url = http://www.bcchardware.com/index.php?option=com_content&task=view&id=35&Itemid=40 | | url = http://www.bcchardware.com/index.php?option=com_content&task=view&id=35&Itemid=40 | ||
| | |título= UT2004 Review | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Guenter | ||
| | |primeiro = Daniel | ||
| | |data= 21 de junho de 2004 | ||
| | |publicado= BCCHardware | ||
}}</ref> | }}</ref> ''[[Uplink (video game)|Uplink]]'',<ref>{{Citar web | ||
| url = http://guide.modlink.net/section11.php | | url = http://guide.modlink.net/section11.php | ||
| | |título= The Ultimate Uplink Guide | ||
| | |acessodata= 10 de abril de 2011 | ||
}}</ref> | }}</ref> jogos baseados em ''[[Spring Engine]]'', [[0 A.D.]] e ''ZDaemon'' têm o IRC incluído.<ref>{{Citar web | ||
| url = https://doomwiki.org/wiki/ZDaemon#Other_utilities | | url = https://doomwiki.org/wiki/ZDaemon#Other_utilities | ||
| | |título= ZDaemon – The Doom Wiki: Other utilities | ||
| | |acessodata= 10 de abril de 2011 | ||
}}</ref> | }}</ref> | ||
A interface de chat do [[Ustream]] é [[IRC]] com autenticação personalizada<ref>{{ | A interface de chat do [[Ustream]] é [[IRC]] com autenticação personalizada,<ref>{{Citar web | ||
| url = http://ustream-helpers.com/how-to/ircclient | | url = http://ustream-helpers.com/how-to/ircclient | ||
| | |título= How to setup [sic] an IRC client to connect and login [sic] to Ustream | ||
| | |acessodata= 27 de abril de 2013 | ||
| | |data= 29 de janeiro de 2012 | ||
| | |publicado= Ustream-Helpers | ||
}}</ref> | }}</ref> bem como a do [[Twitch (serviço)|Twitch]] (anteriormente Justin.tv).<ref>{{Citar web | ||
| url = http://www.liquidsilver.org/2010/06/ustream-v-justin/ | | url = http://www.liquidsilver.org/2010/06/ustream-v-justin/ | ||
| | |título= Ustream vs. Justin.tv | ||
| | |acessodata= 13 de julho de 2011 | ||
| | |data= 20 de junho de 2010 | ||
| | |publicado= LiquidSilver | ||
| | |autor = Mauldor | ||
}}</ref><ref>{{ | }}</ref><ref>{{Citar web | ||
| | |título=Twitch IRC | ||
|url=https://help.twitch.tv/customer/portal/articles/1302780-twitch-irc | |url=https://help.twitch.tv/customer/portal/articles/1302780-twitch-irc | ||
|website=Twitch Help Center | |website=Twitch Help Center | ||
| | |acessodata=30 de outubro de 2017 | ||
| | |data=7 de abril de 2017}}</ref> | ||
=== Bots === | |||
{{Artigo principal|Robô de IRC}} | |||
=== | Um uso típico de bots no IRC é fornecer [[Internet Relay Chat services|IRC services]] ou funcionalidade específica dentro de um canal, como hospedar um jogo baseado em chat ou fornecer notificações de eventos externos. No entanto, alguns bots IRC são usados para lançar ataques maliciosos, como negação de serviço, spamming ou exploração.<ref>{{Citar web|último1 =Canavan|primeiro1 =John|título=The Evolution of Malicious IRC Bots|url=http://www.symantec.com/avcenter/reference/the.evolution.of.malicious.irc.bots.pdf|website=www.symantec.com|publicado=Symantec Security Response}}</ref> | ||
{{ | === Bouncer === | ||
{{Artigo principal|BNC (software)}} | |||
Um programa que é executado como um [[Daemon (computação)|daemon]] em um [[Servidor (computação)|servidor]] e funciona como um [[servidor proxy|proxy]] persistente é conhecido como BNC ou bouncer. O objetivo é manter uma conexão com um servidor IRC, atuando como um relé entre o servidor e o cliente, ou simplesmente atuar como um proxy. Caso o cliente perca a conectividade de rede, o BNC pode permanecer conectado e arquivar todo o tráfego para entrega posterior, permitindo ao usuário retomar sua sessão de IRC sem interromper sua conexão com o servidor<ref>{{ | Um programa que é executado como um [[Daemon (computação)|daemon]] em um [[Servidor (computação)|servidor]] e funciona como um [[servidor proxy|proxy]] persistente é conhecido como BNC ou bouncer. O objetivo é manter uma conexão com um servidor IRC, atuando como um relé entre o servidor e o cliente, ou simplesmente atuar como um proxy. Caso o cliente perca a conectividade de rede, o BNC pode permanecer conectado e arquivar todo o tráfego para entrega posterior, permitindo ao usuário retomar sua sessão de IRC sem interromper sua conexão com o servidor.<ref>{{Citar web | ||
| url = http://www.psybnc.at/readme.txt | | url = http://www.psybnc.at/readme.txt | ||
| | |título= psyBNC Readme | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |publicado= psybnc.at | ||
}}</ref> | }}</ref> | ||
Além disso, como forma de obter um efeito semelhante ao do bouncer, um cliente IRC, normalmente [[Interface de base texto|baseado em texto]] (como o [[Irssi]] por exemplo), pode ser executado em um servidor sempre ativo ao qual o usuário se conecta via [[Secure Shell|ssh]]. Isso também permite que dispositivos que têm apenas a funcionalidade ssh, mas nenhum cliente de IRC real instalado, se conectem ao IRC e permite o compartilhamento de sessões de IRC<ref>{{ | Além disso, como forma de obter um efeito semelhante ao do bouncer, um cliente IRC, normalmente [[Interface de base texto|baseado em texto]] (como o [[Irssi]] por exemplo), pode ser executado em um servidor sempre ativo ao qual o usuário se conecta via [[Secure Shell|ssh]]. Isso também permite que dispositivos que têm apenas a funcionalidade ssh, mas nenhum cliente de IRC real instalado, se conectem ao IRC e permite o compartilhamento de sessões de IRC.<ref>{{Citar web | ||
| url = http://chriscarey.com/wordpress/2009/07/18/irc-with-irssi-proxy-screen/ | | url = http://chriscarey.com/wordpress/2009/07/18/irc-with-irssi-proxy-screen/ | ||
| | |título= IRC with irssi-proxy + screen | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Carey | ||
| | |primeiro = Chris | ||
| | |data= 18 de julho de 2009 | ||
| | |publicado= chriscarey.com | ||
}}</ref> | }}</ref> | ||
Para evitar que o cliente IRC feche quando a conexão ssh for fechada, o cliente pode ser executado dentro de um [[terminal multiplexador]], como [[GNU Screen]] ou [[tmux]], 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 cliente IRC seguindo o modelo [[cliente-servidor]], chamado [[Smuxi]], foi lançado<ref>{{ | Para evitar que o cliente IRC feche quando a conexão ssh for fechada, o cliente pode ser executado dentro de um [[terminal multiplexador]], como [[GNU Screen]] ou [[tmux]], 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 cliente IRC seguindo o modelo [[cliente-servidor]], chamado [[Smuxi]], foi lançado.<ref>{{Citar web | ||
| url = http://www.smuxi.org/blog/show/Detachable_Frontend_Core_Rewrite__UML__Windows_Port_kicking_Glade | | url = http://www.smuxi.org/blog/show/Detachable_Frontend_Core_Rewrite__UML__Windows_Port_kicking_Glade | ||
| | |título= Detachable Frontend (Core Rewrite) / UML / Windows Port (kicking Glade) | ||
| | |acessodata= 25 de julho de 2010 | ||
| | |data= 25 de dezembro de 2004 | ||
| | |publicado= smuxi.org | ||
}}</ref><ref>{{ | }}</ref><ref>{{Citar web | ||
| url = http://www.smuxi.org/page/About | | url = http://www.smuxi.org/page/About | ||
| | |título= About Smuxi | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |publicado= smuxi.org | ||
}}</ref> | }}</ref> | ||
== Mecanismos de pesquisa == | == Mecanismos de pesquisa == | ||
Existem vários motores de busca disponíveis para ajudar o usuário a encontrar o que procura no IRC.<ref>{{citar livro | |||
Existem vários motores de busca disponíveis para ajudar o usuário a encontrar o que procura no IRC<ref>{{ | |último = Mutton | ||
| | |primeiro = Paul | ||
| | |título= IRC hacks | ||
| | |edição= 1st | ||
| | |data= 27 de julho de 2004 | ||
| | |publicado= [[O'Reilly Media]] | ||
| | |local= [[Sebastopol, California]] | ||
| | |||
| isbn = 978-0-596-00687-7 | | isbn = 978-0-596-00687-7 | ||
| | |páginas= 44–46 | ||
| | |capítulo= Users and channels | ||
}}</ref><ref>{{ | }}</ref><ref>{{citar livro|último = Wang | ||
| | |primeiro = Wallace | ||
| | |título= Steal this file Sharing Book | ||
| | |edição= 1st | ||
| | |data= 25 de outubro de 2004 | ||
| | |publicado= [[No Starch Press]] | ||
| | |local= [[San Francisco, California]] | ||
|isbn = 978-1-59327-050-6 | |isbn = 978-1-59327-050-6 | ||
| | |páginas= [https://archive.org/details/stealthisfilesha00wang/page/65 65–67] | ||
| | |capítulo= Instant messaging and online chat rooms: Internet Relay Chat (IRC) | ||
|url = https://archive.org/details/stealthisfilesha00wang/page/65 | |url = https://archive.org/details/stealthisfilesha00wang/page/65 | ||
}}</ref> | }}</ref> Geralmente, o mecanismo de pesquisa consiste em duas partes, um "back-end" (ou "spider / crawler") e um "mecanismo de pesquisa" front-end. | ||
O back-end (spider / webcrawler) é o cavalo de batalha do mecanismo de pesquisa. É responsável por rastrear servidores IRC 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). As informações indexadas geralmente consistem apenas no texto do canal (texto que é exibido publicamente em canais públicos). | O back-end (spider / webcrawler) é o cavalo de batalha do mecanismo de pesquisa. É responsável por rastrear servidores IRC 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). As informações indexadas geralmente consistem apenas no texto do canal (texto que é exibido publicamente em canais públicos). | ||
Linha 772: | Linha 756: | ||
== Codificação de caracteres == | == Codificação de caracteres == | ||
O IRC ainda carece de uma única convenção padrão globalmente aceita para como transmitir caracteres fora do repertório de 7 bits [[ASCII]]. | O IRC ainda carece de uma única convenção padrão globalmente aceita para como transmitir caracteres fora do repertório de 7 bits [[ASCII]]. | ||
Os servidores IRC normalmente transferem mensagens de um cliente para outro cliente como sequências de bytes, sem nenhuma interpretação ou recodificação de [[ | Os servidores IRC normalmente transferem mensagens de um cliente para outro cliente como sequências de bytes, sem nenhuma interpretação ou recodificação de [[caractere]]s. | ||
O protocolo IRC (ao contrário, por exemplo, do [[MIME]] ou [[HTTP]]) carece de mecanismos para anunciar e negociar opções de codificação de caracteres. Isso colocou a responsabilidade de escolher o codec de caractere apropriado no cliente. Na prática, os canais de IRC têm usado amplamente as mesmas codificações de caracteres que também foram usadas pelos sistemas operacionais (em particular os derivados [[Unix]]) nas respectivas comunidades linguísticas: | O protocolo IRC (ao contrário, por exemplo, do [[MIME]] ou [[HTTP]]) carece de mecanismos para anunciar e negociar opções de codificação de caracteres. Isso colocou a responsabilidade de escolher o codec de caractere apropriado no cliente. Na prática, os canais de IRC têm usado amplamente as mesmas codificações de caracteres que também foram usadas pelos sistemas operacionais (em particular os derivados [[Unix]]) nas respectivas comunidades linguísticas: | ||
* '''Era de 7 bits:''' Nos primeiros dias do IRC, especialmente entre os usuários de [[línguas germânicas do norte|escandinavo]] e [[língua finlandesa]], as variantes nacionais de [[ISO 646]] eram dominantes como [[codificação de caracteres]]. Estes codificam caracteres (não ASCII) como Ä Ö Å ä ö å nas posições de código 0x5B 0x5C 0x5D 0x7B 0x7C 0x7D ([[ASCII]]: '''[''' '''\''' ''']''' '''{''' '''|''' '''}'''). É por isso que esses códigos são sempre permitidos em apelidos. De acordo com RFC 1459, {|} em apelidos devem ser tratados como equivalentes em minúsculas de [\] respectivamente<ref name="rfc 1459 2.2 character codes" /> | * '''Era de 7 bits:''' Nos primeiros dias do IRC, especialmente entre os usuários de [[línguas germânicas do norte|escandinavo]] e [[língua finlandesa]], as variantes nacionais de [[ISO 646]] eram dominantes como [[codificação de caracteres]]. Estes codificam caracteres (não ASCII) como Ä Ö Å ä ö å nas posições de código 0x5B 0x5C 0x5D 0x7B 0x7C 0x7D ([[ASCII]]: '''[''' '''\''' ''']''' '''{''' '''|''' '''}'''). É por isso que esses códigos são sempre permitidos em apelidos. De acordo com RFC 1459, {|} em apelidos devem ser tratados como equivalentes em minúsculas de [\] respectivamente.<ref name="rfc 1459 2.2 character codes" /> No final da década de 1990, o uso de codificações de 7 bits desapareceu em favor da [[ISO 8859-1]] e tais mapeamentos de equivalência foram retirados de alguns daemons IRC. | ||
* '''Era de 8 bits:''' Desde o início dos anos 1990, codificações de 8 bits como [[ISO 8859-1]] tornaram-se comumente usadas para idiomas europeus. Os usuários russos podiam escolher [[KOI8-R]], [[ISO 8859-5]] e [[CP1251]], e desde cerca de 2000, as redes IRC russas modernas convertem entre essas diferentes codificações comumente usadas do [[Alfabeto cirílico|script cirílico]]. | * '''Era de 8 bits:''' Desde o início dos anos 1990, codificações de 8 bits como [[ISO 8859-1]] tornaram-se comumente usadas para idiomas europeus. Os usuários russos podiam escolher [[KOI8-R]], [[ISO 8859-5]] e [[CP1251]], e desde cerca de 2000, as redes IRC russas modernas convertem entre essas diferentes codificações comumente usadas do [[Alfabeto cirílico|script cirílico]]. | ||
* '''Era multibyte:''' Por muito tempo, os canais IRC do leste asiático com scripts logográficos na China, Japão e | * '''Era multibyte:''' Por muito tempo, os canais IRC do leste asiático com scripts logográficos na China, Japão e Coreia têm usado codificações multibyte, como [[Extended Unix Code|EUC]] ou [[ISO-2022-JP]]. Com a migração comum de ISO 8859 para [[UTF-8]] em plataformas Linux e Unix desde cerca de 2002, O UTF-8 tornou-se um substituto cada vez mais popular para muitas das codificações de 8 bits usadas anteriormente em canais europeus. Alguns clientes de IRC agora são capazes de ler mensagens em ISO 8859-1 ou UTF-8 no mesmo canal, detectando heuristicamente qual codificação é usada. A mudança para UTF-8 começou em particular no IRC de língua finlandesa ([[:fi:IRC#Merkistö|Merkistö]] <small>(Finnish)</small>). | ||
Hoje, a codificação UTF-8 de [[Unicode]] / [[ISO/IEC 10646]] seria o candidato mais provável para uma única codificação de caracteres padrão futura para todas as comunicações IRC, se tal padrão já relaxou a restrição de tamanho de mensagem de 510 bytes. O UTF-8 é compatível com ASCII e cobre o superconjunto de todos os outros padrões [[Codificação de caracteres|conjunto de caracteres codificados]] comumente usados. | Hoje, a codificação UTF-8 de [[Unicode]] / [[ISO/IEC 10646]] seria o candidato mais provável para uma única codificação de caracteres padrão futura para todas as comunicações IRC, se tal padrão já relaxou a restrição de tamanho de mensagem de 510 bytes. O UTF-8 é compatível com ASCII e cobre o superconjunto de todos os outros padrões [[Codificação de caracteres|conjunto de caracteres codificados]] comumente usados. | ||
== Compartilhamento de arquivos == | == Compartilhamento de arquivos == | ||
Muito parecido com o convencional compartilhamento de arquivos [[Ponto a ponto|P2P]], os usuários podem criar servidores de arquivos que lhes permitem compartilhar arquivos uns com os outros usando [[Robô de IRC|IRC bots]] ou scripts personalizados para seu [[Internet Relay Chat#Clientes|cliente IRC]]. Freqüentemente, os usuários se agrupam para distribuir [[warez]] por meio de uma rede de bots IRC.<ref>{{citar jornal | |||
Muito parecido com o convencional compartilhamento de arquivos [[Ponto a ponto|P2P]], os usuários podem criar servidores de arquivos que lhes permitem compartilhar arquivos uns com os outros usando [[Robô de IRC|IRC bots]] ou scripts personalizados para seu [[Internet Relay Chat#Clientes|cliente IRC]]. Freqüentemente, os usuários se agrupam para distribuir [[warez]] por meio de uma rede de bots IRC<ref>{{ | |||
| url = http://www.zdnet.com/news/pirated-movies-now-playing-on-a-server-near-you/122663 | | url = http://www.zdnet.com/news/pirated-movies-now-playing-on-a-server-near-you/122663 | ||
| | |título= Filmes piratas: reproduzindo agora em um servidor perto de você | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Vamosi | ||
| | |primeiro = Robert | ||
| | |data= 8 de maio de 2002 | ||
| | |obra= [[ZDNet]] | ||
}}</ref> | }}</ref> | ||
Tecnicamente, o IRC não fornece mecanismos de [[transferência de arquivo]]; o compartilhamento de arquivos é implementado pelos ''clientes'' IRC, normalmente usando o protocolo [[Direct Client-to-Client|DCC]], no qual as transferências de arquivos são negociadas por meio da troca de mensagens privadas entre clientes. A grande maioria dos clientes de IRC oferece suporte para transferências de arquivos DCC, daí a visão de que o compartilhamento de arquivos é um recurso integral do IRC<ref>{{ | Tecnicamente, o IRC não fornece mecanismos de [[transferência de arquivo]]; o compartilhamento de arquivos é implementado pelos ''clientes'' IRC, normalmente usando o protocolo [[Direct Client-to-Client|DCC]], no qual as transferências de arquivos são negociadas por meio da troca de mensagens privadas entre clientes. A grande maioria dos clientes de IRC oferece suporte para transferências de arquivos DCC, daí a visão de que o compartilhamento de arquivos é um recurso integral do IRC.<ref>{{Citar web | ||
| url = http://www.macobserver.com/tip/2002/04/04.1.shtml | | url = http://www.macobserver.com/tip/2002/04/04.1.shtml | ||
| | |título= IRC 101: O que é e como devo usá-lo? | ||
| | |acessodata= 10 de abril de 2011 | ||
| | |último = Sasaki | ||
| | |primeiro = Darla | ||
| | |data= 4 de abril de 2002 | ||
| | |publicado= Macobserver.com | ||
}}</ref> | }}</ref> O uso comum desse protocolo, entretanto, às vezes também causa spam de DCC. Os comandos DCC também têm sido usados para explorar clientes vulneráveis para executar uma ação, como desconectar do servidor ou sair do cliente. | ||
== Ver também == | == Ver também == | ||
* [[Direct Connect]] - rede de troca de arquivos que foi influenciada pelo IRC. | * [[Direct Connect]] - rede de troca de arquivos que foi influenciada pelo IRC. | ||
{{Referências}} | |||
== Ligações externas == | == Ligações externas == |
Edição das 00h18min de 22 de novembro de 2020
Predefinição:Formatar referências Predefinição:Mbox
Internet Relay Chat (IRC) é um protocolo de comunicação utilizado na Internet. Ele é utilizado basicamente como bate-papo (chat) e troca de arquivos, permitindo a conversa em grupo ou privada. Foi documentado formalmente pela primeira vez em 1993, com a RFC 1459.
Um cliente de IRC é necessário para a comunicação sob o protocolo IRC, sendo necessário uma conexão para a Internet.
História
Desenvolvimento
O IRC foi escrito pelo programador finlandês Jarkko Oikarinen em 1988 na Universidade de Oulu na Finlândia.[1] O trabalho começou em agosto daquele ano e o objetivo era criar um sistema de teletexto comunitário que utilizasse TCP/IP com recursos avançados como conversa pública massiva entre milhares de usuários separados por canais e com mensagens privadas entre eles. Eles diziam que o IRC seria um complemento e até um avanço da Usenet pois permitiria encontro maciço de grupos em tempo real. Os amigos de Jarkko, Markku Järvinen e Vijay Subramaniam ajudaram na concepção dos clientes e servidores.
As primeiras redes surgiram na Finlândia e rodavam em servidores de Universidades. Logo se espalharam por instituições em toda Escandinávia. Em 1989 já existiam mais de 40 servidores espalhados por todo o mundo. Em 1993 durante a Guerra da Golfo o IRC foi usado para noticiar eventos em tempo real[2] entre usuários que tinham acesso à Internet em Universidades do Oriente Médio.
Expansão
Com a abertura comercial da Internet ao grande público em 1993, ao longo da década de 1990 grandes redes de IRC começaram a surgir como EFnet e Undernet possibilitando que qualquer pessoa assinante de um provedor de acesso pudesse se conectar a essas redes. Muitas das novas redes que surgiam eram separações de grupos de usuários que não concordavam com regras dos servidores. Foi assim que em 1995 as primeiras redes de IRC no Brasil nasceram sendo fundadas por usuários brasileiros que já se conectavam às redes estrangeiras.
Popularidade
O IRC se tornou o principal meio de bate-papo na Internet no final dos anos 1990 e início da década de 2000, concentrando milhares de usuários todos os dias. Tentaram recriar o mesmo sistema na Web e em Java, mas o IRC era insuperável pela capacidade de gerenciamento e o modo como os usuários interagiam. Por exemplo, os OPs (Operadores) cuidavam do bom andamento do canal expulsando usuários mal educados e que provocassem confusão.
O mIRC, cliente de IRC para Windows foi com certeza o mais popular e largamente utilizado, era fácil de usar e apresentava uma interface clara e agradável aos olhos dos iniciantes. Também possuía uma linguagem de scripts que permitiu que muitos programadores criassem variações do mIRC traduzidas para o português e com muitos recursos que facilitavam o seu uso. Surgiram também muitos jogos em canais, de enquetes e até xadrez por computador foi portado para o sistema que lidava apenas com texto ditando as notações do tabuleiro. O ápice do IRC no Brasil foi em 2001 onde ambas BrasIRC e BrasNET registraram recordes de usuários conectados.
Decadência
A decadência do IRC começou por volta de 2003[3] quando os mensageiros instantâneos se tornavam ainda mais populares, permitindo bate-papo com amigos sem ser importunado por desconhecidos e uma série de recursos que o IRC não permitia. Primeiramente o ICQ chamou a atenção dos usuários, pela praticidade e simplicidade na comunicação direta entre estes. Posteriormente o MSN Messenger foi ganhando espaço pois permitia conversas em vídeo por webcams e voz, além de integração com e-mail do Hotmail, jogos do portal MSN e salas de chat comunitárias que eram tão eficientes como o IRC em controle de usuários. Apesar de o bate-papo comunitário nos mensageiros não ter prosperado, eles permitiam conexões com sites de namoro aumentando a eficiência em conhecer gente nova como acontecia no IRC.[4]
O lançamento da rede social Orkut foi o golpe final para as redes de IRC brasileiras. Os usuários do Orkut se reuniam em comunidades que possuíam fóruns e neles organizavam sistemas de chat nos tópicos.
No exterior, o IRC teve uma queda mais branda: apesar de perder muitos usuários, ainda mantinha uma boa taxa de conexões. O sistema de fóruns baseados em PHP foi também um dos grandes responsáveis pela queda do IRC por lá. Os usuários passaram a se organizar nesses fóruns e mantinham conversas em tempo real no MSN.
Reascensão
Em dias atuais o IRC está disponível por meio da plataforma web IRC, clientes de web IRC que fornecem serviços online como: LightIRC; Mibbits; kiwiIRC entre outros, permitindo que usuários adentrem ao sistema IRC por meio de acesso à web (internet), mediante navegador (browser), que pode ser incorporada a sites via iframe, o que vem aumentando gradativamente usuários no IRC. Redes brasileiras como a BrasIRC, vIRCio, VirtuaLife, sVipCHAT entre outras, tem feito uso dessa plataforma fornecendo webchat para diversos sites. Exemplo são algumas rádios web, que chegam a ter picos elevados de pessoas participando destes chats, usando o protocolo IRC. Muito sites usam essa plataforma, web IRC, oferecendo um chat semelhante aos conhecidos como: Terra; UOL, dividido por: temas; estados; cidades, idades; classes; gêneros musicais, etc.
Informação técnica
O IRC é um protocolo aberto que usa TCP[5] e, opcionalmente, TLS. Um servidor IRC pode se conectar a outros servidores IRC para expandir a rede IRC.[6] Os usuários acessam redes IRC conectando um cliente a um servidor.[7] Existem muitas implementações de cliente (como mIRC, HexChat e irssi) e implementações de servidor (por exemplo, o IRCd original). A maioria dos servidores IRC não exige que os usuários registrem uma conta, mas um apelido é necessário antes de se conectar.[8]
O IRC era originalmente um protocolo de texto simples[5] (embora posteriormente estendido) que, a pedido, foi atribuído a porta TCP 194 pela IANA.[9] No entanto, o padrão de fato sempre foi executar o IRC em TCP 6667[10] e números de porta próximos (por exemplo, portas TCP 6660-6669 e 7000)[11] para evitar ter que executar o software IRCd com privilé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.[12] Isso pode causar problemas quando os usuários que usam clientes e (ou) plataformas diferentes desejam conversar.
Todos os protocolos IRC (cliente pra servidor) em uso hoje descendem do protocolo implementado na versão irc 2.4.0 do servidor IRC2 e documentado na RFC 1459. Desde a publicação da RFC 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 e RFC 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ário IRCX.[13] Posteriormente, eles pararam de distribuir software que suportasse o IRCX e desenvolveram o proprietário MSNP.
A estrutura padrão de uma rede de servidores IRC é uma árvore.[14] As mensagens são encaminhadas apenas para os ramos necessários da árvore, mas o estado da rede é enviado para cada servidor[15] 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[16] 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[17] 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 a multicast, o que significa que cada mensagem viaja por um link de rede exatamente uma vez.[18] Isso é um ponto forte em comparação aos protocolos 'não multicast', como o Simple Mail Transfer Protocol (SMTP) ou o Extensible 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).[19][20]
Comandos e respostas
O IRC tem uma estrutura baseada em linha. Os clientes enviam mensagens de linha única para o servidor,[21] recebem respostas para essas mensagens[22] 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.[23]
Canal
O meio básico de comunicação com um grupo de usuários em uma sessão de IRC estabelecida é através de um canal.[24] Canais em uma rede podem ser exibidos usando o comando IRC LIST,[25] 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 podem ingressar em um canal usando o comando JOIN,[26] na maioria dos clientes disponível como /join #nome do canal. As mensagens enviadas aos canais associados são então retransmitidas a todos os outros usuários.[24]
Os canais que estão disponíveis em uma rede IRC inteira são prefixados com um '#', enquanto aqueles locais para um servidor usam '&'.[27] Outros tipos de canais menos comuns incluem canais '+' (canais 'modeless', sem operadores)[28] e canais '!' (uma forma de canal timestamped em redes normalmente sem timestamped.[29]
Modos
Usuários e canais podem ter modos que são representados por letras simples que diferenciam maiúsculas de minúsculas[30] e são configurados usando o comando MODE.[31] 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 apenas convidados no canal[32]). 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.[33] Os modos que se aplicam a usuários em um canal têm um símbolo associado que é usado para representar o modo nas respostas de nomes[34] (enviada aos clientes na primeira entrada em um canal[26] 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 do IRC, isso tinha que ser codificado no cliente. Mas agora, existe uma extensão padrão de fato para o protocolo chamado ISUPPORT que envia essas informações ao cliente no momento da conexão usando o 005 numérico.[35][36]
Há uma pequena falha de design no IRC 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[34] 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.
Modos do padrão (RFC 1459)
Letra | Símbolo | Descrição |
---|---|---|
i | Invisível (não pode ser visto sem um canal comum ou sem saber o nome exato). | |
s | Recebe avisos do servidor. | |
w | Recebe wallops.[37] | |
o | O usuário é um operador de IRC (ircop). |
Letra | Símbolo | Parâmetro(s) | Descrição |
---|---|---|---|
o | @ | Nome do usuário afetado | Operador de canal (pode alterar os modos do canal e expulsar usuários do canal, entre outras coisas). |
s | Canal secreto (não mostrado na lista de canais ou whois de usuário, exceto para usuários que já estão no canal). | ||
p | Canal privado (listado na lista de canais como "prv" de acordo com RFC 1459). | ||
n | Os usuários não podem enviar mensagens para o canal externamente. | ||
m | O canal é moderado (apenas aqueles que possuem status de operador de canal ou status de voz no canal podem enviar mensagens para ele). | ||
i | Apenas usuários com convites podem entrar no canal. | ||
t | Apenas operadores de canal podem mudar o tópico do canal. | ||
l | Número limite | Limita o número de usuários que podem estar no canal (quando cheio, nenhum novo usuário pode entrar). | |
b | Máscara de proibição (apelido!usuário@host com caracteres curinga permitidos) | Bane máscaras de hosts do canal. | |
v | + | Nome do usuário afetado | Concede status de voz ao usuário no canal (veja +m acima). |
k | Nova chave de canal | Define uma chave de canal de forma que somente usuários que conheçam a chave possam entrar. |
Muitos daemons e redes adicionaram modos extras ou modificaram o comportamento dos modos na lista acima.[38][39][40][41]
Operadores de canal
Um operador de canal é um cliente em um canal 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.
- Alterar os bloqueios do modo de canal IRC.
Operadores IRC
Também há usuários que mantêm direitos elevados em seu servidor local ou em toda a rede, são chamados de operadores de IRC[42] e, às vezes, abreviados para IRCops ou Opers (não deve ser confundido com operadores de canal). Como a implementação do IRCd varia, também variam os privilégios do operador de IRC no IRCd fornecido. A RFC 1459[42] afirma que os operadores de IRC 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 no IRC, os operadores de IRC geralmente têm permissão para desconectar clientes e proibir completamente endereços IP ou sub-redes completas. Redes que transportam serviços geralmente permitem que seus operadores de IRC 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.
Máscara de host
Uma máscara de host é um identificador único de um cliente IRC conectado a um servidor IRC.[43][44] Servidores, serviços e outros clientes (incluindo bots) IRC podem usá-la para identificar uma sessão de IRC específica.
O formato de uma máscara de host é apelido!usuário@host
. A máscara de host é semelhante, mas não deve ser confundida com, um endereço de e-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 pelo protocolo ident no cliente.[45] Se o ident não estiver disponível no cliente, o nome de usuário especificado quando o cliente conectou-se é usado após ser prefixado com um til.[46]
A parte do host é o hostname do qual o cliente está se conectando. Se o endereço IP do cliente não puder ser resolvido para um hostname válido pelo servidor, ele (o endereço de ip) será usado em vez do nome do host.
Devido às implicações de privacidade de expor o endereço de IP ou o nome de host de um cliente, alguns daemons IRC também fornecem recursos de privacidade como o InspIRCD ou o modo "+ x" do UnrealIRCd. Isto criptografa um endereço de ip do cliente ou mascara parte do nome do host de um cliente (tornando-o ilegível para usuários que não sejam IRCops). Os usuários também podem ter a opção de solicitar um "host virtual" (ou "vhost"), exibido na máscara de host para permitir maior anonimato. Algumas redes IRC, como a Freenode, os usam como "disfarces" para indicar que um usuário é afiliado a um grupo ou projeto.[47]
Esquema URI
Existem três esquemas URI reconhecidos para o IRC: irc
, ircs
, e irc6
.[48] Quando suportados, eles permitem hiper ligaçõ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 ao host especificado (ou rede, se conhecido do cliente IRC) e ingressar no canal especificado.[49] Isso pode ser usado no próprio cliente ou em outro aplicativo (como um navegador da Web). O URI padrão é 'irc'. O 'irc6' especifica uma conexão a ser feita usando IPv6 e o 'ircs' especifica uma conexão segura.
De acordo com a especificação, o usual símbolo de hash (#) prefixado em nomes de canais que começam com um caractere alfanumé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 na URL.
Algumas implementações permitem que vários canais sejam especificados (separados por vírgulas).[50]
Desafios
Os problemas no design original do IRC eram a quantidade de dados de estado compartilhados[51][52] sendo uma limitação em sua escalabilidade,[53] a ausência de identificações de usuário exclusivas levando ao problema de colisão de apelidos,[54] falta de proteção de divisões de redes por meio de roteamento cíclico,[55][56] a compensação em escalabilidade por causa das informações de presença do usuário em tempo real,[57] fraquezas do protocolo fornecendo uma plataforma para abuso,[58] nenhuma passagem de mensagem transparente e otimizável[59] e ausência de criptografia.[60] Algumas dessas questões foram tratadas no IRC moderno.
Ataques
Como as conexões IRC podem não ser criptografadas e normalmente se estendem por longos períodos, elas são um alvo atraente para ataques DoS / DDoS e hackers. Por causa disso, uma política de segurança cuidadosa é necessária para garantir que uma rede IRC não seja suscetível a um ataque como uma guerra para assumir o controle. As redes IRC também podem listar em linha K ou linha G usuários ou servidores que tenham um efeito prejudicial.
Alguns servidores IRC suportam conexões SSL / TLS para fins de segurança. Isso ajuda a interromper o uso de programas analisadores de pacotes para obter as senhas de usuários de IRC, mas tem pouco uso além desse escopo devido à natureza pública dos canais de IRC. As conexões SSL requerem suporte ao cliente e ao servidor (que pode exigir que o usuário instale binários SSL e patches ou módulos específicos do cliente IRC em seus computadores). Algumas redes também usam SSL para conexões servidor a servidor e fornecem um sinalizador de canal especial (como +S
) para permitir apenas usuários conectados por SSL no canal, enquanto proíbe a identificação do operador em texto não criptografado, para melhor utilizar as vantagens que o SSL oferece.[61][62]
O IRC serviu como um primeiro laboratório para muitos tipos de ataques na Internet, como o uso de inacessíveis falsas mensagens ICMP para quebrar as conexões IRC baseadas no TCP (nuking) para incomodar os usuários ou facilitar assumir o controle (takeover).
Prevenção de abusos
Uma das questões técnicas mais controversas em torno das implementações de IRC, 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 protocolo IRC 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 pudesse entrar em um servidor "dividido", onde um canal que existia do outro lado da rede estava vazio, e obter status de operador, ele se tornaria um operador de canal do canal "combinado" após o término do netsplit; se um usuário pegou um apelido que existia do outro lado da rede, o servidor mataria os dois usuários ao se reingressar (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 abuso. Além de causar problemas dentro do IRC, isso encorajou as pessoas a conduzirem ataques de negação de serviço contra servidores IRC para causar netsplits, os quais eles então abusariam.
Predefinição:Anchor As estratégias de nick delay e channel delay visam prevenir abusos atrasando reconexões e renomeações. Depois que um usuário termina a sessão e o apelido fica disponível, ou um canal deixa de existir porque todos os seus usuários partiram ( como freqüentemente acontece durante uma divisão de rede), o servidor não permitirá que nenhum usuário 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 um agressor porque eles não podem pegar o apelido ou obter status de operador em um canal e, portanto, a colisão de um apelido ou 'fusão' de um canal não pode acontecer. Até certo ponto, isso é inconveniente para usuários legítimos, que podem ser forçados a usar brevemente um nome diferente após o retorno (anexar um sublinhado é comum).
O protocolo de timestamp é uma alternativa aos atrasos de nick / canal que resolve colisões usando a prioridade de timestamp. Cada apelido e canal na rede são atribuídos a um timestampPredefinição:Spaced ndashcom a data e hora em que foram criados. Quando ocorre um netsplit, 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 seu TS, é 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 seu status de operador de canal.
TS é um protocolo muito mais complicado do que ND / CD, tanto em design como em implementação, e 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), e permitindo muita clemência no que era permitido pelo lado 'perdedor'. Sob os protocolos TS originais, por exemplo, não havia proteção contra usuários definindo banimentos ou outros modos no canal perdedor que seriam então mesclados quando a divisão fosse reunida, mesmo que os usuários que configuraram esses modos perdessem seu status de operador de canal. Alguns servidores IRC modernos baseados em TS também incorporaram alguma forma de ND e / ou CD, além da marcação de tempo, em uma tentativa de conter ainda mais o abuso.
A maioria das redes hoje usa a abordagem de carimbo de data / hora. Os desacordos de timestamp versus ND / CD fizeram com que vários servidores se separassem da EFnet e formassem os mais novos IRCnet. Após a divisão, a EFnet mudou para um protocolo TS, enquanto a IRCnet usou ND / CD.
Em versões recentes do IRCnet ircd, bem como ircds usando o protocolo TS6 (incluindo Charybdis), ND foi estendido / substituído por um mecanismo chamado SAVE. Este mecanismo atribui a cada cliente um identificador exclusivo ao se conectar a um servidor IRC. Este ID começa com um número, que é proibido em nicks (embora alguns ircds, nomeadamente IRCnet e InspIRCd, permitam que os clientes mudem para o seu próprio UID como apelido).
Se dois clientes com o mesmo apelido se juntam de lados diferentes de um netsplit ("colisão de apelidos"), o primeiro servidor a ver esta colisão forçará ambos os clientes a mudarem seu nick para seu UID, evitando assim que ambos os clientes sejam desconectados. Na IRCnet, o apelido também ficará bloqueado por algum tempo (ND) para evitar que ambos os clientes voltem ao apelido original, colidindo novamente.
Clientes
Software cliente
O software cliente existe para vários sistemas operacionais ou pacotes de software, bem como jogos baseados na web ou internos. Muitos clientes diferentes estão disponíveis para os vários sistemas operacionais, incluindo Windows, Unix e Linux, Mac OS X e sistemas operacionais móveis (tais como iOS e Android). No Windows, mIRC é um dos clientes mais populares.[63]
Alguns programas extensíveis através de plug-ins também servem como plataformas para clientes IRC. Por exemplo, um cliente chamado ERC, escrito inteiramente em Emacs Lisp, está incluído na versão 22.3 do Emacs. Portanto, qualquer plataforma que pode executar o Emacs pode executar o ERC.
Vários navegadores têm clientes IRC integrados (como o Opera versões 12.18 e anteriores[64] e o complemento ChatZilla para Mozilla Firefox (56 e anteriores) incluído como um componente integrado do SeaMonkey). Clientes baseados na Web, como Mibbit e KiwiIRC de código aberto, podem ser executados na maioria dos navegadores.
Jogos como War§ow,[65] Unreal Tournament (até o Unreal Tournament 2004),[66] Uplink,[67] jogos baseados em Spring Engine, 0 A.D. e ZDaemon têm o IRC incluído.[68]
A interface de chat do Ustream é IRC com autenticação personalizada,[69] bem como a do Twitch (anteriormente Justin.tv).[70][71]
Bots
Um uso típico de bots no IRC é fornecer IRC services ou funcionalidade específica dentro de um canal, como hospedar um jogo baseado em chat ou fornecer notificações de eventos externos. No entanto, alguns bots IRC são usados para lançar ataques maliciosos, como negação de serviço, spamming ou exploração.[72]
Bouncer
Um programa que é executado como um daemon em um servidor e funciona como um proxy persistente é conhecido como BNC ou bouncer. O objetivo é manter uma conexão com um servidor IRC, atuando como um relé entre o servidor e o cliente, ou simplesmente atuar como um proxy. Caso o cliente perca a conectividade de rede, o BNC pode permanecer conectado e arquivar todo o tráfego para entrega posterior, permitindo ao usuário retomar sua sessão de IRC sem interromper sua conexão com o servidor.[73]
Além disso, como forma de obter um efeito semelhante ao do bouncer, um cliente IRC, normalmente baseado em texto (como o Irssi por exemplo), pode ser executado em um servidor sempre ativo ao qual o usuário se conecta via ssh. Isso também permite que dispositivos que têm apenas a funcionalidade ssh, mas nenhum cliente de IRC real instalado, se conectem ao IRC e permite o compartilhamento de sessões de IRC.[74]
Para evitar que o cliente IRC feche quando a conexão ssh for fechada, o cliente pode ser executado dentro de um terminal multiplexador, como GNU Screen ou tmux, 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 cliente IRC seguindo o modelo cliente-servidor, chamado Smuxi, foi lançado.[75][76]
Mecanismos de pesquisa
Existem vários motores de busca disponíveis para ajudar o usuário a encontrar o que procura no IRC.[77][78] Geralmente, o mecanismo de pesquisa consiste em duas partes, um "back-end" (ou "spider / crawler") e um "mecanismo de pesquisa" front-end.
O back-end (spider / webcrawler) é o cavalo de batalha do mecanismo de pesquisa. É responsável por rastrear servidores IRC 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). 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 pesquisa front-end também podem ser codificados em várias linguagens de programação.
A maioria dos mecanismos de pesquisa tem seu próprio spider, que é o único aplicativo responsável por rastrear IRC 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 cliente IRC; o add-on é o que envia ao banco de dados as informações do canal de quaisquer canais em que o usuário esteja.
Muitos usuários implementaram seus próprios motores de busca ad hoc usando os recursos de registro embutidos em muitos clientes IRC. Esses mecanismos de pesquisa são geralmente implementados como bots e dedicados a um determinado canal ou grupo de canais associados.
Codificação de caracteres
O IRC ainda carece de uma única convenção padrão globalmente aceita para como transmitir caracteres fora do repertório de 7 bits ASCII. Os servidores IRC normalmente transferem mensagens de um cliente para outro cliente como sequências de bytes, sem nenhuma interpretação ou recodificação de caracteres. O protocolo IRC (ao contrário, por exemplo, do MIME ou HTTP) carece de mecanismos para anunciar e negociar opções de codificação de caracteres. Isso colocou a responsabilidade de escolher o codec de caractere apropriado no cliente. Na prática, os canais de IRC têm usado amplamente as mesmas codificações de caracteres que também foram usadas pelos sistemas operacionais (em particular os derivados Unix) nas respectivas comunidades linguísticas:
- Era de 7 bits: Nos primeiros dias do IRC, especialmente entre os usuários de escandinavo e língua finlandesa, as variantes nacionais de ISO 646 eram dominantes como codificação de caracteres. Estes codificam caracteres (não ASCII) como Ä Ö Å ä ö å nas posições de código 0x5B 0x5C 0x5D 0x7B 0x7C 0x7D (ASCII: [ \ ] { | }). É por isso que esses códigos são sempre permitidos em apelidos. De acordo com RFC 1459, {|} em apelidos devem ser tratados como equivalentes em minúsculas de [\] respectivamente.[12] No final da década de 1990, o uso de codificações de 7 bits desapareceu em favor da ISO 8859-1 e tais mapeamentos de equivalência foram retirados de alguns daemons IRC.
- Era de 8 bits: Desde o início dos anos 1990, codificações de 8 bits como ISO 8859-1 tornaram-se comumente usadas para idiomas europeus. Os usuários russos podiam escolher KOI8-R, ISO 8859-5 e CP1251, e desde cerca de 2000, as redes IRC russas modernas convertem entre essas diferentes codificações comumente usadas do script cirílico.
- Era multibyte: Por muito tempo, os canais IRC do leste asiático com scripts logográficos na China, Japão e Coreia têm usado codificações multibyte, como EUC ou ISO-2022-JP. Com a migração comum de ISO 8859 para UTF-8 em plataformas Linux e Unix desde cerca de 2002, O UTF-8 tornou-se um substituto cada vez mais popular para muitas das codificações de 8 bits usadas anteriormente em canais europeus. Alguns clientes de IRC agora são capazes de ler mensagens em ISO 8859-1 ou UTF-8 no mesmo canal, detectando heuristicamente qual codificação é usada. A mudança para UTF-8 começou em particular no IRC de língua finlandesa (Merkistö (Finnish)).
Hoje, a codificação UTF-8 de Unicode / ISO/IEC 10646 seria o candidato mais provável para uma única codificação de caracteres padrão futura para todas as comunicações IRC, se tal padrão já relaxou a restrição de tamanho de mensagem de 510 bytes. O UTF-8 é compatível com ASCII e cobre o superconjunto de todos os outros padrões conjunto de caracteres codificados comumente usados.
Compartilhamento de arquivos
Muito parecido com o convencional compartilhamento de arquivos P2P, os usuários podem criar servidores de arquivos que lhes permitem compartilhar arquivos uns com os outros usando IRC bots ou scripts personalizados para seu cliente IRC. Freqüentemente, os usuários se agrupam para distribuir warez por meio de uma rede de bots IRC.[79]
Tecnicamente, o IRC não fornece mecanismos de transferência de arquivo; o compartilhamento de arquivos é implementado pelos clientes IRC, normalmente usando o protocolo DCC, no qual as transferências de arquivos são negociadas por meio da troca de mensagens privadas entre clientes. A grande maioria dos clientes de IRC oferece suporte para transferências de arquivos DCC, daí a visão de que o compartilhamento de arquivos é um recurso integral do IRC.[80] O uso comum desse protocolo, entretanto, às vezes também causa spam de DCC. Os comandos DCC também têm sido usados para explorar clientes vulneráveis para executar uma ação, como desconectar do servidor ou sair do cliente.
Ver também
- Direct Connect - rede de troca de arquivos que foi influenciada pelo IRC.
Referências
- ↑ «History of IRC (Internet Relay Chat)». daniel.haxx.se. Consultado em 19 de fevereiro de 2011
- ↑ «Index of /pub/academic/communications/logs/Gulf-War». www.ibiblio.org. Consultado em 19 de fevereiro de 2011
- ↑ «IRC is dead, long live IRC» (em English). pingdom. 24 de Abril de 2012. Consultado em 20 de Agosto de 2017
- ↑ Sabryna Esmeraldo (30 de Janeiro de 2017). «Relembre o que mais faz falta da internet dos anos 1990 e 2000». O Povo. Consultado em 20 de Agosto de 2017
- ↑ 5,0 5,1 Erro de citação: Marca
<ref>
inválida; não foi fornecido texto para as refs chamadasrfc 1459 1 introduction
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Predefinição:Cite IETF
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ 12,0 12,1 Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ «IRC daemons for LAN». Consultado em 2 de outubro de 2014
- ↑ «Running an own IRC server». Consultado em 2 de outubro de 2014
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ 24,0 24,1 Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ 26,0 26,1 Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ 34,0 34,1 Predefinição:Cite IETF
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ 42,0 42,1 Predefinição:Cite IETF
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Predefinição:Cite IETF
- ↑ [1]
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Harvnb 1.2.1 Growth
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Harvnb 1.2.2 Network failures
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Harvnb 1.2.3 Sociological and security aspects
- ↑ Predefinição:Cite IETF
- ↑ Predefinição:Cite IETF
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Smith, Roderick W. (8 de abril de 2000). «The Internet: Using IRC to Get Help». The Multi-Boot Configuration Handbook. Col: Handbook Series. Upper Saddle River, New Jersey: Que Publishing. p. 289. ISBN 978-0-7897-2283-6. Consultado em 25 de julho de 2010.
mIRC is one of the most popular Windows IRC clients.
- ↑ «Opera Browser Wiki: IRC Client». Consultado em 10 de abril de 2011. Cópia arquivada em 17 de março de 2011
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ «Twitch IRC». Twitch Help Center. 7 de abril de 2017. Consultado em 30 de outubro de 2017
- ↑ Canavan, John. «The Evolution of Malicious IRC Bots» (PDF). www.symantec.com. Symantec Security Response
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
- ↑ Erro em Lua em package.lua na linha 80: module 'Módulo:Citação/CS1/Sugestões' not found.
Ligações externas
- «Lista de redes por país» (em English)
- RFC 2812
- «Tutorial completo sobre IRC/mIRC em Português» (em português)
- Rank de Redes Segundo a IRC-Sources
- Rank de Redes Segundo a Netsplit.de
- Rank de Redes Segundo ao Mibbit
- Rank de Redes que utilizam LightIRC