Computer Science/Computer Network
[네트워크] "Napster", "Gnutella" - P2P applications (1)
oneonlee
2022. 10. 18. 00:04
반응형
P2P applications
Pure P2P architecture에 관한 내용은 이 곳을 참고해주세요.
(1) "Napster"
Napster는 잠꾸러기라는 뜻으로, 온라인 음악 파일 공유 서비스였다. (개발자 숀 패닝의 대학생 시절, 그의 룸메이트가 음악을 다운받느라 새벽에 매일 같이 웹 페이지를 뒤져서 숀 패닝이 잠을 못 잤다고 한다. 그래서 답답한 숀 패닝은 음악 파일 공유 서비스를 직접 만들어버렸고, '잠 좀 자자'라는 의미가 만든 "Napster"에 담겨있다고 한다.) (현재는 저작권 관련 소송 등의 문제 때문에 서비스가 중단되었다.)
- Napster는 초창기 P2P 모델로, 중앙화된 서버(centralized server)를 가진다.
- (1) 피어(A)는 서버에 연결하여 원하는 파일을 질문(query)한다.
- (2) 서버는 피어(A)에게 해당 파일을 갖고 있는 다른 피어(B)를 알려준다.
- (3) 피어(A)는 파일을 가진 피어(B)와 연결하여 파일을 요청하고, 서버를 거치지 않고 피어들끼리 파일을 공유한다.
이처럼, P2P 모델은 파일의 공유 시, 중앙 서버를 거치지 않고 클라이언트 컴퓨터끼리 직접 통신하는 방식이다.
하지만, Napster는 중앙 집중식 디렉토리(centralized directory)를 가지는데, 이 같은 구조는 아래와 같은 문제를 가진다.
- Robustness : single point of failure
- centralized server가 fail되면 서비스는 끝난다! (centralized service의 단점)
- Scalability : Performance bottleneck
(2) "Gnutella"
Gnutella는 GNU 회사에 다니던 개발자들이 만든 서비스이다. (개발자 중 한 명의 와이프가 누텔라를 좋아해서 이름을 이렇게 만들었다고 한다.)
- Gnutella는 중앙 서버를 두지 않는 분산형 서비스이다.
- 하나의 서버가 모든 것을 알기보다, 하나의 피어가 몇개의 피어들이 가진 파일을 알고 있고, 그 피어들도 몇 개의 피어들이 가진 파일을 아는 구조이다.
- 즉 다단계처럼 뻗어나가 결국 모든 피어들이 연결되는 형태이다.
- 작동 방식
- (1) 어느 피어가 어떤 파일을 원하면 자신이 알고있는 피어에게 쿼리를 날린다.
- (2) 쿼리를 받은 피어는 자기가 해당 파일을 가지고 있으면 쿼리를 날린 피어에게 알려주고, 자기가 해당 파일이 없으면 자신이 알고있는 피어에게 또다시 쿼리를 날린다.
- (3) 그렇게 어느 피어가 파일을 가지고 있는지 알게되면, 그 중 하나의 피어를 선택해 파일을 받는다.
- (4) 파일 전송에는 HTTP 프로토콜이 사용된다. (GET 메소드 사용)
- 이 방식은 중앙 서버가 없으므로, 서버가 고장나 전체 서비스가 다운되는 문제는 없지만 피어가 너무 많으면 속도가 느려진다는 단점이 있다.
다음 글에서 "BitTorrent"에 대한 설명으로 이어집니다.
https://oneonlee.tistory.com/109
참고 자료
- Computer Networking: A Top Down Approach 6th edition - Jim Kurose, Keith Ross Addison-Wesley March 2012
- https://ddongwon.tistory.com/m/75
반응형