eD2K 옆의 새로운 네트워크
ed3k는 eMule Qt 고유의 파일 공유 네트워크입니다. 해시로 식별되는 파일, 파일을 찾기 위한 Kademlia 네트워크, 선택형 서버와 업로드 대기열 등 eD2K를 20년간 작동하게 만든 요소는 그대로 유지하면서, 낡은 부분인 와이어 포맷, 전송 방식, 피어가 신원을 증명하는 방식을 새로 만들었습니다.
eMule Qt는 두 네트워크를 나란히 실행합니다. 네트워크 정보 대화상자와 서버 창의 내 정보 창에는 eD2K 및 Kad 섹션 바로 아래에 ed3k 네트워크 섹션이 표시되어 항목별로 비교할 수 있습니다.

같은 개념, 새로운 이름
ed3k 섹션의 대부분 항목에는 대응하는 eD2K 항목이 있습니다. 가장 중요한 차이는 eD2K에서 High ID, Kad에서 Open이라 부르는 상태가 ed3k에서는 Router라는 점입니다.
| eD2K / Kad | ed3k | 의미 |
|---|---|---|
| High ID / Kad Open | Router: Yes | 다른 노드가 직접 접속할 수 있습니다. 라우터는 Kad 레코드를 보관하고 방화벽 뒤의 노드를 돕습니다. |
| Low ID / Kad Firewalled | Router: No (leaf) | NAT 뒤에 있는 상태입니다. 피어는 릴레이와 홀 펀칭을 통해 여전히 접속할 수 있습니다. |
| Kad UDP 상태 | IPv4 / IPv6 | 각 주소 체계별로 따로 테스트합니다: Open, Cone NAT, Symmetric NAT. |
| Kad 버디 | 릴레이 | 연결 요청을 사용자에게 전달해 주는 라우터입니다. leaf는 최소 두 개를 유지합니다. |
| 서비스 중인 버디 | 서비스 중인 버디 | 내 라우터가 중계해 주는 leaf입니다. |
| eD2K 서버 | 인덱스 노드 | 모든 것을 인덱싱하는 일반 ed3k 노드입니다. 별도의 서버 소프트웨어나 프로토콜이 없습니다. |
| 사용자 해시 + Kad ID | 노드 ID | 모든 용도에 쓰는 하나의 ID로, 노드 자체 서명 키의 해시입니다. |
| 클라이언트 ID | — | 필요하지 않습니다. 피어가 자신이 본 사용자의 주소를 알려 줍니다. |
| TCP 포트 + UDP 포트 | UDP 포트 | 모든 용도에 포트 하나만 사용합니다. eD2K TCP 포트와 같은 번호입니다. |
| 난독화 (선택) | 연결: Obfuscated | 항상 켜져 있습니다. 평문 모드는 없습니다. |
| Kad Indexed | Indexed | 내 노드가 네트워크를 위해 저장하는 레코드와 그 크기입니다. |
상태 행은 eD2K와 같은 방식으로 색이 표시됩니다. 라우터로 연결되면 녹색, leaf로 연결된 동안에는 주황색입니다.
eD2K 대비 주요 개선점
- 설계부터 암호화. Kad와 파일 전송을 포함한 모든 패킷이 난독화된 QUIC으로 전송됩니다. 평문으로 전송되는 것은 없으며, 트래픽의 지문을 식별하기도 어렵습니다.
- Low ID도 더 이상 2등급이 아닙니다. 접속 가능 여부 테스트, 릴레이, UDP 홀 펀칭이 핵심 프로토콜에 포함되어 있어 방화벽 뒤의 두 노드끼리도 항상 전송할 수 있습니다.
- 하나의 네트워크에서 IPv4와 IPv6 지원. 둘 다 동등하게 지원하며, 접속 가능 여부도 각각 따로 확인합니다.
- 포트 하나. TCP와 UDP 포트를 각각 포워딩하는 대신 UDP 포트 하나면 됩니다.
- 실제 신원. 각 노드는 Ed25519 키를 가지며, 노드 ID는 그 키의 해시입니다. 다른 노드의 ID를 가로챌 수 없습니다.
- 잘못된 데이터를 즉시 감지. 파일은 BLAKE3 해시로 식별되고 256 KiB 블록 단위로 검증되므로, 손상된 블록은 도착 즉시 발견되고 보낸 노드도 알 수 있습니다. 9.28 MB 파트가 나중에 실패하는 일이 없습니다.
- 공격에 더 강함. Kad 위치는 노드의 IP 주소에 묶이고 주소 대역별 노드 수가 제한되어 가짜 노드 폭주를 막습니다. 키워드 레코드는 게시자가 서명하므로 효율적인 스팸 필터링이 가능합니다.
- 누구나 서버를 운영할 수 있음. 인덱스 노드는 기능이 하나 더 있는 노드일 뿐입니다.
- 더 가벼운 메시지. eD2K의 수작업 패킹 태그 대신 zstd 압축을 적용한 Protocol Buffers를 사용합니다.
- 확장 여지. 확장을 통해 파일 세트, 토렌트, Usenet 게시물, 파일 호스팅 링크를 같은 파일의 소스로 추가하고 채팅방 등을 지원하며, 기존 노드와의 호환성도 깨지지 않습니다.
eD2K와 대립하지 않고 함께 동작
공유 파일에는 eD2K 해시도 함께 들어 있어, eMule 피어와 ed3k 노드가 같은 다운로드를 제공합니다. eMule Qt는 ed3k에 eD2K TCP 포트 번호를 사용하고 ed3k 노드 ID로부터 eD2K 사용자 해시를 생성합니다. 따라서 서버, Kad, 소스 교환에서 오는 모든 eD2K 소스 레코드가 이미 다른 eMule Qt 클라이언트에게 사용자가 ed3k를 사용한다는 점과 접속 위치를 알려 줍니다. 기존 eMule 클라이언트는 아무 차이도 느끼지 못합니다.