맨위로가기

IRC

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

IRC(Internet Relay Chat)는 1988년 야르코 오이카리넨이 개발한 실시간 텍스트 기반 통신 프로토콜이다. 핀란드에서 시작되어 소련의 붕괴와 걸프 전쟁 당시 정보를 공유하는 데 사용되며 인기를 얻었다. IRC는 TCP 기반의 공개 프로토콜로, 서버 간 연결을 통해 네트워크를 확장하며, 클라이언트를 통해 접속한다. 채널을 통해 사용자 간 소통이 이루어지고, 봇과 바운서를 활용하여 기능을 확장할 수 있다. 다양한 클라이언트와 봇이 존재하며, 1990년대 후반부터 2000년대 초반까지 한국에서도 활발히 사용되었으나, 소셜 미디어의 등장으로 사용자가 감소했다. 주요 IRC 네트워크로는 EFnet, Undernet, DALnet, freenode 등이 있다.

더 읽어볼만한 페이지

  • IRC - 서비스 거부 공격
    서비스 거부 공격(DoS)은 시스템의 가용성을 저해하는 사이버 공격으로, 서비스 충돌 또는 범람을 유발하며, 분산 서비스 거부 공격(DDoS)과 다양한 공격 기술, DoSaaS 등장 등 여러 형태로 발전해 왔고, 업스트림 필터링, 방화벽 등 방어 기술을 통해 대응하며, 관련 법률 위반 시 처벌받을 수 있다.
  • IRC - 엑스챗
    엑스챗은 다양한 운영체제에서 작동하는 IRC 클라이언트로, 여러 언어의 플러그인을 지원하며, 윈도우 버전의 셰어웨어 전환으로 저작권 논쟁이 있었고 비공식 무료 버전이 배포되기도 했다.
  • 핀란드의 발명품 - 사우나
    사우나는 핀란드에서 유래한 뜨거운 방에서 증기욕을 즐기는 시설 또는 행위로, 건식과 습식으로 나뉘며 혈액 순환 촉진, 스트레스 해소 등의 효과가 있어 전 세계적으로 이용되고 핀란드 문화의 중요한 요소이다.
  • 핀란드의 발명품 - 단문 메시지 서비스
    단문 메시지 서비스(SMS)는 휴대전화로 짧은 텍스트 메시지를 주고받는 서비스이며, 1980년대 초에 시작되어 2세대 이동 통신 시스템에서 표준으로 채택되었고, 개인 간 통신 및 다양한 분야에서 활용되지만 스팸, 스미싱 등의 문제점도 존재한다.
  • 1988년 소프트웨어 - 윈도우 2.1x
    윈도우 2.1x는 1988년 마이크로소프트에서 출시한 운영 환경으로, CPU에 따라 Windows/286과 Windows/386으로 나뉘며, 후자는 보호 모드 커널 도입과 확장 메모리 지원 등 기능 개선이 이루어졌고, 1990년에는 한국어 버전도 출시되었다.
  • 1988년 소프트웨어 - 어도비 포토샵
    어도비 포토샵은 1987년 토마스 놀이 개발한 이미지 처리 소프트웨어를 기반으로 1990년 출시된 래스터 그래픽 편집기로, 현재 디자인, 출판, 광고 등 다양한 분야에서 이미지 편집 및 합성을 위한 업계 표준 소프트웨어로 사용되며 어도비 크리에이티브 클라우드 구독 서비스로 제공된다.
IRC
프로토콜 개요
이름인터넷 릴레이 챗
영어 이름Internet Relay Chat
약칭IRC
목적인스턴트 메시지
개발자야르코 오이카리넨
개발 시작일1988년 8월
기반없음 (직접 개발)
영향디스코드
관련 표준화 그룹http://ircv3.net/ (표준화 프로세스 워킹 그룹)
OSI 모델 계층응용 계층
기본 포트6667, 6697
RFChttps://datatracker.ietf.org/doc/html/rfc1459
기술 상세
통신 방식일대다 통신
일대일 통신지원

2. 역사

인터넷 릴레이 챗(IRC)는 1988년 8월 핀란드의 야르코 오이카리넨(Jarkko Oikarinen, 별명 "WiZ")이 개발한 실시간 인터넷 채팅 시스템이다.[104][6] 당시 오울루 대학교의 게시판 시스템(BBS)에서 사용되던 프로그램을 대체할 목적으로 만들어졌으며,[6] BITNET 네트워크의 채팅 시스템에서 영감을 얻었다.[7][105]

IRC는 개발 초기부터 중요한 정보 전달 수단으로 기능하며 그 이름을 알렸다. 특히 철의 장막이 무너지던 시기 동유럽 내부의 소식을 전하거나,[112][9] 1991년 걸프 전쟁 당시 언론 통제 속에서 쿠웨이트 현지의 상황을 실시간으로 외부에 알리는 등[113][10] 제한된 정보 환경 속에서 중요한 소통 창구 역할을 수행했다. 이러한 과정을 통해 IRC는 검열을 피해 자유롭게 정보를 교환하는 상징적인 플랫폼 중 하나로 인식되었다.

시간이 흐르면서 사용자 증가와 네트워크 운영 방식에 대한 의견 차이 등으로 여러 차례 분화가 이루어졌다. 1990년 EFnet의 형성을 시작으로,[6][8] 1992년 언더넷,[6] 1994년 DALnet,[6] 1996년 IRCnet[6][13] 등 주요 네트워크들이 독자적인 기술과 정책을 바탕으로 발전해 나갔다. 1993년에는 IRC의 기본적인 작동 방식을 정의한 RFC 1459[12] 문서가 발표되어 프로토콜 표준화의 기반을 마련하기도 했다.

2. 1. 탄생과 초기 발전

최초의 IRC 서버 tolsun.oulu.fi (2001년)


인터넷 릴레이 챗(IRC)은 1988년 8월, 핀란드 오울루 대학교의 야르코 오이카리넨(Jarkko Oikarinen, 별명 "WiZ")에 의해 개발되었다.[104] 당시 그는 대학 내 게시판 시스템(BBS)인 오울루박스(OuluBox)에서 사용되던 MUT(MultiUser Talk)라는 프로그램을 대체할 목적으로 IRC를 만들었다.[6] 오이카리넨은 정보 처리 과학과에서 일하며 BBS 소프트웨어를 확장하여 유즈넷 스타일의 뉴스 기능, 실시간 대화 기능 등을 추가하려 했고, 그중 채팅 부분을 가장 먼저 구현했다. 이 과정에서 그는 BITNET 네트워크에서 운영되던 비트넷 릴레이(Bitnet Relay Chat)라는 채팅 시스템에서 영감을 얻었다.[7][105]

최초의 IRC 서버는 오울루 대학교의 `tolsun.oulu.fi`였다.[6] 오이카리넨의 친구인 유르키 쿠오팔라(Jyrki Kuoppala)는 IRC 코드를 오울루 외부에서도 사용할 수 있도록 공개할 것을 요청했고, 코드가 공개되자 즉시 다른 서버를 설치하며 최초의 IRC 네트워크가 형성되었다. 이후 오이카리넨은 헬싱키 공과대학교와 탐페레 공과대학교의 친구들에게 서버 운영을 요청했고, 다른 대학들도 이에 동참하면서 핀란드 내에서 IRC 네트워크가 확장되었다.[7][6]

IRC는 핀란드를 넘어 국제적으로 확산되기 시작했다. 미국덴버 대학교오리건 주립 대학교에서 자체 IRC 네트워크를 운영하던 이들이 핀란드 네트워크와의 연결을 원했고, 오이카리넨의 친구이자 최초의 비(非)핀란드인 IRC 사용자인 비자이 수브라마니암(Vijay Subramaniam)을 통해 프로그램을 얻었다. 이후 IRC는 핀란드 전국 네트워크인 FUNET과 스칸디나비아 지역 인터넷망인 NORDUnet에 연결되었고, 1988년 11월에는 인터넷 전체로 퍼져나갔다. 1989년 중반에는 전 세계적으로 약 40개의 IRC 서버가 운영될 정도로 성장했다.[6]

1990년 8월, 초기 IRC 네트워크에서 첫 번째 주요 분열이 발생했다. 비밀번호 없이 누구나 자유롭게 접속 가능했던 `eris.berkeley.edu` 서버를 포함한 "A-net"(Anarchy net)과 기존 네트워크 운영자들 사이에 갈등이 생겼다. 특히 "와일드카드 서버 라인" 문제로 닉네임 충돌 등이 발생하자,[8] 기존 운영자들은 `eris` 서버를 네트워크에서 분리(Q-line)했고, 이에 반발한 A-net 측과 분리되어 "Eris Free Network", 즉 EFnet이 탄생했다. 결국 대부분의 서버와 사용자들이 EFnet을 선택하면서 A-net은 해체되었고, EFnet이 사실상 유일한 IRC 네트워크로 남게 되었다.[6][8]

