개요편집이의 제기
이동키 네트워크(eDonkey network)는 2000년 미국 개발자 제드 맥케일럽(Jed McCaleb)과 샘 야간(Sam Yagan)이 만든 탈중앙화된 서버 기반 P2P 파일 공유 네트워크다. 한국에서는 '당나귀' 또는 '당나귀 네트워크'라고도 부르며, 이 용어는 네트워크 자체와 그 구성 요소를 통칭한다. 중앙 서버에 파일을 저장하지 않고 클라이언트 간 직접 전송하는 피어 투 피어 방식을 채택했으며, 서버는 클라이언트 간 연결을 중개하는 허브 역할을 한다. 윈도우, macOS, 리눅스, 유닉스 계열 운영체제에서 이용 가능하다.[1][2][3]
작동 방식과 유형편집이의 제기
네트워크 구조
탈중앙화 네트워크이나 '대부분 서버 기반(mostly server-based)'으로 동작한다. 중앙 허브는 없으나 사용자가 서버 소프트웨어를 실행해 서버를 네트워크에 추가할 수 있다. 클라이언트는 서버에 접속해 파일 위치를 파악한 뒤 다른 클라이언트와 직접 데이터를 주고받는다. 서버 주소가 수시로 변하므로 클라이언트는 서버 목록을 정기적으로 갱신한다.[3]
서버 소프트웨어
두 계열이 존재한다.
- 메타머신 원본: C++로 작성, 클로즈드 소스, 사유 소프트웨어, 더 이상 유지보수 안 함.
- e서버(eserver): C로 작성, 역시 클로즈드 소스·사유지만 무료로 여러 OS·아키텍처에 제공. 2008년 시점 거의 모든 eD2k 서버가 e서버를 구동했다.[3]
주요 구현체로 루그두눔(Lugdunum) 서버가 있다. 프로토콜을 리버스 엔지니어링해 처음부터 재설계했으며, 메타머신이 2002년 말 소스 코드를 공개했으나 사용되지 않았다. 루그두눔은 하위 호환성을 유지하며 eD2k 프로토콜을 확장했다. 무료이나 오픈 소스는 아니며, 가짜 서버 생성과 서버 공격 방지를 이유로 소스를 공개하지 않는다.[3]
2007년 9월 사탄-이동키-서버(satan-edonkey-server)가 등장했다. C++ 버전과 자바 버전으로 제공되며 역시 리버스 엔지니어링 기반이다. 주요 서버들이 연이어 폐쇄된 직후 발표돼 스파이웨어 의심을 받았으나, 신뢰받는 eMule 개발자들이 소스를 검토한 결과 악성 코드는 없는 것으로 확인됐다. 무료로 배포된다. 자바 버전 서버 소프트웨어는 2012년에도 작성됐다.[3]
클라이언트 소프트웨어
- eDonkey2000: 메타머신 원본 클라이언트, 프리웨어이나 클로즈드 소스, 현재 중단됨.
- eMule: 윈도우용 무료 클라이언트, Visual C++로 작성, GNU GPL 라이선스. 와인(Wine) 환경에서 리눅스 구동 가능. 수많은 모드(Mod)가 존재.
- eMule Plus: GPL 라이선스 윈도우 클라이언트, eMule 기반이나 KAD·난독화 미지원, 자동 가짜 파일 검사와 향상된 GUI 등 독자 기능 추가. 원본 eMule과 직접적 연관 없음.
- aMule: lMule에서 포크, eMule 인터페이스·사용감 완전 복제, 현재 eMule 프로젝트와 코드 공유.
- 프루나(Pruna): 한국어 기반 eMule 파생 클라이언트, 구 명칭 미디어뱀프(MediaVAMP).
- Shareaza: Gnutella2, Gnutella, 비트토렌트, eD2k 다중 네트워크 지원 오픈 소스 클라이언트. 네트워크 통합 검색, 브라우저 연동, 사용자 프로필, 원격 파일 탐색, 채팅, 고급 검색 필터 제공.
- MLDonkey, Morpheus, Hydranode, iMule(I2P 기반 익명 eMule), JMule(자바 멀티플랫폼), Jubster, lMule(리눅스 대상 초기 eMule 기반), Lphant(.NET/모노 크로스플랫폼, eDonkey+비트토렌트), eAnt(Lphant 포크, 소스 공개 유지, 현재 비활성), xMule(lMule 포크, 2009년 1월 중단), qMule(libed2k, libtorrent-rasterbar, Qt 기반 멀티프로토콜 크로스플랫폼).
프로토콜과 해시 식별
파일은 MD4 루트 해시로 고유 식별된다. 파일을 9,728,000바이트(9500 KiB) 청크로 나누고 각 청크에 128비트 MD4 체크섬을 부여한다. 전송 오류 시 해당 청크만 손상 처리되며, 나머지 청크는 공유 가능해 대용량 파일 배포 속도를 높인다. 파일 식별 체크섬은 청크 체크섬들을 순서대로 연결해 해시한 값이다. MD4 충돌 공격 취약점으로 악의적 사용자가 서로 다른 청크에 같은 체크섬을 만들 수 있다.[3]
검색 기능
파일명, 크기, 확장자, 비트레이트 등 부차 속성으로 검색 가능. 루그두눔 버전 e서버는 복잡한 불리언 검색(예: one AND two AND (three OR four) AND ("five four three" OR "two one") NOT seven)을 지원한다. 웹사이트에서 eD2k 링크(체크섬) 형태로 인기 파일 목록과 활성 서버 목록을 제공하기도 한다.[3]
후속 프로토콜과 서버 의존성 극복
원래 네트워크는 사용자 운영 중앙 서버에 의존해 트래픽 집중과 공격 취약성이 있었다. 이를 해결하기 위해 두 방향에서 후속 프로토콜이 개발됐다.
- 오버넷(Overnet): 메타머신이 eDonkey 프로토콜 후계로 개발.
- 카데말리아(Kademlia) 기반 Kad 네트워크: eMule 프로젝트가 독자 개발. 순수 P2P로 서버 없이 동작.
eMule은 '하이 아이디(High ID)'(방화벽이 들어오는 eD2k 연결을 차단하지 않는 상태) 클라이언트 간 소스 교환(source exchange) 기능을 포함해, 원본 Kad·eD2k 서버와 완전히 단절된 후에도 다수 소스가 있는 파일을 며칠간 계속 다운로드·업로드할 수 있다. 이 기능은 시드(소스)가 많은 파일의 서버 부하를 3분의 2 이상 줄이도록 설계됐다. 메타머신 원본 eDonkey 클라이언트는 소스 교환을 지원하지 않는다.[3]
라이브러리
libed2k: 크로스플랫폼 C++ eDonkey 프로토콜 라이브러리. libtorrent-rasterbar에서 영감받아 개발됐다.[3]
사례편집이의 제기
자료에 언급된 주요 클라이언트와 서버는 본문 '작동 방식과 유형'에서 이미 상세히 다뤘다. 한국에서 알려진 클라이언트로는 eDonkey2000, eMule, eMule Plus, 프루나(Pruna), 동키호테(Don Quixote) 등이 있다.[2]
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.