검수요청.png검수요청.png

IRC

위키원
(Internet Relay Chat에서 넘어옴)
이동: 둘러보기, 검색

IRC(아이알씨)는 "Internet Relay Chat"의 약자로서, 인터넷을 이용해 여러 사용자가 채팅을 할 수 있도록 해 주는 프로토콜이다. 포트 번호는 194번이다.

아사달 스마트 호스팅 가로 배너 (since 1998).jpg
이 그림에 대한 정보
[아사달] 스마트 호스팅

상세[편집]

IRC는 인터넷 릴레이 챗(Internet Relay Chat)의 머리글자를 딴 것으로, 인터넷 실시간 대화를 뜻한다. 핀란드자코 오이카리넨(Jarkko Oikarinen)이 1988년에 개발하였다. 전세계를 실시간으로 연결해 대화(채팅)를 나눌 수 있는 범세계적인 채팅 프로그램으로, 처음에는 스칸디나비아반도를 중심으로 사용되다가 이후 세계 전역에서 사용되었다.

일반 PC통신과 비슷하지만, PC통신은 개인적인 성격인 강한 반면, IRC는 IRC 클라이언트 프로그램이나 IRC 클라이언트를 제공하는 서버에 접속하기만 하면 시간이나 공간에 구애받지 않고 전세계의 어떤 사람과도 대화가 가능하다. 동시에 다중 대화가 가능한 채팅 프로그램이다. 가장 큰 특징은 다른 채팅 프로그램과 달리, 서버들이 가까운 서버들끼리 직접·간접으로 연결되어 있어 IRC 서버 가운데 어느 한 서버에 연결하기만 하면 자동적으로 전 세계 서버와 연결된다는 점이다. 또 수많은 사용자들을 위해 별도로 대화를 할 수 있는 다양한 채널을 가지고 있고, 관심 분야에 따라 이 채널에서 저 채널로 옮겨다닐 수도 있다.

채널은 공개채널·개인채널·비밀채널로 구분되며, 채널 고유의 이름이 없을 때는 자동적으로 새 채널 이름이 생성된다. 대화는 대부분 영어로 이루어지지만, 다른 언어를 사용할 수도 있다. 버전은 1993년 발표된 RFC-1459가 2000년까지 사용되었으나, 2005년 기준 RFC 2810~2813이 주로 사용되고 있다. 보통 사용되는 포트는 6667과 6668이며, 통신 프로토콜은 TCP를 사용한다. 유럽·북아메리카에서 사용하는 네트워크 외에 윈도우용·매킨토시용·유닉스용 클라이언트 프로그램 등 다양한 네트워크와 클라이언트 프로그램을 갖추고 있다. 한국에서도 접속할 수 있다.[1]

역사[편집]

IRC는 "WiZ"란 별명을 사용하던 자코 오이카리넨(Jarkko Oikarinen)이 핀란드의 한 BBS에서 쓰이던 채팅 프로그램을 대체하기 위해, 1988년 8월에 제작했다. 오이카리넨은 비트넷(Bitnet)에서 쓰이던 비트넷 릴레이 챗(Bitnet Relay Chat)에서 힌트를 얻어 IRC를 만들었다. IRC는 정보통제로 베일에 가려있던 철의 장막 뒤에서 차츰 붕괴되어가던 소련의 모습을 외부에 알려주는 매개체로 기능하면서 이름을 날렸고, 이후 걸프전 때에도 비슷한 방식으로 쿠웨이트에서의 실상을 외부에 알렸다.

특징[편집]

과거 2000년대의 윈도우 라이브 메신저(Windows Live Messenger)나 네이트온 같은 메신저들은 일대일 대화를 기본으로 삼는 것에 비해, 채널을 개설하는 다대다 대화를 기본으로 삼기 때문에 특정 기호를 가진 사람들이 모이는 장소로 사용되고 있었다. 그래서 IRC 클라이언트를 처음 설치하면 기본적으로 서버와 채널부터 설정해야 한다. 대부분 메신저 서비스는 이런 설정을 할 필요가 없지만 IRC는 프로토콜부터가 그렇게 설계되었다. 그러나 다른 대부분의 메신저 서비스와는 다르게 IRC는 프로토콜이 정식으로 공개되어 있고, 많은 IRC 클라이언트가 스크립트 기능을 지원하며, 마음에 들지 않으면 IRC 클라이언트를 직접 만들어도 되기 때문에, 이를 이용해 IRC 상에서 웹페이지 정보를 읽어 온다던가 간단한 게임을 제작한다던가 심지어 타 메신저와 연동이나 P2P로 사용할 수도 있었다.[2]

스크립트를 자기가 마음대로 짤 수도 있고, 개조판 mIRC의 상당수는 자체 개발 스크립트를 넣고 디자인을 변경한 식이다. 심지어는 이를 통해 봇을 만드는 경우도 있었다. 서버 운영 측에서 제공해주는 채널 운영용 봇인 챈섭(Chanserv ; Channel Service)[3]나, HanIRC에서 챈섭을 개조한 빵글이가 있었다.[4]