IRC는 개발 초기부터 중요한 정보 전달 매체로 기능하며 이름을 알렸다. 특히 1991년 걸프 전쟁 당시 쿠웨이트의 상황[113]이나, 같은 해 소련에서 발생한 1991년 소련 쿠데타 시도 당시 언론 통제 속에서 현지 상황을 외부 세계에 알리는 데 중요한 역할을 수행했다.[112][9][10] 이러한 사건들의 채팅 기록은 ibiblio 아카이브에 보존되어 있다.[11]

2. 2. 주요 네트워크의 분리와 발전



IRC는 정보 통제가 심했던 소련의 붕괴 과정을 외부에 알리는 중요한 역할을 했으며[112][9], 걸프 전쟁 당시에도 쿠웨이트의 상황을 실시간으로 전하는 통로로 사용되었다.[113][10] 이러한 사건들의 채팅 로그는 ibiblio 아카이브에 보존되어 있다.[11]

1990년 8월, 초기 IRC 네트워크에서 첫 주요 분열이 발생했다. 'A-net'이라는 네트워크의 eris.berkeley.edu 서버는 비밀번호나 연결 수 제한 없이 운영되어 혼란을 야기했다.[8] 이에 Greg "wumpus" Lindahl 등 운영자들은 eris 서버를 네트워크에서 분리(Q-line)했고, eris 서버를 제외한 서버들이 모여 EFnet(Eris Free Network)을 형성했다. A-net은 곧 해체되었고 EFnet이 유일한 주요 네트워크가 되었다.[6]

1992년 10월, EFnet에서 또 다른 분리가 시도되었다. 미국에서 "Wildthang"이 봇 개발 테스트를 위해 시작한 네트워크는 곧 유럽, 캐나다 등으로 확장되었고, 이들이 연결되어 언더넷(Undernet)이 탄생했다.[6] 언더넷은 EFnet의 문제점이었던 과도한 대역폭 사용과 넷스플릿, 채널 점거 문제를 해결하기 위해 타임스탬프 도입, 새로운 라우팅 방식 구현, 채널 보호를 위한 C서비스 제공 등 기술적 개선을 추구했다.[6]

1993년 5월, IRC 프로토콜의 기본적인 내용을 담은 RFC 1459[12]가 발표되었지만, CTCP, 색상 코드, 문자 인코딩 등 실제 사용되던 많은 확장 기능은 표준에 포함되지 않아[34] 네트워크별 구현 차이는 여전했다.[6]

1994년 여름, 이번에는 언더넷에서 새로운 네트워크가 분리되었다. 창립자 'dalvenjah'의 이름을 딴 DALnet은 더 나은 사용자 서비스와 강화된 사용자 및 채널 보호를 목표로 했다. DALnet은 9자였던 닉네임 길이 제한을 늘리고, 운영자 전용 메시지(WallOps, GlobOps), 특정 닉네임 사용 금지(Q:Lined), 서버/네트워크 차단(K:Lines), 닉네임 및 채널 소유권 등록, 메모 전송 기능 등 다양한 서비스 기능을 도입했다.[6] 초기 DALnet 사용자들은 EFnet의 잦은 네트워크 분할과 채널 점거 문제에서 벗어나고자 했던 이들이 많았다.[6]

1996년 7월, IRC 역사상 가장 큰 분열로 평가받는 사건이 발생했다. ircd(IRC 서버 데몬) 개발 방향에 대한 의견 차이 때문이었다. 주로 유럽 서버들로 구성된 진영은 닉네임 및 채널 지연 방식을 선호했고, 미국 서버 중심의 EFnet 진영은 타임스탬프 방식을 주장했다.[6] 또한 유럽 측은 IRC 운영자의 권한을 규정하는 규칙 제정을 추진했으나, 미국 측은 이에 반대했다.[13] 결국 네트워크는 분리되었고, 유럽 중심의 네트워크는 IRCnet으로 명명되었다. 이 사건은 '대분열(The Great Split)'로도 불린다.[6] 분열 초기에는 IRCnet의 사용자 수가 더 많았으나, 이후 EFnet도 규모를 회복했다. 2000년 가을 기준으로 EFnet은 약 5만 명, IRCnet은 약 7만 명의 사용자를 보유했다.[6]

시간이 흐르면서 다양한 IRC 네트워크가 생성되고 발전했다. 주요 네트워크는 다음과 같다.

네트워크 이름주요 특징 및 형성 시기
EFnet초창기 IRC 네트워크 중 하나로, 1990년 A-net과의 분리를 통해 형성됨.
언더넷1992년 EFnet에서 분리. 기술적 개선(타임스탬프, C서비스 등)을 추구함.
DALnet1994년 언더넷에서 분리. 사용자 서비스 및 채널 보호 기능 강화에 중점을 둠.
IRCnet1996년 EFnet과의 대분열을 통해 형성됨. 주로 유럽 서버를 기반으로 함.
QuakeNet게임 퀘이크 커뮤니티를 중심으로 성장한 네트워크.
freenode자유 소프트웨어오픈 소스 프로젝트 커뮤니티 지원에 중점을 두었으나, 이후 운영 주체 변경 논란 발생. (이후 Libera Chat으로 상당수 이전)
Libera Chatfreenode 운영 논란 이후 많은 프로젝트가 이전한 네트워크.
Rizon애니메이션 및 동아시아 관련 커뮤니티 중심 네트워크.


2. 3. 현대의 IRC

IRC는 인터넷 환경 변화에 따라 기술적으로 발전해왔다. 새로운 서버 소프트웨어는 다양한 기능을 추가하며 사용자 경험을 개선하고자 했다.

  • 서비스: 네트워크 운영 봇을 통해 닉네임과 채널 등록을 쉽게 하고, 오프라인 사용자에게 메시지를 보내거나 네트워크 운영자 기능을 수행할 수 있게 되었다.
  • 추가 모드: 기존의 표준 모드 외에 새로운 기능들이 추가되었다. 예를 들어, 텍스트의 색상 코드를 제거하거나[14] 사용자의 호스트마스크를 숨겨("클로킹") 서비스 거부 공격으로부터 보호하는 기능 등이 도입되었다.[15]
  • 프록시 감지: 보안에 취약한 프록시 서버를 통해 접속하는 사용자를 감지하고 차단하는 기능이 많은 서버에 도입되었다. 다만, 이 프록시 감지 소프트웨어에서 사용하던 실시간 프록시 목록은 2006년 초 이후로 운영되지 않고 있다.[16]
  • 추가 명령어: 서비스에 명령을 내리는 단축 명령어, 네트워크 운영자 전용 명령어 등 새로운 명령어들이 추가되었다.
  • 암호화: 클라이언트와 서버 간 통신에는 TLS를 사용하여 보안을 강화할 수 있게 되었다. 다만, TLS로 암호화된 메시지도 다른 사용자에게 중계될 때는 일반 텍스트로 전송될 수 있어 완전한 보안을 보장하지는 않는다. 클라이언트 간의 직접 통신에는 SDCC를 사용할 수 있다.
  • 연결 프로토콜: 기존의 IPv4뿐만 아니라 새로운 인터넷 프로토콜 표준인 IPv6를 통한 접속도 지원하게 되었다.


2016년 기준으로, 인스턴트 알림, 더 나은 기록 지원 및 향상된 보안과 같은 더 발전된 클라이언트 기능을 목표로 하는 IRCv3라는 작업 그룹에서 새로운 표준화 노력이 진행 중이다.[17] 2019년 기준으로, 주요 IRC 네트워크는 제안된 표준을 완전히 채택하지 않았다.[18]

2021년 6월 기준으로, 운영 중인 것으로 알려진 481개의 서로 다른 IRC 네트워크가 있으며,[19] 이 중 2021년 5월에 설립된 오픈 소스 Libera Chat이 가장 많은 사용자를 보유하고 있으며, 26개의 서버에서 20,374개의 채널을 운영하고 있다. 그 중 상위 100개의 IRC 네트워크는 약 1,000개의 서버에서 운영되는 10만 개 이상의 채널을 공유한다.[20]

