본문 바로가기
Education/Bit 18th

P2P 공유 프로그램들의 동작원리 #1 eDonkey

by ★용호★ 2009. 8. 17.

1편 edonkey (당나귀)

한국에서 많이 쓰는 프로그램은 속칭 당나귀인 edonkey입니다. 직관적인 인터페이스와 사용자가

할일이 아무것도 없이 찾고 클릭해주는것 만으로 쉽게 공유가 된다는 장점이 있습니다. 최근에는

한국산인 Pruna 가 등장하면서 영어를 전혀 몰라도 사용하는데 아무런 지장이 없게 되었지요.


edonkey 호환 프로그램인 Emule
 
당나귀는 대용량 파일을 유리하게 받을수 있도록 설계된 P2P프로그램입니다. 일단 기본적으로
모든사람들은 서버에 접속을 하게됩니다. 서버가 하는일은 지극히 단순한 일입니다. 서버는 모든
접속자의 고유 정보를 저장하고 있다고 새로운 사용자가 접속을 하여 검색을 시도하면 다른 접속
자에게 원하는 파일이 있나 없나를 확인하게 됩니다.
 
즉 있는 컴퓨터들의 정보를 확인하여 원하는 접속자에게 그 결과를 되돌려 주는 역활을 합니다.
되돌려 받은 정보를 통해서 검색자는 원하는 파일을 받으려 시도를 합니다. 이때 부터는 서버는
안중에도 없으며 검색자는 직접 파일을 가진 다른 접속자의 컴퓨터로 접속을 하게 됩니다.
 
이런식으로 접속자는 수십 혹은 수천명의 파일보유자와 직접적으로 연결을 하게 됩니다. 그리고
나서는 자기가 원하는 파일 이름을 대는것이지요. 이때 파일보유자의 컴퓨터는 완벽한 파일을
가지고 있을수도 그렇지 않을수도 있습니다. 예를 들자면 접속자가 원하는 파일인 15분짜리의 mp3
중에서 파일 보유자는 뒤의 5분 분량이라던가 중간중간에 2분씩 3부분을 가지고 있을수도 있는
것 이지요.
자 그럼 어떻게 완벽한 파일을 받을수 있을까요? 원리는 간단합니다. 앞에서 말했듯이 접속자는
한번에 수십에서 많게는 수천명이랑 직접적으로 연결을 합니다. 즉 이 사람 저사람에게서 긁어모아
하나의 완벽한 파일을 만들어 내는것 이지요.

 
또한 한사람에게 받는것보다는 여러명에게 이조각 저조각 받는것이 당연히 빠르게 됩니다. 퍼즐도
혼자 푸는것보다는 2명이 빠르게 풀수 있는것처럼 같은 이치라고 보시면 됩니다.
 
이런방식으로 서버가 존재하는 방식의 장점은 무엇보다 "검색이 빠르다" 라는점이 있습니다. 모든
사용자의 정보를 한곳에 모아서 처리하기 때문에 언제든 원하면 한곳만 들춰보면됩니다. 삼각김밥
하나 살라면 편의점에 가는것처럼 필요한 파일이 있으면 서버에 물어보면 되는겁니다.(공장가서
삼각김밥 사는놈은 졸병)
 
이 방식의 단점은 무엇보다 작은 파일의 전송시 걸리는 시간입니다. 만약 10k짜리 파일을 받는다고
한다면 일단 검색을 해서 결과를 기다린 후에 원하는 파일을 가진사람에게 접속을 해야됩니다. 여
기까지는 그나마 괜찮겠지만 10k 짜리 파일이 200조각 나있다면 접속하는 사람 모두에게 조각이
있나 없나를 확인해야되고 설령 조각이 금세 찾아진다 하더라도 보내는 사람이 회선 한계에 도달
하면 여유가 생길때까지 한없이 기다려야만 합니다. 또한 보내는 회선을 모두가 한계를 1k 로 맞춰
놓는다면 접속자의 속도 한계가 비상식적으로 떨어질수도 있다는 단점이 있습니다.
 
그럼 여기서 한사람의 프로그래머로서 이 경우는 왜 법적으로 안전할수가 있는가 라는 토픽을 안집고 넘어갈수는 없겟지요.
 
일단 이 경우 서버는 실제로 어떠한 파일도 가지고 있지 않습니다. 즉 서버의 입장에서는 접속자들
이 주고 받는 파일이 불법인지 아닌지 전혀 확인한 방법이 없다는 것 입니다. 또한 사용자의 파일리
스트도 직접 보관하지 않습니다. 사실 사용자의 파일 리스트를 보관한다는것도 법적으로는 전혀 문
제될것이 없으나 미국 법원에서 리스트를 보관했다는 이유로 냅스터를 깨부셧습니다.(주:법은 절대
진실을 밝히거나 정의의 편이 되지는 않습니다) 또한 파일을 주고 받을때 서버를 통하지 않습니다.
즉 서버의 역활은 야후나, 구글 처럼 단순히 원하는 정보에 대한 검색결과만을 돌려주는데 있는것
이기에 사람들이 주고받는 파일이 저작권이 있는자료인지 심의를 통과 못한건지는 알수가 없는것

'Education > Bit 18th' 카테고리의 다른 글

Team Project P2P  (0) 2009.08.20
2조 P2P만들기 시퀀스 다이어그램  (0) 2009.08.17
2조 P2P 만들기 시퀀스 다이어그램  (0) 2009.08.17
2조 P2P 만들기 UseCase 명세서  (0) 2009.08.17
2조 P2P 만들기 UseCase Diagram  (0) 2009.08.17

댓글