기술 정보[편집]

IRC는 TCP 기반의 공개 네트워크 프로토콜으로, TCP뿐만이 아니라 TLS을 지원하기도 한다. IRC 서버는 IRC 네트워크 확장을 목적으로 다른 IRC 서버들로 접속이 가능하다. 사용자들은 클라이언트를 서버에 연결함으로써 IRC 네트워크에 접근한다.[5]

IRC 프로토콜은 RFC를 통해 공개되어 있다. IRC에 관한 최초의 RFC는 RFC 1459이며, 이후 2000년에 이를 개정해 RFC 2810, RFC 2811, RFC 2812, RFC 2813의 네 개로 정리하였다. IRC 프로토콜은 초기에는 평문 프로토콜로 정의되었으며, 이후 확장되었다. IRC 접속 포트는 IANA에서 194/TCP를 할당해 두었지만, 많은 운영 체제에서 이 포트를 사용하려면 특별 권한이 필요하기 때문에, 대부분의 서버에서는 6667/TCP 포트를 사용한다.[5]

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

현존하는 모든 클라이언트-서버 IRC 프로토콜들은 IRC2서버의 irc2.8 버전에서 구현된 프로토콜에서 나왔다. 이 프로토콜은 RFC 1459 문서에 규정되어 있다. RFC 1459가 발표된 이래로, irc2.10 버전 구현의 새 기능들 때문에, RFC 2810, RFC 2811, RFC 2812 등등의 여러 개정판 프로토콜이 발표되었다. 그러나 이 개정판 프로토콜들은 많은 구현에서 채택되지는 않고 있다. IRC 프로토콜에 대한 많은 규격 문서들이 발표되었지만, 공식 규격 문서는 존재하지는 않는다. 위에서 말한 RFC들을 참조 삼아 엄격하게 구현한 클라이언트는 거의 하나도 없다고 해도 과언이 아니다.[7]

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

문제점[편집]

기술적 문제[편집]

IRC 프로토콜은 오래되었는데도 불구하고 그 이후에 큰 변화가 없었다. 이런 관계로 지금의 컴퓨터 사용 환경과는 맞지 않는 부분이 많다. 예를 들어 닉네임이 영문(ASCII)만 가능하다. 한글 닉네임을 사용할 수 없다. 영문 닉네임만 쓸 수 있는 건 IRC 서버 설정도 아니고 RFC1459 표준에서 그렇게 강제하고 있다. 한글 닉네임이 되는 대한민국 내의 IRC 네트워크는 수정된 서버 소프트웨어를 사용한다.

또 프로토콜은 아주 기본적인 부분만을 정의하고 있을 뿐이고 각종 확장된 기능을 챈섭(Chanserv)이나 닉섭(Nickserv)과 같은 봇을 통해 구현하게 되는데 그 방식이 서버 구현마다 다 다르다. 일례로 채널이나 사용자의 모드 설정 같은 경우 이미 여러가지 서버 구현마다 알파벳 대소문자 52개를 다 쓰고 있는데 서버 구현마다 의미가 다른 경우가 많다.[4]

악성코드[편집]

악성코드에 감염된 컴퓨터는 사용자 몰래 IRC 서버에 접속하는 증상을 보이기도 한다. 악성코드가 IRC 클라이언트가 되는 것이기 때문에 기존에 클라이언트가 설치되어있는지 여부와도 상관이 없다. 이는 공격자가 감염된 컴퓨터 수천대를 추가적인 접속 기록 없이 몰래 조정하기 위한 공격 기법이다.

그렇기 때문에 많은 백신보안 프로그램들이 IRC 클라이언트를 유해 프로그램으로 보고 강제로 차단하는 사태도 나온다. 이럴 때는 버전을 바꾸든가, 보안 프로그램의 설정을 바꾸든가, 아예 그 보안 프로그램을 쓰지 않아야 한다.[4]

각주[편집]

  1. IRC ( Internet Relay Chat )〉, 《두산백과》
  2. 둥당둥당동, 〈네트워크 통신 프로토콜 - TCP, UDP, IRC〉, 《티스토리》, 2022-04-08
  3. 챈섭〉, 《위키백과》
  4. 4.0 4.1 4.2 IRC〉, 《나무위키》
  5. 5.0 5.1 5.2 J. Oikarinen, 〈Internet Relay Chat Protocol〉, 《Datatracker》, 1993-05
  6. 한울, 〈IRC 프로토콜〉, 《네이버 블로그》, 2007-05-27
  7. BOTNET 을 파헤쳐라. (2. IRC란 무엇인가?)〉, 《티스토리》, 2009-04-09
  8. 인터넷 릴레이 챗〉, 《위키백과》

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 IRC 문서는 인터넷에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.