1990년대와 2000년대 초반의 황금기 이후 (2004년 QuakeNet에 240,000명의 사용자), IRC는 상당한 감소를 보였으며, 2003년과 2012년 사이에 사용자의 약 60%를 잃고 소셜 미디어 플랫폼 (예: 페이스북 또는 트위터)으로 이동했다.[21] 하지만 1999년에 개발된 XMPP와 같은 오픈 플랫폼으로 이동하기도 했다. Freenode와 같은 특정 네트워크는 전체적인 추세를 따르지 않고 같은 기간 동안 4배 이상 성장했다.[21] 그러나 2016년에 약 90,000명의 사용자를 보유했던 Freenode는 그 이후 약 9,300명의 사용자로 감소했다.[22]

가장 큰 IRC 네트워크는 전통적으로 "빅 4"[23][24][25][26]로 그룹화되었다—통계를 선두하는 네트워크를 지칭하는 명칭이다. 빅 4 네트워크는 주기적으로 변경되지만, IRC의 커뮤니티 특성으로 인해 사용자가 선택할 수 있는 다른 많은 네트워크가 있다.

역사적으로 "빅 4"는 다음과 같다:[23][24][25]

  • EFnet
  • IRCnet
  • Undernet
  • DALnet


IRC는 2001년에 6백만 명의 동시 사용자를 기록했고, 2004-2005년에는 1천만 명의 사용자로 증가했으며, 2021년에는 약 35만 명으로 감소했다.

상위 100개 IRC 네트워크는 피크 시간대에 약 23만 명의 사용자가 연결되어 있다.[27]

주요 네트워크 연혁:

네트워크운영 기간
EFnet1990년 ~ 현재
Undernet1992년 ~ 현재
DALnet1994년 ~ 현재
freenode1995년 ~ 현재
IRCnet1996년 ~ 현재
QuakeNet1997년 ~ 현재
오픈 및 자유 기술 커뮤니티2001년 ~ 현재
Rizon2002년 ~ 현재
Libera Chat2021년 ~ 현재


2. 4. 한국에서의 IRC

(내용 없음 - 주어진 원본 소스에는 '한국에서의 IRC'에 해당하는 내용이 포함되어 있지 않습니다.)

3. 기술적 특징

IRC는 기본적으로 TCP를 사용하며,[12][114] 선택적으로 TLS를 통한 암호화 통신도 지원하는 공개 네트워크 프로토콜이다.[28] 사용자는 클라이언트 소프트웨어를 통해 서버에 접속하며, 서버들은 서로 연결되어 하나의 거대한 IRC 네트워크를 형성할 수 있다.[115][29][116] 이러한 서버 간 연결은 일반적으로 트리 구조를 이루며,[36] 메시지는 필요한 경로로만 효율적으로 전달되지만,[40] 네트워크 분할 시 일시적인 통신 장애가 발생할 수 있다.[38][39][118]

IRC 프로토콜은 RFC 1459를 시작으로 여러 문서로 정의되었으나,[115] 실제 구현에서는 차이가 있어 공식적인 단일 표준은 없다. 초기에는 평문 텍스트 기반이었고,[12] 사용할 문자 인코딩을 명확히 규정하지 않아[34] 다국어 환경에서 문자 깨짐 문제가 발생하기도 한다.

시간이 지나면서 IRC는 서비스 봇, 다양한 채널 및 사용자 모드, 프록시 감지,[16] 암호화 통신 등 여러 기능이 추가되며 발전했으며, 현재도 IRCv3와 같은 표준화 노력이 진행 중이다.[17]

3. 1. 프로토콜

IRC로 만들어진 엑스챗 클라이언트


OS X에서 사용되는 콘솔 기반 IRC 클라이언트 Xaric. 두 개의 IRC 채널과 소프트웨어 개발자와의 개인 대화 내용이 화면에 떠있다.


IRC는 TCP[12][114] 기반의 공개 네트워크 프로토콜이며, 선택적으로 TLS 암호화 통신을 지원한다.[28] IRC 서버는 다른 IRC 서버에 연결하여 IRC 네트워크를 확장할 수 있으며,[115] 사용자는 클라이언트를 서버에 연결하여 IRC 네트워크에 접속한다.[29][116]

IRC 프로토콜은 RFC(Request for Comments) 문서를 통해 규격이 공개되어 있다. 최초의 관련 RFC는 RFC 1459이며, 2000년에 이를 개정한 RFC 2810, RFC 2811, RFC 2812, RFC 2813이 발표되었다. 현존하는 대부분의 클라이언트-서버 IRC 프로토콜은 RFC 1459에 문서화된 IRC2 서버의 irc2.4.0 버전(또는 irc2.8 버전)에서 구현된 프로토콜에 기반한다. RFC 1459 발표 이후 irc2.10 구현의 새로운 기능들을 반영한 여러 개정판 RFC(2810-2813)가 나왔지만, 이 개정판들은 많은 구현에서 널리 채택되지는 않았다. IRC 프로토콜에 대한 공식적인 단일 표준 규격 문서는 존재하지 않으며, 실제 클라이언트와 서버 중 RFC 규격을 엄격하게 따르는 경우는 거의 없다.

초기 IRC 프로토콜은 평문 텍스트 기반으로 정의되었으며,[12] 이후 확장되었다. 접속 포트는 IANA에 의해 194/TCP가 할당되었지만,[31] 대부분의 운영 체제에서 이 포트를 사용하려면 특별 권한이 필요하다. 이 때문에 ''사실상'' 표준으로 6667/TCP 포트[32] 및 인접 포트 번호(예: TCP 6660–6669, 7000)[33]가 널리 사용된다.[117]

프로토콜은 문자가 8비트라고만 명시할 뿐, 텍스트 인코딩 방식은 규정하지 않았다.[34] 이는 서로 다른 클라이언트나 플랫폼을 사용하는 사용자들이 영어가 아닌 다른 언어로 소통할 때 문제를 일으킬 수 있다.

마이크로소프트는 1998년 독자적인 IRCX 확장을 만들었으나,[35] 이후 지원을 중단하고 MSNP를 개발했다.

IRC 서버 네트워크는 일반적으로 트리(비순환 그래프) 구조를 가진다.[36] 메시지는 필요한 경로로만 전달되지만, 네트워크 상태 정보는 모든 서버에 전파된다.[37] 서버 간에는 높은 수준의 암묵적 신뢰가 존재한다. 이 구조는 몇 가지 문제점을 내포한다. 잘못 작동하거나 악의적인 서버는 네트워크 전체에 심각한 손실을 초래할 수 있으며,[38] 네트워크 구조 변경(의도적이든 외부 요인에 의한 것이든) 시 발생하는 넷-스플릿(net-split)과 넷-조인(net-join)은 많은 트래픽과 잘못된 접속/종료 메시지를 유발하여 일시적인 통신 두절을 일으킬 수 있다.[39][118] 또한 대규모 네트워크에 서버를 추가하는 것은 상당한 백그라운드 대역폭 부하와 서버 메모리 부하를 야기한다. 하지만 일단 구축되면, 메시지는 멀티캐스트와 유사하게 네트워크 링크를 한 번만 통과하여 효율적으로 전달된다.[40]

IRC는 시간이 지남에 따라 여러 기능이 추가되며 변화했다.

  • 서비스: 닉네임 및 채널 등록, 오프라인 메시지 전송, 네트워크 운영자 기능 등을 지원하는 봇.
  • 추가 모드: 텍스트 색상 코드 제거,[14] 사용자 호스트마스크를 숨겨(DoS 공격 방어 등) 보호하는 "클로킹"[15] 등 새로운 모드 추가.
  • 프록시 감지: 안전하지 않은 프록시 서버를 통한 접속 시도를 감지하고 차단하는 기능.[16]
  • 추가 명령어: 서비스 제어용 단축 명령어, 네트워크 운영자용 명령어 등.
  • 암호화: 클라이언트-서버 간 TLS 암호화, 클라이언트 간 SDCC(Secure DCC) 지원.
  • 연결 프로토콜: IPv4IPv6 지원.


현재 더 나은 클라이언트 기능을 목표로 하는 IRCv3 표준화 노력이 진행 중이지만,[17] 주요 네트워크에서의 완전한 채택은 이루어지지 않았다.[18]

IRC는 라인(line) 기반 프로토콜이다. 클라이언트는 서버에 단일 라인 메시지를 보내고 응답을 받으며, 다른 클라이언트의 메시지 사본을 수신한다. 대부분 클라이언트에서 '/' 문자로 시작하는 명령어를 사용하며, 이는 클라이언트 내부에서 처리되거나 서버로 전달된다. 프로토콜 특성상 자동화 시스템이 명령어와 응답을 항상 정확히 연결하기 어려워 추론에 의존해야 할 수 있다.

