# Internet Relay Chat

IRC (Internet Relay Chat) es un protocolo de comunicación en tiempo real basado en texto que permite debates entre dos o más personas. Se diferencia de la mensajería instantánea en que los usuarios no deben acceder a establecer la comunicación de antemano, de tal forma que todos los usuarios que se encuentran en un canal pueden comunicarse entre sí, aunque no hayan tenido ningún contacto anterior. Las conversaciones se desarrollan en los llamados canales de IRC, designados por nombres que habitualmente comienzan con el carácter # o & (este último solo es utilizado en canales locales del servidor). Es un sistema de charlas ampliamente utilizado por personas de todo el mundo.
Los usuarios del IRC utilizan una aplicación cliente para conectarse con un servidor, en el que funciona una aplicación IRCd (IRC daemon o servidor de IRC) que gestiona los canales y las conversaciones murales.

## Historia

IRC fue creado por Jarkko Oikarinen en agosto de 1988 con el motivo de reemplazar al programa MUT (talk multiusuario) en un BBS llamado OuluBox en Finlandia. Oikarinen se inspiró en el Bitnet Relay Chat, el cual operaba en la red Bitnet.
Fue utilizado en el intento de golpe de Estado en la Unión Soviética de 1991 para informar a través de un periodo de censura en los medios y por los kuwaitíes durante la primera guerra del Golfo, eventos tras los cuales el IRC ganó popularidad.
Durante la primera mitad de la década de los 2000, la mayoría de redes vivieron un rápido incremento de usuarios, correspondiente con la popularización de Internet y especialmente de las redes de Chat. Desde entonces, la mayoría de redes ha sufrido un estancamiento o un retroceso en el número de usuarios, a pesar de la mayor implantación de Internet. La caída coincide con la popularización de otro tipo de redes, como la mensajería instantánea o las redes sociales.

## Glosario

* Owner: en algunas redes o servidores suelen tener un ~ antes del nick. Se les denomina dueños del canal y tienen el poder de dar los rangos automáticamente.
* Cliente: nombre genérico dado al software con el cual nos conectamos a las diferentes redes.
* Redes: conjunto de diferentes servidores a los que se pueden conectar los usuarios para acceder a un mismo contenido. Ejemplos de redes son DALnet, Undernet, Quakenet, EFnet, Freenode, IRC-Hispano, MindForge, Libera Chat o BrasChat.
* Nickname o Nick: pseudónimo con el que se nos conocerá.
* Idle: tiempo sin hablar de un usuario, o sea inactivo.
* Away: ausencia, normalmente va acompañado de un motivo.
* Bot (robot): Es un cliente conectado a un servidor que responde automáticamente a órdenes o a ciertas acciones, por lo regular no hay un humano detrás de ese cliente.
* IRCop (IRC Operator): Persona encargada de gestionar y mantener la red.
* HostSetter: es un usuario con privilegios para asignar, remover y cambiar host virtuales (vhost) en redes con servicio del tipo Anope.
* Operador: es un usuario con privilegios de administrador en un canal en específico. Suele tener una @ antes del nick.
* Half-Op o medio operador: Son usuarios con privilegios para administrar un canal, pero menos que los operadores. Solo existen en algunas redes y tienen un % como símbolo antes del nick.
* Helper: Persona que sirve de ayudar a los demás con comandos, generalmente personas nuevas en IRC
* Lag: tiempo que tarda en llegar un mensaje que se envía a otro usuario, si es más de 30 s de lag es recomendable tratar de conectar otro servidor.
* Netsplit: sucede cuando un servidor pierde el enlace de comunicación con el resto de la red.
* MOTD: (Message of The Day). Es el mensaje del día de un servidor, por lo regular estos mensajes incluyen las reglas e información del servidor que estamos utilizando.
* Flood: consiste en enviar gran cantidad de datos a un usuario o canal, normalmente con la finalidad de molestar o desconectar a otros usuarios.
* Clon: un Clon es una conexión al IRC de un usuario usando una conexión ya abierta, con la misma IP.
* K-Line: es la prohibición de entrar por un determinado servidor de IRC, normalmente por saturación o por reconectar demasiado rápido, aunque en algunas redes existan k-lines diferentes por acciones inapropiadas, la solución a un k-line es entrar por otro servidor del IRC.
* Nuke: ataque utilizando envíos de "paquetes" para provocar la desconexión, la mejor defensa es instalarse un firewall.
* PING?PONG!: esto aparece en nuestra ventana del estatus, y es la comprobación que hace el servidor para ver si nuestra conexión está activa y si llevamos algún tiempo sin enviar ningún dato, y si nuestro ordenador no contesta, cortará la comunicación. También un PING escrito así /ctcp nick ping sirve para ver el lag del nick que queramos.
* TakeOver: es la apoderación de un canal por usuarios que no tenían privilegios anteriorimente, por ejemplo aprovechando un split.
* Kickear: expulsa un usuario de un canal. Solo puede ser realizado por un op.
* Banear: impide la entrada de un usuario en un canal. Si el usuario se encontraba en él no podrá hablar, ni volver una vez salga o sea expulsado. Solo puede ser realizado por alguien con @ o %.
* ChanServ: canal genérico destinado a la gestión de los canales específicos, facilitando su administración, a través de órdenes o comandos e impidiendo la acción de takeovers o usurpadores

## Clientes

Después de la primera implementación de Jarkko Oikarinen, han surgido una gran cantidad de implementaciones distintas de clientes IRC, tanto como programas independientes, como mIRC, Irssi, Konversation o X-Chat de los más populares, como integradas dentro de otros programas, como Chatzilla.
Se destaca también la utilización de distintos scripts, los cuales tienen como finalidad tomar un cliente existente de IRC como plataforma para el desarrollo de distintos scripts los cuales añaden funcionalidades extra y facilitan la operación de diversos clientes IRC. En este caso se destacan Looksharp, NavIRC, IRCap, Xscript, entre otros.

## Detalles técnicos

IRC se definió originalmente como un protocolo de texto plano (extendido posteriormente), al que IANA asignó el puerto 194/TCP. De todos modos el estándar de facto siempre ha sido utilizar IRC en el puerto 6667/TCP y otros cercanos (por ejemplo los puertos TCP 6660–6669, 7000) para evitar tener que ejecutar el servicio IRCd con privilegios de Root.

### Servidores

Algunos de los programas responsables del funcionamiento del IRC son:
* Libera Chat
* Unreal IRCd
* Conference Room 4.5
* Freenode
* Inspire IRCd
* iRC-Hispano IRCd

### Servicios

Además de los Servidores y Clientes, en IRC se usan actualmente diversos programas que entregan servicios tanto a la red en general, como a los usuarios en forma específica. Algunos servicios como NickServ, ChanServ, MemoServ, HelpServ, HostServ, OperServ y StatServ son básicos en el funcionamiento de las redes de IRC.
Algunos de los servicios más usados en IRC son:
* Anope IRC Services
* Epona IRC Services
* Atheme
* Denora Stats
* NeoStats

## Utilidades

El IRC es popularmente utilizado para hablar, hacer amigos y reunir grupos de gente con los mismos gustos o transferir datos. Para ello, cualquier persona puede iniciar el canal específico. Además de esto un canal de IRC también es utilizado como sitio para compartir archivos. Los hay especializados en música y en libros, entre otros. Otra modalidad muy utilizada es la de los juegos, en el que se destacan los Cyberjuegos, habiendo cientos de canales en todos los servidores.