IRC

위키백과 ― 우리 모두의 백과사전.

다른 뜻·사람에 대해서는 IRC (동음이의) 문서를 참고하십시오.
인터넷 프로토콜 스위트
응용 계층 FTP, HTTP, HTTPS, IMAP, IRC, NNTP, POP3,
SMTP, SIP, SNMP, SSH, UUCP, DNS...
전송 계층 TCP, UDP, SCTP, DCCP, ...
네트워크 계층 IP, IPv4, IPv6, ICMP, ARP, IGMP, ...
데이터링크 계층 이더넷, FDDI, PPP, ...
물리적 계층 RS-232, EIA-422, RS-449, EIA-485...

인터넷 릴레이 채트(Internet Relay Chat), 줄여서 IRC(아이아르시)는 서버 클라이언트 모델을 이용해 인터넷을 통해 실시간 채팅을 나눌 수 있도록 해주는 프로토콜 중 하나이다. IRC는 주로 채널이라 불리는 채팅방에 여러 사용자가 모여 동시에 대화를 나누는 데에 이용된다. 보통 텍스트만이 전송되며, DCC를 사용하면 파일도 주고받을 수 있어 파일 공유에 이용되기도 한다.

IRC는 "WiZ"란 별명을 사용하던 Jarkko Oikarinen가 핀란드의 한 BBS에서 쓰이던 채팅프로그램을 대체하려고 1988년 8월에 만들었다. Oikarinen은 Bitnet에서 쓰이던 Bitnet Relay Chat 에서 힌트를 얻어 IRC를 만들었다고 한다.

IRC는 정보통제로 베일에 가려있던 철의 장막 뒤에서 차츰 붕괴되어가던 소련의 모습을 외부에 알려주는 매체로 기능하면서 이름을 날렸고, 후에 걸프전 때에도 쿠웨이트에서의 실상을 비슷한 방식으로 외부에 알렸다.

RFC1459가 IRC에 관한 최초의 RFC 이며, 이후 2000년에 RFC2810-13까지 나와있다. 현재 이용되고 있는 IRC의 프로토콜은 주로 IRC 2이며 RFC 1459 또한 IRC 2에 관한 것이다.

전통적인 채팅 프로토콜로 수많은 네트워크와 클라이언트들이 존재한다.

목차

[편집] 기술적인 정보

IRC는 일종의 TCP 기반의 공개 네트워크 프로토콜이다. 선택적으로 SSL까지도 사용한다. 응용 계층(영어: Application Layer)에 속한다. 일개의 IRC 서버는 타 IRC 서버에 연결될 수 있으며, 이로써 IRC 네트워크는 확장된다. 사용자들은 클라이언트를 서버에 접속시킴으로써 IRC 네트워크에 접근한다. 현재는 많은 서버 및 클라이언트 구현들이 나와 있다. mIRC, 바하무트 IRCd 등등이 그 예이다. 대개 IRC 서버들은 사용자가 로그-인할 것을 요구하지는 않으나, 사용자는 접속하기 전 닉네임을 설정해야 할 수도 있다.

IRC는 최초에는 플레인 텍스트였으나, 나중에 확장되어 일종의 프로토콜이 되었다. ([1]) IRC의 리퀘스트에 관하여는 IANA에 의해 포트 번호 194/TCP가 할당되어 있다. [1] 그러나, 사실상(영어: de facto) 서버는 포트 번호 6667번에서 운영된다. IRC 데몬 소프트웨어들이 루트 권한을 꼭 가지고 운영되어야 하는 것을 피하기 위해서이다. 텔넷이나 넷캣 같은 기본적인 바이트-스트림 클라이언트를 써서도 IRC를 이용할 수 있기는 하다. 단, 매우 불편하다.

IRC 프로토콜은 문자는 8 bit라고만 규정하고 있을 뿐, 이용하는 텍스트에 대한 문자 인코딩은 규정하고 있지 않다. IRC가 생겨났을 당시에는 한 인코딩만 지원하는 텍스트 터미널만 줄창 쓰였고, IRC 프로토콜 설계자들은 IRC 사용자간 대화가 호환 가능한 인코딩 하에서 이루어질 것이라고 단순히 생각했었다. IRC 프로토콜의 이러한 성격은, 사용자들이 서로 다른 클라이언트와 (혹은) 다른 플랫폼 상에서, 영어를 제외한 다른 언어를 써서 서로 대화하고자 할 때 문제가 되기도 한다.

현존하는 모든 클라이언트-서버 IRC 프로토콜들은 IRC2server의 irc2.8 버전에서 구현된 프로토콜에서 나왔다. 이 프로토콜은 RFC 1459 문서에 규정되어 있다. RFC 1459가 발표된 이래로, irc2.10 버전 구현의 새 기능들 때문에, RFC 2810, RFC 2811, RFC 2812 등등의 여러 개정판 프로토콜이 발표되었다. 그러나 이 개정판 프로토콜들은 많은 구현에서 채택되지는 않고 있다.

IRC 프로토콜에 대한 많은 스펙 문서들이 발표되었지만, 공식적인 스펙 문서는 존재하지는않는다. 위에서 말한 RFC들을 레퍼런스로 삼아 엄격하게 구현한 클라이언트는 현재 거의 하나도 없다고 해도 과언이 아니다.

IRC 서버들의 표준적인 구조는 일종의 트리(비순환 그래프)를 이룬다. 메시지들은 트리 내에서 전달에 필요한 가지(영어: branch)들만을 따라 전달된다. 반면에 네트워크 스테이트(network state)는 모든 서버에게 전송된다. 일반적으로 매우 높은 수준의 비명시적 신뢰 관계가 서버들 사이에 존재한다. 이 아키텍처는 몇 가지 문제점을 가지고 있다; 잘못 동작하는 서버나 악의적으로 놓여진 서버가 IRC 네트워크에 치명적인 손실을 가져다 줄 수도 있다. 의도적인 것에 의한 결과이든 하부 네트워크의 상황에 따른 결과이든 구조의 어떠한 변경은, 넷-스플리트(net-split)이나 넷-조인(net-join)을 요구할 수도 있다. 이로 인해 수많은 네트워크 트래픽과 가짜의 나감/들어옴(quit/join) 메세지가 유발되어 잠시 통신 연결이 손실될 수도 있다. 또한 구조의 어떠한 변경은 대규모의 네트워크에 서버를 하나 추가한다는 셈이 되는데, 이것은 많은 네트워크에 백그라운드 밴드위스 부하를 가져다 주고, 서버에 많은 메모리 부하를 야기한다.

서버 단의 IRC 프로토콜에 대한 얘기와 다양한 종류의 IRCd 데몬들에 대해서는 IRC 데몬이라는 문서를 참조하라.

[편집] 명령과 응답

[편집] 채널

[편집] 모드

[편집] IRC 오퍼레이터

[편집] 보안 관련

[편집] 남용 방지

[편집] 닉네임/채널 딜레이

[편집] 타임스탬핑

[편집] 사소한 것들

마이크로소프트에서 IRC 프로토콜을 변형하여 1998년 IRCX라는 것을 내놓았다. 당시 IRC 네트워크가 직면했던 문제점들의 일부만을 해결하였다. 사람들은 당시 이것에 대해 "시기상조"라고 느꼈다고 한다.


[편집] 바깥 고리

[편집] 네트워크

[편집] 해외

[편집] 대한민국

[편집] IRC 클라이언트