=== 채널 ===

사용자 그룹 간의 기본적인 통신은 ''채널''을 통해 이루어진다.[47] `LIST` 명령어로 현재 접속 가능한 채널 목록을 볼 수 있다(단, +s 또는 +p 모드가 설정된 채널 제외).[48]

사용자는 `JOIN #채널이름` 명령 (대부분 클라이언트에서 `/join #채널이름`)으로 채널에 참여한다.[49] 채널 내 메시지는 해당 채널의 모든 사용자에게 전달된다.[47]

일반적인 채널 이름은 '#'으로 시작하며, 특정 서버에만 속한 로컬 채널은 '&'로 시작한다.[50] 그 외에 운영자 권한이 없는 '+' 채널[51], 타임스탬프 기능이 없는 네트워크에서 타임스탬프를 사용하는 '!' 채널[52] 등도 존재한다.

=== 모드 ===

사용자와 채널은 각각 '모드(mode)'를 가질 수 있으며, 이는 대소문자를 구분하는 문자로 표시되고 `MODE` 명령으로 설정/해제한다.[53][54] 사용자 모드와 채널 모드는 별개이며 같은 문자가 다른 의미로 쓰일 수 있다(예: 사용자 모드 'i'는 invisible, 채널 모드 'i'는 invite-only).[55] 모드 변경 시 대상(사용자/채널), 설정(+) 또는 해제(-), 필요한 매개변수를 지정한다.

일부 채널 모드는 매개변수를 받거나, 채널 내 특정 사용자 또는 채널 전체가 아닌 목록(예: 차단 목록)에 적용된다.[56] 사용자에게 적용되는 채널 모드는 이름 목록 응답(`NAMES` 명령 또는 채널 최초 접속 시[49])에서 해당 사용자의 닉네임 옆에 특정 기호로 표시된다.[57]

클라이언트는 모드 메시지를 올바르게 해석하고 채널 상태를 추적하기 위해 각 모드의 유형과 관련 기호를 알아야 한다. 초기에는 클라이언트에 하드코딩되었으나, 현재는 서버가 연결 시 ISUPPORT(숫자 005 응답)를 통해 이 정보를 클라이언트에 전달하는 것이 사실상 표준이다.[58][59]

채널 사용자에게 적용되는 모드 관련 설계상 작은 문제가 있다. `NAMES` 응답은 사용자당 하나의 모드만 표시할 수 있지만,[57] 실제로는 한 사용자가 여러 모드(예: 운영자 +o 와 발언권 +v)를 동시에 가질 수 있다. 이 경우 우선순위가 낮은 모드는 `NAMES` 응답에서 누락될 수 있다. IRCv3의 "다중 접두사(multi-prefix)" 확장이 이 문제를 해결하는 일반적인 방법이다.[60]

사용자 모드
문자기호설명
iInvisible - 자신과 같은 채널에 있거나 닉네임을 정확히 아는 사용자 외에는 보이지 않음
s서버 공지 수신
wWallops (운영자 대상 메시지) 수신[61]
oIRC 운영자(ircop) 상태



채널 모드
문자기호매개변수설명
o@사용자 닉네임채널 운영자(Operator) - 채널 모드 변경, 사용자 추방 등 권한 보유
s비밀(Secret) 채널 - 채널 목록(`LIST`) 및 사용자 정보(`WHOIS`, 채널 참여자 제외)에 표시되지 않음
p비공개(Private) 채널 - RFC 1459에 따라 채널 목록에 "prv"로 표시될 수 있음 (현재는 s와 유사하게 동작하는 경우가 많음)
n외부 메시지 차단 - 채널 참여자만 메시지 전송 가능
m중재(Moderated) 채널 - 운영자(o) 또는 발언권(v) 보유자만 메시지 전송 가능
i초대 전용(Invite-only) 채널 - 초대받은 사용자만 참여 가능
t주제 변경 제한 - 채널 운영자만 주제 변경 가능
l제한 인원 수인원 제한 채널 - 설정된 최대 인원까지만 참여 가능
b차단 마스크 (nick!user@host 형식, 와일드카드 사용 가능)특정 호스트마스크의 채널 참여 및 메시지 전송 차단
v+사용자 닉네임발언권(Voice) 부여 - 중재(+m) 모드 채널에서 메시지 전송 가능
k채널 키(비밀번호)채널 키를 아는 사용자만 참여 가능



많은 IRC 데몬과 네트워크는 위에 나열된 표준 모드 외에 추가적인 모드를 지원하거나 기존 모드의 동작을 변경하기도 한다.[62][63][64][65]

=== 채널 운영자 ===

채널 운영자(channel operator, chanop)는 IRC 채널을 관리하는 클라이언트이다. 일반적으로 닉네임 앞에 '@' 기호가 붙거나, 클라이언트에 따라 다른 시각적 표시(예: 녹색 원)로 구분된다.

대부분의 네트워크에서 채널 운영자는 다음과 같은 권한을 가진다.


  • 사용자 강제 퇴장 (Kick)
  • 사용자 차단 (Ban)
  • 다른 사용자에게 채널 운영자 또는 발언권 부여/해제
  • 채널 주제 변경 (채널 모드 +t 설정 시)
  • 채널 모드 변경


=== IRC 운영자 ===

IRC 운영자(IRC operator, IRCop, Oper)는 로컬 서버 또는 전체 네트워크에 대해 일반 사용자보다 높은 권한을 가진 사용자이다(채널 운영자와는 구별된다).[66] RFC 1459는 IRC 운영자를 네트워크의 안정적인 운영을 위한 "필수악"으로 언급하며, 서버 연결 관리 등의 역할을 부여한다.[66] IRC 운영자는 일반적으로 악의적인 사용자나 봇을 차단하기 위해 클라이언트 연결을 강제로 끊거나 IP 주소 또는 서브넷 전체를 차단(K-line, G-line 등)할 수 있다. 서비스(NickServ 등)가 있는 네트워크에서는 계정 및 채널 소유권 관련 문제 처리 권한을 갖기도 한다. 그 외에도 채널 차단 무시, 자신에게 운영자 권한 부여 등의 추가 권한을 가질 수 있다.

=== 호스트마스크 ===

호스트마스크(hostmask)는 IRC 클라이언트가 서버에 연결될 때 부여받는 고유 식별자이다.[67][68] 서버, 서비스, 봇 등 다른 주체들은 호스트마스크를 통해 특정 IRC 세션을 식별한다.

호스트마스크 형식은 `nick!user@host` 이며, 이메일 주소와 유사해 보이지만 다르다.

  • '''nick''': 사용자가 선택한 닉네임. 연결 중 변경 가능하다.
  • '''user''': 클라이언트의 ident 프로토콜 응답으로 확인된 사용자 이름.[69] Ident 확인이 불가능하면 클라이언트 연결 시 지정한 사용자 이름 앞에 물결표(~)가 붙는다.[70]
  • '''host''': 클라이언트가 연결된 호스트 이름. 서버가 클라이언트의 IP 주소를 유효한 호스트 이름으로 변환(역방향 DNS 조회)할 수 없으면 IP 주소 자체가 사용된다.


클라이언트의 IP 주소나 호스트 이름 노출은 프라이버시 침해 소지가 있으므로, 일부 IRC 데몬(예: InspIRCd, UnrealIRCd)은 호스트마스크의 일부를 가리는 기능을 제공한다(예: +x 모드). 이는 IP 주소를 해시 처리하거나 호스트 이름 일부를 마스킹하여 IRC 운영자 외에는 실제 정보를 알 수 없게 한다. 사용자는 추가적인 익명성을 위해 "가상 호스트"(vhost)를 신청하여 호스트마스크의 host 부분을 대체할 수도 있다. Libera Chat이나 Freenode 같은 네트워크에서는 이를 "클록(cloak)"이라 부르며, 특정 그룹이나 프로젝트 소속을 나타내는 용도로 사용하기도 한다.[71]

=== 관련 RFC ===

IRC 프로토콜과 관련된 주요 RFC 문서는 다음과 같다.

  • RFC 1459: Internet Relay Chat Protocol (초기 프로토콜 정의)
  • RFC 2810: Internet Relay Chat: Architecture (네트워크 구조)
  • RFC 2811: Internet Relay Chat: Channel Management (채널 관리)
  • RFC 2812: Internet Relay Chat: Client Protocol (클라이언트 프로토콜)
  • RFC 2813: Internet Relay Chat: Server Protocol (서버 프로토콜)

3. 2. 서버와 네트워크

GTK 기반 IRC 클라이언트인 HexChat의 스크린샷


IRC는 TCP[12]와 선택적으로 TLS[28]를 사용하는 개방형 네트워크 프로토콜이다. IRC 서버는 다른 IRC 서버에 연결하여 IRC 네트워크를 확장할 수 있으며, 사용자는 클라이언트를 서버에 연결하여 IRC 네트워크에 접속한다.[29] mIRC, HexChat, irssi 등 다양한 클라이언트와 IRCd 같은 서버 구현이 존재한다. 대부분의 IRC 서버는 사용자에게 계정 등록을 요구하지 않지만, 접속 시 별명은 필요하다.[30]

IRC 서버 네트워크의 표준적인 구조는 트리 네트워크 형태를 이룬다.[36] 메시지는 트리의 필요한 경로만을 따라 전달되지만, 네트워크 상태 정보는 모든 서버로 전송된다.[37] 일반적으로 서버 간에는 높은 수준의 암묵적인 신뢰 관계가 존재한다. 그러나 이러한 구조는 몇 가지 문제점을 안고 있다. 잘못 작동하거나 악의적인 서버는 네트워크 전체에 심각한 피해를 줄 수 있으며,[38] 네트워크 구조의 변경(의도적이든 외부 요인에 의해서든)은 네트워크 분할(net-split) 및 재결합(net-join)을 유발할 수 있다. 이는 대량의 네트워크 트래픽과 사용자에게 불필요한 종료/참가 메시지를 발생시키고, 분할된 서버 간의 일시적인 통신 두절을 초래한다.[39] 또한, 대규모 네트워크에 서버를 추가하는 것은 상당한 백그라운드 대역폭 부하와 메모리 부하를 유발한다. 반면, 일단 네트워크가 구축되면 각 메시지는 멀티캐스트와 유사하게 네트워크 링크를 한 번만 통과하며 여러 수신자에게 효율적으로 전달된다는 장점도 있다.[40]

IRC는 본래 평문 프로토콜로 정의되었으며,[12] IANA는 IRC 접속 포트로 194/TCP를 할당했다.[31] 하지만 대부분의 운영 체제에서 이 포트를 사용하려면 특별한 권한이 필요하기 때문에, 사실상 표준으로 6667/TCP 포트[32] 및 그 인접 포트(예: TCP 6660–6669, 7000)가 널리 사용된다.[33] 이를 통해 루트 권한 없이도 IRCd 소프트웨어를 운영할 수 있다.

이 프로토콜은 문자가 8비트임을 명시했지만, 텍스트가 사용해야 하는 문자 인코딩은 명시하지 않았다.[34] 이는 서로 다른 클라이언트 및/또는 다른 플랫폼을 사용하는 사용자가 영어가 아닌 다른 언어로 대화하려는 경우 문제를 일으킬 수 있다.

오늘날 사용되는 모든 클라이언트-서버 IRC 프로토콜은 RFC 1459에 문서화된 IRC2 서버의 irc2.4.0 버전에서 구현된 프로토콜에서 파생되었다. RFC 1459가 발표된 이후, irc2.10 구현의 새로운 기능으로 인해 여러 수정된 프로토콜 문서(RFC 2810, RFC 2811, RFC 2812 및 RFC 2813)가 발표되었지만, 이러한 프로토콜 변경 사항은 다른 구현 간에 널리 채택되지 않았다.

IRC 프로토콜에 대한 많은 사양이 발표되었지만, 프로토콜이 동적으로 유지되므로 공식 사양은 없다. 실제로 클라이언트와 서버 중 RFC를 엄격하게 참조하는 경우는 거의 없다.

IRC는 인터넷뿐만 아니라 근거리 통신망(LAN) 환경에서도 사용될 수 있어, 조직 내 내부 통신 수단으로 활용되기도 한다.[41][42]

주요 IRC 네트워크는 다음과 같다.

네트워크 이름
EFnet영어
Undernet영어
DALnet영어
QuakeNet영어
freenode
Libera Chat
IRCnet영어


3. 3. 클라이언트



텍스트 기반의 IRC 클라이언트인 Irssi


사용자는 클라이언트 소프트웨어를 통해 IRC 네트워크에 접속한다.[116][29] IRC 클라이언트는 다양한 운영 체제(윈도우, 유닉스, 리눅스, macOS) 및 모바일 플랫폼(iOS, 안드로이드)에서 사용할 수 있으며, 웹 기반 클라이언트나 게임 내장 클라이언트 등 다양한 형태로 존재한다.

윈도우 환경에서는 mIRC가 가장 널리 사용되는 클라이언트 중 하나이다.[87] 일부 리눅스 배포판, 예를 들어 Linux Mint에는 HexChat이 기본적으로 포함되어 제공된다.

플러그인으로 기능을 확장할 수 있는 프로그램 중 일부는 IRC 클라이언트 플랫폼 역할도 한다. 예를 들어, Emacs Lisp로 작성된 ERC 클라이언트는 Emacs v.22.3부터 포함되어, Emacs를 실행할 수 있는 모든 플랫폼에서 사용할 수 있다.

과거 일부 웹 브라우저에는 IRC 클라이언트가 내장되기도 했다. 오페라는 한때 클라이언트를 내장했으나 현재는 지원하지 않는다. Mozilla 파이어폭스용으로는 ChatZilla 부가 기능이 있었으며(파이어폭스 56 이하 버전 지원), SeaMonkey에는 내장된 구성 요소로 포함되어 있다. Mibbit이나 오픈 소스인 KiwiIRC와 같은 웹 기반 클라이언트는 대부분의 웹 브라우저에서 실행할 수 있다.

일부 게임에도 IRC 기능이 포함되어 있다. 예를 들어 ''War§ow'',[88] ''언리얼 토너먼트'' (언리얼 토너먼트 2004까지),[89] ''업링크'',[90] ''스프링 엔진'' 기반 게임, 0 A.D., ''ZDaemon''[91] 등이 있다. 또한 Ustream[92]이나 Twitch[93][94]와 같은 인터넷 방송 서비스의 채팅 인터페이스도 IRC를 기반으로 한다.

IRC는 프로토콜이 간소하고 개방적이어서 클라이언트 소프트웨어 개발이 용이하며 종류도 다양하다. 주요 클라이언트 소프트웨어는 다음과 같다.

분류클라이언트 이름지원 운영 체제/플랫폼비고
크로스 플랫폼Irssi텍스트 기반
LimeChatmacOS, iOS, WindowsmacOS용 아카이브 링크
Pidgin다중 프로토콜 지원
Trillian다중 프로토콜 지원
WeeChat텍스트 기반
HexChatWindows, Linux, macOSXChat에서 파생, Linux Mint 기본 포함
XChatWindows, Linux, macOS
챗질라Firefox 부가 기능, SeaMonkey 내장
윈도우mIRCWindows가장 인기 있는 클라이언트 중 하나[87]
Miranda IMWindows다중 프로토콜 지원 플러그인 기반
macOSColloquymacOS
리눅스EmpathyLinux (GNOME)
KonversationLinux (KDE)
KSircLinux (KDE)
polariLinux (GNOME)
웹 기반Mibbit웹 브라우저
KiwiIRC웹 브라우저오픈 소스
기타ERCEmacsEmacs Lisp 기반


3. 4. 채널



IRC 세션에서 사용자 그룹과 소통하는 기본적인 수단은 '''채널'''을 통하는 것이다.[47] 네트워크 상에 존재하는 채널 목록은 IRC 명령 LIST를 사용하여 확인할 수 있다.[48] 다만, 해당 네트워크에서 +s (비밀 채널) 또는 +p (비공개 채널) 모드가 설정된 채널은 목록에 나타나지 않을 수 있다.

사용자는 JOIN 명령을 사용하여 특정 채널에 참여할 수 있다. 대부분의 클라이언트에서는 /join #채널이름 형식으로 사용한다.[49] 채널에 참여하면 해당 채널로 전송되는 메시지를 다른 모든 참여자와 주고받을 수 있다.[47] 채널에서 나가려면 PART 명령을 사용한다. 특정 채널이나 사용자에게 메시지를 보낼 때는 PRIVMSG 명령을 사용한다.

채널 이름의 시작 기호에 따라 다음과 같이 종류를 구분한다.

  • '''#''': 전체 IRC 네트워크에서 접근 가능한 표준 채널이다.[50]
  • '''&''': 특정 서버에만 로컬로 존재하는 채널이다.[50]
  • '''+''': 채널 운영자 개념이 없는 '모드리스(modeless)' 채널이다.[51]
  • '''!''': 일반적으로 타임스탬프 기능이 없는 네트워크에서 타임스탬프가 적용되는 채널 형태이다.[52]


채널은 다양한 '''모드'''를 가질 수 있으며, 이는 MODE 명령을 통해 설정하거나 해제한다.[54] 채널 모드는 특정 문자로 표시되며, 사용자 모드와는 별개로 작동한다. 예를 들어, 사용자 모드 'i'는 자신을 숨기는 기능이지만, 채널 모드 'i'는 초대받은 사용자만 입장할 수 있도록 제한하는 기능이다.[55]

채널 모드는 크게 두 가지 방식으로 적용된다. 일부 모드는 채널 자체의 속성을 변경하며(예: 비밀 채널 설정), 다른 모드는 채널 내 특정 사용자에게 적용된다(예: 운영자 권한 부여).[56] 사용자에게 적용되는 모드는 해당 사용자의 닉네임 앞에 특정 기호(예: 운영자는 '@')로 표시되어 나타난다.[57] 클라이언트는 서버로부터 접속 시 ISUPPORT 정보(숫자 005 메시지)를 받아 어떤 모드가 어떤 기능을 하고 어떤 기호와 연결되는지 파악한다.[58][59]

다음은 일반적인 채널 모드의 일부이다. 실제 IRC 서버 구현에 따라 더 많은 모드가 존재하거나 동작 방식이 다를 수 있다.[62][63][64][65]

채널 모드
문자기호매개변수설명
o@영향을 받는 사용자 이름채널 운영자 권한을 부여하거나 박탈한다. 운영자는 채널 모드 변경, 사용자 추방 등의 권한을 가진다.
s비밀 채널로 설정한다. 채널 목록(LIST)이나 사용자 정보(WHOIS)에 표시되지 않는다 (채널 참여자 제외).
p비공개 채널로 설정한다. RFC 1459에 따라 채널 목록에 "prv"로 표시될 수 있다.
n채널 외부에서 보낸 메시지를 차단한다. 즉, 채널 참여자만 메시지를 보낼 수 있다.
m조정된 채널로 설정한다. 채널 운영자나 음성 권한(+v)을 가진 사용자만 메시지를 보낼 수 있다.
i초대 전용 채널로 설정한다. 초대받은 사용자만 채널에 참여할 수 있다.
t주제 변경 제한 모드. 채널 운영자만 채널 주제를 변경할 수 있도록 제한한다.
l제한 숫자채널 참여 인원수를 제한한다. 설정된 인원수를 초과하면 새 사용자는 참여할 수 없다.
b차단 마스크 (nick!user@host)특정 사용자 또는 호스트마스크 패턴에 해당하는 사용자의 채널 참여를 차단한다. 와일드카드 사용이 가능하다.
v+영향을 받는 사용자 이름사용자에게 음성(voice) 권한을 부여하거나 박탈한다. 조정된 채널(+m)에서 메시지를 보낼 수 있게 된다.
k새 채널 키채널에 비밀번호(키)를 설정한다. 올바른 키를 입력해야만 채널에 참여할 수 있다.



'''채널 운영자'''(Channel Operator, 줄여서 chanop)는 특정 IRC 채널을 관리하는 권한을 가진 클라이언트이다. 일반적으로 채널을 처음 만든 사용자가 운영자가 되며, 다른 사용자에게 운영자 권한을 부여할 수도 있다. 채널 운영자는 사용자 닉네임 앞에 '@' 기호가 붙거나, 클라이언트에 따라 다른 방식으로 표시되어 쉽게 식별할 수 있다.

대부분의 IRC 네트워크에서 채널 운영자는 다음과 같은 권한을 가진다.


  • 채널에서 특정 사용자를 강제로 내보내는 기능 (Kick)
  • 특정 사용자가 채널에 다시 들어오지 못하도록 차단하는 기능 (Ban)
  • 다른 사용자에게 채널 운영자(@) 또는 음성(+) 권한을 부여하거나 박탈하는 기능
  • 채널 주제(Topic)를 변경하는 기능 (단, 채널 모드 +t가 설정된 경우)
  • 채널 모드를 변경하는 기능

3. 5. 명령어

IRC는 라인 기반 구조를 가지고 있다. 클라이언트서버에 한 줄씩 메시지를 보내고, 서버는 이에 대한 응답이나 다른 클라이언트가 보낸 메시지의 사본을 클라이언트에게 전달한다. 대부분의 클라이언트에서는 사용자가 슬래시(`/`) 기호를 명령어 앞에 붙여서 입력할 수 있다. 이렇게 입력된 명령어는 클라이언트 자체에서 처리되거나, 약간의 수정을 거쳐 서버로 직접 전달되기도 한다.

클라이언트가 서버에 보내는 데이터는 보통 접두사(송신자 정보), 명령어, 매개변수로 구성된다. 서버는 이 명령어를 해석하고 처리하여 네트워크 통신과 채팅이 이루어지게 한다.

주요 명령어는 다음과 같다.

  • '''NICK''': 닉네임을 설정하는 명령어이다.
  • '''USER''': 클라이언트를 식별하는 정보를 설정하는 명령어이다.
  • '''QUIT''': 서버와의 접속을 종료하는 명령어이다.
  • '''JOIN''': 특정 채널에 참가하는 명령어이다.[49]
  • '''PART''': 참가 중인 채널에서 나가는 명령어이다.
  • '''MODE''': 채널이나 사용자의 모드(권한, 설정 등)를 변경하는 명령어이다.[54]
  • '''PRIVMSG''': 특정 사용자나 채널에 메시지를 보내는 명령어이다.[47]

3. 6. 문자 코드

IRC 프로토콜은 문자가 8비트라고 규정하지만, 텍스트에 사용될 문자 인코딩은 명시하지 않는다.[34] 이는 IRC 초기 설계자들이 사용자들이 서로 호환되는 인코딩 환경에서 대화할 것이라고 단순하게 예상했기 때문이다. 이러한 프로토콜의 특성 때문에, 서로 다른 클라이언트나 플랫폼을 사용하는 사용자들이 영어 이외의 언어로 소통하려 할 때 문자 깨짐 등의 문제가 발생할 수 있다. IRC 서버는 클라이언트 간 메시지를 단순히 바이트 스트림으로 전달할 뿐, 문자를 해석하거나 재인코딩하지 않으므로 문제는 주로 사용자 간에 발생한다.

IRC 프로토콜에는 MIME이나 HTTP와 같이 문자 인코딩 설정을 알리고 협상하는 메커니즘이 없다. 따라서 적절한 문자 코덱을 선택하는 책임은 클라이언트에 있다. 실제로 IRC 채널들은 해당 언어 커뮤니티에서 운영체제(특히 유닉스 계열)에서 사용되던 문자 인코딩을 주로 사용해왔다.

  • '''7비트 시대:''' IRC 초기에는 스칸디나비아핀란드어 사용자 사이에서 ISO 646의 국가별 변형이 널리 사용되었다. 이 인코딩 방식들은 Ä, Ö, Å 등 비-ASCII 문자를 특정 코드 위치(, } 등)에 할당했다. 이것이 해당 문자들을 닉네임에 사용할 수 있었던 이유이다.[34] 1990년대 후반

4. 봇과 바운서

(내용 없음)

4. 1. 봇 (Bot)

IRC 봇은 인터넷 릴레이 챗 서비스를 제공하거나, 채팅 기반 게임을 호스팅하거나 외부 이벤트에 대한 알림을 제공하는 등 채널 내에서 특정 기능을 제공하는 데 주로 사용된다. 그러나 일부 IRC 봇은 서비스 거부, 스팸 또는 악용과 같은 악의적인 공격을 시작하는 데 사용되기도 한다.[95]

4. 2. 바운서 (Bouncer)

BNC 또는 바운서(bouncer)는 서버에서 데몬으로 실행되며 영구적인 프록시 역할을 하는 프로그램이다. 주된 목적은 IRC 서버와의 연결을 계속 유지하여 서버와 클라이언트 사이를 중계하거나 단순 프록시 역할을 하는 것이다. 클라이언트의 네트워크 연결이 끊어지더라도, BNC는 서버와의 연결을 유지하고 오고 간 모든 대화 내용(트래픽)을 저장해 두었다가 나중에 전달해 준다. 이를 통해 사용자는 연결 중단 없이 IRC 세션을 이어갈 수 있다.[96]

바운서와 비슷한 효과를 내는 다른 방법도 있다. Irssi와 같은 텍스트 기반 IRC 클라이언트를 항상 켜져 있는 서버에 설치하고, 사용자는 SSH를 통해 이 서버에 접속하여 IRC를 이용하는 방식이다. 이 방법을 사용하면, 실제 IRC 클라이언트 프로그램이 설치되지 않은 기기에서도 SSH 접속 기능만 있다면 IRC에 연결할 수 있고, 여러 기기에서 하나의 IRC 세션을 공유하는 것도 가능하다.[97]

SSH 접속이 끊겨도 IRC 클라이언트가 종료되지 않게 하려면, GNU Screen이나 tmux 같은 터미널 멀티플렉서 안에서 클라이언트를 실행하면 된다. 이렇게 하면 IRC 네트워크 연결이 계속 유지되어 특정 채널의 대화를 기록하거나, 사용자가 오프라인 상태일 때도 채널에 접속 상태를 유지할 수 있다. 2004년에는 이러한 방식을 모델로 삼아 클라이언트-서버 구조를 따르는 Smuxi라는 IRC 클라이언트가 등장하기도 했다.[98][99]

5. 기타

IRC는 초기 설계 단계에서 몇 가지 문제점을 안고 있었다. 대표적으로는 공유해야 할 상태 데이터가 너무 많아 확장성에 한계가 있었고,[75][76] 사용자마다 고유한 식별자가 없어 닉네임이 겹치는 닉네임 충돌 문제가 발생했다.[78] 또한, 네트워크 분리 현상인 넷스플릿에 대한 보호가 부족했으며,[79][80] 실시간으로 사용자 접속 정보를 제공하는 데에도 확장성 문제가 있었다.[81] 이 외에도 악용될 수 있는 프로토콜의 취약점,[82] 메시지 전달 방식의 투명성 및 최적화 부족,[83] 그리고 암호화 기능의 부재[84] 등이 지적되었다. 이러한 문제점 중 일부는 시간이 지나면서 개선되어 현대의 IRC에서는 해결되기도 했다.

5. 1. URI 스킴

IRC에는 `irc`, `irc6`, `ircs` 세 가지 인식 가능한 통합 자원 식별자(URI) 스킴이 있다.[119][72] 이 URI 스킴들은 지원될 경우, 다음과 같은 형식의 하이퍼링크를 통해 특정 서버의 채널에 쉽게 접속할 수 있도록 돕는다.

irc://[:]/[[?]]

ircs://[:]/[[?]]

irc6://[:]/[[?]]

위 형식에서 ``는 접속할 서버 주소, ``는 포트 번호(생략 가능), ``은 접속할 채널 이름, ``는 채널 접속 시 필요한 키(암호, 생략 가능)를 의미한다. 대괄호(`[]`) 안의 항목들은 선택 사항이다.[120][73] 이 링크는 IRC 클라이언트 프로그램 내부뿐만 아니라 웹 브라우저 등 다른 응용 프로그램에서도 사용될 수 있다.

각 스킴은 다음과 같은 의미를 가진다.

  • `irc`: 기본적인 URI 스킴이다.
  • `irc6`: IPv6 주소를 사용하여 연결한다.
  • `ircs`: SSL/TLS 같은 보안 연결을 사용하여 접속한다.


사양에 따르면, 영숫자로 시작하는 채널 이름 앞에는 보통 붙는 해시 기호(`#`)를 생략할 수 있다. 하지만 일부 IRC 클라이언트(예: mIRC)는 URI에 `#`가 포함된 경우, 채널 이름 앞에 `#`를 추가하여 `##채널`과 같이 의도치 않은 결과를 만들기도 한다.

일부 클라이언트 구현에서는 쉼표(`,`)를 사용하여 여러 채널을 한 번에 지정하는 기능을 지원하기도 한다.[74]

5. 2. IRCX

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

5. 3. 파일 공유

일반적인 P2P 파일 공유와 비슷하게, 사용자들은 직접 만든 IRC 봇이나 IRC 클라이언트 스크립트를 이용해 서로 파일을 주고받을 수 있는 파일 서버를 만들 수 있다. 때로는 사용자들이 그룹을 이루어 불법 복제 소프트웨어 등을 IRC 봇 네트워크를 통해 배포하는 등 저작권 침해 문제가 발생하기도 한다.[102]

기술적으로 IRC 자체에는 파일 전송 기능이 없다. 파일 공유는 보통 직접 클라이언트 간 통신 (DCC, Direct Client-to-Client) 프로토콜을 사용하는 IRC ''클라이언트''를 통해 이루어진다. DCC 방식에서는 클라이언트끼리 개인 메시지를 주고받으며 파일 전송을 협상한다. 대부분의 IRC 클라이언트가 DCC 파일 전송 기능을 지원하기 때문에, 많은 사람들이 파일 공유를 IRC의 기본 기능 중 하나로 여기기도 한다.[103] 하지만 DCC 프로토콜이 널리 사용되면서 DCC 스팸 문제가 발생하기도 하며, DCC 명령을 악용하여 취약한 클라이언트의 서버 연결을 강제로 끊거나 클라이언트를 종료시키는 공격에 이용되기도 한다.

6. 주요 IRC 네트워크

역사적으로 가장 큰 IRC 네트워크는 "빅 4"로 불리며 통계를 주도하는 네트워크들을 지칭했다.[23][24][25][26] 빅 4 네트워크는 시대에 따라 변동이 있었지만, 초기의 "빅 4"는 다음과 같다.[23][24][25]


  • EFnet
  • IRCnet
  • Undernet
  • DALnet


1990년대와 2000년대 초반은 IRC의 황금기로, 2004년에는 QuakeNet 단독으로 24만 명의 사용자를 기록하기도 했다. 그러나 이후 소셜 미디어 플랫폼의 부상 등으로 사용자가 감소하여 2003년과 2012년 사이에 약 60%의 사용자를 잃었다.[21] Freenode와 같은 일부 네트워크는 한때 성장세를 보이기도 했으나,[21] 이후 내부 문제 등으로 사용자가 크게 감소했다.[22]

2021년 6월 기준으로 운영 중인 주요 IRC 네트워크는 다음과 같다. 이 중 Libera Chat은 2021년 5월에 설립되어 비교적 역사가 짧지만, 가장 많은 사용자를 보유하고 있다.[19][20]

  • EFnet
  • Undernet
  • DALnet
  • QuakeNet
  • freenode
  • Libera Chat
  • IRCnet (WIDE 프로젝트 네트워크가 연결되어 있었음)


일본 사용자를 중심으로 운영되는 네트워크도 존재한다.

참조

[1] IETF Internet Relay Chat Protocol
[2] IETF Internet Relay Chat: Architecture
[3] 웹사이트 A Description of the DCC Protocol http://www.irchelp.o[...]
[4] 서적 Steal this File Sharing Book https://archive.org/[...] No Starch Press 2004-10-25
[5] 웹사이트 IRC Networks – Top 100 http://irc.netsplit.[...]
[6] 웹사이트 History of IRC (Internet Relay Chat) https://daniel.haxx.[...]
[7] 웹사이트 Founding IRC http://www.mirc.com/[...]
[8] 웹사이트 History of IRC (Internet Relay Chat) https://daniel.haxx.[...]
[9] 웹사이트 IRC transcripts from the time of the 1991 Soviet coup d'état attempt http://www.ibiblio.o[...] ibiblio
[10] 웹사이트 IRC logs of events of the Gulf War http://www.ibiblio.o[...] ibiblio
[11] 웹사이트 Logs of major events in the online community http://www.ibiblio.o[...] ibiblio
[12] IETF Internet Relay Chat Protocol
[13] 웹사이트 The Great Split http://irc.org/histo[...] IRC.org 2000-05-00
[14] 웹사이트 Channel Modes https://www.unrealir[...]
[15] 웹사이트 Cloaking https://www.unrealir[...]
[16] 웹사이트 Blitzed Open Proxy Monitor Shuts Down http://www.irc-junki[...]
[17] 웹사이트 IRCv3 http://ircv3.net/ IRCv3 Working Group 2016-00-00
[18] 웹사이트 Networks - IRCv3 https://ircv3.net/su[...] 2019-00-00
[19] 웹사이트 IRC Networks - in alphabetical order https://netsplit.de/[...]
[20] 웹사이트 IRC Networks - Top 100 https://netsplit.de/[...]
[21] 웹사이트 IRC is dead, long live IRC http://royal.pingdom[...] 2012-04-24
[22] 웹사이트 netsplit.de top 10 http://irc.netsplit.[...]
[23] 서적 The Book of IRC: The Ultimate Guide to Internet Relay Chat https://archive.org/[...] No Starch Press 1999-12-15
[24] 서적 Encyclopedia of New Media: An Essential Reference to Communication and Technology https://archive.org/[...] SAGE Publications 2002-12-10
[25] 서적 The iMac Book Coriolis Group 1999-03-03
[26] 서적 Information Technology for Management: Transforming Organizations in the Digital Economy John Wiley & Sons 2005-02-07
[27] 웹사이트 IRC Networks – Top 100 http://irc.netsplit.[...] netsplit.de
[28] IETF Internet Relay Chat Protocol
[29] IETF Internet Relay Chat: Architecture
[30] IETF Internet Relay Chat Protocol
[31] 웹사이트 Port Numbers https://www.iana.org[...] Internet Assigned Numbers Authority 2011-04-06
[32] IETF Internet Relay Chat Protocol
[33] 서적 Firewall Policies and VPN Configurations Syngress Publishing 2006-10-05
[34] IETF Internet Relay Chat Protocol
[35] IETF Extensions to the Internet Relay Chat Protocol (IRCX) IETF 1998-06-00
[36] IETF Internet Relay Chat: Architecture
[37] IETF Internet Relay Chat: Architecture
[38] IETF Internet Relay Chat Protocol
[39] IETF Internet Relay Chat: Architecture
[40] IETF Internet Relay Chat: Architecture
[41] 웹사이트 IRC daemons for LAN http://computerquest[...] 2014-10-02
[42] 웹사이트 Running an own IRC server http://www.irc-wiki.[...] 2014-10-02
[43] IETF Internet Relay Chat Protocol
[44] IETF Internet Relay Chat Protocol
[45] 웹사이트 IRC Chat Rooms https://www.disabled[...]
[46] 웹사이트 IRC List Modes – List mode extension showing pair confusion for lists http://www.shanemcc.[...] 2011-04-08
[47] IETF Internet Relay Chat Protocol
[48] IETF Internet Relay Chat Protocol
[49] IETF Internet Relay Chat Protocol
[50] IETF Internet Relay Chat: Channel Management
[51] IETF Internet Relay Chat: Channel Management
[52] IETF Internet Relay Chat: Channel Management
[53] IETF Internet Relay Chat: Channel Management
[54] IETF Internet Relay Chat Protocol
[55] IETF Internet Relay Chat Protocol
[56] IETF Internet Relay Chat: Channel Management
[57] IETF Internet Relay Chat Protocol
[58] 웹사이트 The 005 numeric: ISUPPORT http://www.irc.org/t[...] irc.org 2011-04-10
[59] IETF IRC RPL_ISUPPORT Numeric Definition IETF 2011-04-10
[60] 웹사이트 'multi-prefix' Extension - IRCv3 https://ircv3.net/sp[...]
[61] IETF Internet Relay Chat Protocol
[62] 웹사이트 IRC User Modes List http://www.alien.net[...] alien.net.au 2011-04-10
[63] 웹사이트 IRC Channel Modes List http://www.alien.net[...] alien.net.au 2011-04-10
[64] 웹사이트 IRC Server Modes List http://www.alien.net[...] alien.net.au 2011-04-10
[65] 웹사이트 IRCd Modes http://webtoman.com/[...] webtoman.com 2011-04-10
[66] IETF Internet Relay Chat Protocol
[67] 서적 Virtuelle Gruppen: Charakteristika und Problemdimensionen Springer VS 2010-03-30
[68] 서적 Hacking a Terror Network: The Silent Threat of Covert Channels Syngress Publishing 2010-03-30
[69] 서적 The Telecommunications Illustrated Dictionary CRC Press 2010-03-30
[70] 웹사이트 Frequently-Asked Questions http://freenode.net/[...] freenode 2010-03-30
[71] 웹사이트 IRC/Cloaks http://meta.wikimedi[...] Meta-wiki 2011-11-27
[72] 웹사이트 Uniform Resource Identifier (URI) Schemes https://www.iana.org[...] Internet Assigned Numbers Authority 2012-10-14
[73] 논문 Uniform Resource Locator Schemes for Internet Relay Chat Entities https://datatracker.[...] IETF 2003-01
[74] 웹사이트 node-irc https://www.npmjs.co[...] 2020-01-26
[75] 논문 A Discussion on Computer Network Conferencing IETF
[76] 논문 Internet Relay Chat: Architecture IETF
[77] 서적 (정보 부족) 2003
[78] 논문 A Discussion on Computer Network Conferencing IETF
[79] 논문 A Discussion on Computer Network Conferencing IETF
[80] 서적 (정보 부족) 2003
[81] 논문 A Discussion on Computer Network Conferencing IETF
[82] 서적 (정보 부족) 2003
[83] 논문 A Discussion on Computer Network Conferencing IETF
[84] 논문 A Discussion on Computer Network Conferencing IETF
[85] 웹사이트 Getting Help on EsperNet http://esper.net/hel[...] The EsperNet IRC Network 2012-07-31
[86] 웹사이트 New Feature: SSL For Users http://www.dal.net/n[...] DALnet 2012-07-31
[87] 서적 The Multi-Boot Configuration Handbook https://archive.org/[...] Que Publishing 2000-04-08
[88] 웹사이트 Warsow Wiki: IRC Module http://www.warsow.ne[...]
[89] 웹사이트 UT2004 Review http://www.bcchardwa[...] BCCHardware 2004-06-21
[90] 웹사이트 The Ultimate Uplink Guide http://guide.modlink[...]
[91] 웹사이트 ZDaemon – The Doom Wiki: Other utilities https://doomwiki.org[...]
[92] 웹사이트 How to setup [sic] an IRC client to connect and login [sic] to Ustream http://ustream-helpe[...] Ustream-Helpers 2012-01-29
[93] 웹사이트 Ustream vs. Justin.tv http://www.liquidsil[...] LiquidSilver 2010-06-20
[94] 웹사이트 Twitch IRC https://help.twitch.[...] 2017-04-07
[95] 웹사이트 The Evolution of Malicious IRC Bots http://www.symantec.[...] Symantec Security Response
[96] 웹사이트 psyBNC Readme http://www.psybnc.at[...] psybnc.at
[97] 웹사이트 IRC with irssi-proxy + screen http://chriscarey.co[...] chriscarey.com 2009-07-18
[98] 웹사이트 Detachable Frontend (Core Rewrite) / UML / Windows Port (kicking Glade) http://www.smuxi.org[...] smuxi.org 2004-12-25
[99] 웹사이트 About Smuxi http://www.smuxi.org[...] smuxi.org
[100] 서적 IRC Hacks O'Reilly Media 2004-07-27
[101] 서적 Steal this File Sharing Book No Starch Press 2004-10-25
[102] 뉴스 Pirated movies: Now playing on a server near you https://www.zdnet.co[...] 2002-05-08
[103] 웹사이트 IRC 101: What Is It & How Do I Use It? http://www.macobserv[...] Macobserver.com 2002-04-04
[104] 웹사이트 (정보 부족) http://www.irc.org/h[...]
[105] 문서 Because It's Time Network、学術機関の国際的なコンピュータのネットワーク
[106] 웹사이트 http://www.cre.ne.jp[...]
[107] 문서
[108] IETF Internet Relay Chat Protocol
[109] IETF Internet Relay Chat: Architecture
[110] 웹인용 A description of the DCC protocol http://www.irchelp.o[...] irchelp.org 2011-04-08
[111] 서적 Steal this File Sharing Book No Starch Press 2004-10-25
[112] 웹인용 IRC transcripts from the time of the 1991 Soviet coup d'état attempt https://web.archive.[...] ibiblio 2011-04-08
[113] 웹인용 IRC logs of events of the Gulf War http://www.ibiblio.o[...] ibiblio 2011-04-08
[114] IETF Internet Relay Chat Protocol
[115] IETF Internet Relay Chat Protocol
[116] IETF Internet Relay Chat: Architecture
[117] IETF Internet Relay Chat Protocol
[118] IETF Internet Relay Chat: Architecture
[119] 웹인용 Uniform Resource Identifier (URI) Schemes http://www.iana.org/[...] Internet Assigned Numbers Authority 2012-10-14
[120] IETF Uniform Resource Locator Schemes for Internet Relay Chat Entities IETF 2003-01
[121] IETF Extensions to the Internet Relay Chat Protocol (IRCX) IETF 1998-06



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com