P2P 시스템 개발의 간략한 역사
1999, 파일 공유 시스템 Napster 가 탄생했습니다. Napster 는 많은 개인용 컴퓨터 사용자가 참여하는 최초의 P2P 유틸리티 시스템입니다. 각 사용자는 자신이 원하는 파일을 제공하고 다른 사용자가 감상하는 파일을 다운로드할 수 있습니다. Napster 가 해결해야 할 핵심 문제는 사용자가 파일 검색 요청을 할 때 정확한 일치 결과를 얻을 수 있도록 어떤 시스템에 어떤 파일이 있는지 아는 것입니다.
Napster 에서 디렉토리 서버라는 중앙 서버는 모든 파일에 대한 메타데이터 정보 (파일 제목 및 간단한 설명 정보) 와 스토리지 노드의 IP 주소를 저장하는 데 사용됩니다. 노드가 시스템에 추가되면 먼저 디렉토리 서버에 접속하여 자신의 주소와 파일 목록을 보고해야 합니다. 사용자가 파일이 필요할 때 디렉토리 서버에 검색 요청을 제출하면 디렉토리 서버는 검색 요구 사항을 충족하는 모든 파일의 저장 주소를 반환하고 사용자는 해당 주소를 기준으로 해당 파일을 즐기는 노드에서 직접 파일을 다운로드합니다. 디렉토리 서버는 인덱스 서비스만 제공하고 파일 저장 및 다운로드 서비스는 하지 않기 때문에 수만 개의 노드가 동시에 온라인 상태로 지원됩니다. Napster 는 출시 후 빠르게 인기를 끌면서 빠르게 성장하고 있는 네트워크 애플리케이션 시스템이 되었습니다.
실제로 Napster 의 모든 노드가 동일한 것은 아니며 디렉토리 서버는 다른 노드보다 훨씬 더 많은 작업을 수행해야 합니다. 이런 의미에서, Naspter 는 순수한 지점간 시스템이 아니다. Naspter 에서 노드의 높은 동적 특성 (즉, 노드 가입 및 종료가 빈번함) 으로 인해 디렉토리 서버가 지속적으로 업데이트됩니다. 또한 디렉토리 서버는 모든 사용자의 쿼리 요청에 응답할 책임이 있습니다. 따라서 시스템이 더 클 때 디렉토리 서버는 여전히 시스템의 병목 현상이 될 수 있습니다. 또한 디렉토리 서버의 존재는 시스템의 핵심이 되었으며 시스템 전체에서 가장 취약한 지점이 되었습니다. Naspter 이후의 P2P 시스템은 이 점에서 개선되었으며, 시스템은 기본적으로 중심이 아닌 구조를 채택하여 견고성과 확장성을 크게 높였다.
Napster 가 초기에 큰 성공을 거둔 후, 곧 저작권 문제가 발생했다. Napster 에 있는 많은 파일들이 음악 미디어 파일이기 때문에, 이러한 음악 매체들은 무단 전파를 허용하지 않는다. Napster 의 디렉토리 서버는 이러한 파일의 보급을 지원하기 때문에 Napster 는 음악 작성자가 저작권을 보호하는 데 어려움을 겪고 200 1 에 강제로 폐쇄되었습니다.
Napster 는 처음으로 WAN 에서 P2P 사상의 실현 가능성을 검증했다. Napster 가 폐쇄된 후 더 많은 P2P 파일 공유 시스템이 급속도로 부상하면서 인터넷 발전의 거대한 물결이 되었으며, 그중에서도 Gnutella 와 KaZaA 가 가장 유명하다.
Gnutella 에서 KaZaA 까지
Gnutella 는 Naspter 의 아키텍처를 완전히 바꿨습니다. 중앙 디렉토리 서버를 사용하는 대신 완전 피어 구조를 사용합니다. 각 노드는 다른 여러 노드의 IP 주소 ("포인터" 라고 함) 를 기록하므로 전체 시스템의 토폴로지가 포인터로 구성된 직접 그래프 ("오버레이" 라고도 함) 가 됩니다. Gnutella 의 오버레이 네트워크는 포인터로 연결해야 하는 노드를 규정하지 않기 때문에 전체 오버레이 네트워크에는 링, 큐브, 계층 구조, 트리 구조, 유향 비순환 그래프 등의 정렬된 구조가 없습니다. ), 소위 "구조화되지 않은 중첩" 입니다.
사용자가 파일을 검색해야 할 때 범위 내에서 폭 우선 또는 깊이 우선 검색을 수행하고 일정 범위를 검색한 후 검색 기준에 맞는 결과를 사용자에게 반환합니다. 이 검색은 전체 오버레이 네트워크를 덮어쓸 수 없기 때문에 완전히 검색할 수 없는 문제가 있습니다. 하지만 이 문제는 심각하지 않습니다. 대부분의 경우 사람들은 시스템 전체에 많은 사본이 있는 인기 있는 파일을 항상 검색하기 때문입니다. 검색 범위가 작지 않은 한, 이들 중 하나 이상을 항상 찾을 수 있습니다. 물론 구조화되지 않은 오버레이 네트워크에서 냉문 파일을 검색하는 방법도 P2P 연구의 열점 문제이며, 최근 몇 년 동안 약간의 진전이 있었다.
사실, 검색 무결성을 희생하는 이러한 접근 방식은 확장성이 매우 높습니다. 즉, 시스템에는 더 이상 중앙 노드가 병목 현상이 없으며 수백만 개 또는 수천만 개의 노드로 확장할 수 있습니다. 그리고 공격에 취약한 핵심 노드가 없어, 시스템의 루봉도 높아졌다.
KaZaA 는 Gnutella 를 더욱 개선했습니다. 시스템에 있는 대부분의 노드는 매우 동적이기 때문에 네트워크의 노드를 덮는 포인터는 시스템을 떠난 노드를 제거하고 새 온라인 노드를 추가하기 위해 자주 업데이트해야 합니다. Napster 와 Gnutella 의 실무 경험에서 알 수 있듯이 P2P 파일 공유 시스템의 노드 능력은 크게 다릅니다. 일부 노드는 매우 강하고 안정적이며, 매번 온라인에 접속할 때마다 장시간 온라인 상태를 유지할 수 있고, 더 많은 노드가 약해서, 시스템에 가입한 후 짧은 시간 (대부분 몇 분) 만에 시스템을 떠날 수 있다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 스포츠명언) 이렇게 하면 KaZaA 는 시스템의 강력한 노드를 사용하여 시스템의 백본을 형성하고 약한 노드는 인접한 강한 노드에 연결됩니다. 즉, KaZaA 는 노드를 강한 노드와 약한 노드로 나누고, 강한 노드는 Gnutella 와 같은 오버레이 네트워크를 구축하고, 약한 노드는 하나 이상의 강한 노드만 연결하고, 자신의 메타데이터 (예: * * * * 공유 파일 목록) 를 강한 노드로 보내고, 파일 검색은 강력한 노드에서만 수행됩니다. 이렇게 카자는 Gnutella 보다 높은 안정성과 검색 효율성을 얻었다. 현재 KaZaA 와 동시에 온라인 사용자는 300 만 명 이상으로 안정되어 세계 최대의 분산 시스템이 되었습니다.
최근 P2P 파일 공유 시스템의 저작권 문제가 점차 해결되었다. Napster 가 폐쇄된 후 음악 소프트웨어 제조업체인 Roxio 에 인수되면서 Naspter network 는 합법적인 소프트웨어 배포 채널이 되었습니다. 이후 Roxio 는 실적 전망으로 Napster 로 이름을 바꾸었고 2005 년 6 월 5438+ 10 월 나스닥에 상장됐다. 현재 Napster 는 전 세계에 7 천만 명이 넘는 등록 사용자를 보유하고 있습니다.
P2P 구조의 응용 및 연구
한편, P2P 파일 공유 시스템의 성공으로 인해 사람들은 P2P 구조 개발에 더 많은 노력을 기울이고 있습니다. 가장 성공적인 것은 대형 파일 배포 시스템인 BitTorrent 와 오버레이 네트워크를 기반으로 한 IP 전화 시스템 Skype 입니다.
기존 파일 다운로드는 대부분 FTP 와 같은 프로토콜을 사용하여 C/S 모드로 다운로드합니다. 이렇게 하면 많은 사용자가 인기 있는 파일을 동시에 다운로드해야 합니다. 서버의 대역폭이 제한되어 있어 많은 사용자의 요청이 충족되지 않아 전반적으로 다운로드 효율성이 떨어집니다. BitTorrent 는 다운로드 사용자 간의 대역폭을 최대한 활용하여 데이터 전송을 수행함으로써 서버의 부담을 줄이고 다운로드 속도와 시스템 확장성 (동시 다운로드 수) 을 높이려고 합니다. BitTorrent 의 기본 정책은 각 사용자가 서버에서 데이터의 일부를 다운로드하고, 각 사용자가 다른 부분을 다운로드하고, 사용자가 서로 가지고 있지 않은 데이터를 교환하면 결국 모든 사용자가 모든 데이터를 얻을 수 있다는 것입니다. 비트토렌트가 출시 된 후 빠르게 인기를 얻었습니다. 점점 더 많은 사람들이 비트토렌트를 사용하여 인터넷에서 데이터를 다운로드함에 따라 P2P 시스템은 빠르게 네트워크 트래픽의 50% 이상을 차지하는 주요 인터넷 어플리케이션이 되었습니다.
Skype 는 인터넷을 통해 직접 연결된 IP 전화보다 더 나은 음성 효과를 제공하는 오버레이 네트워크 기반 IP 전화 시스템으로 사용자에게 인기가 있습니다. 2003 년 출시 이후 사용자 증가율이 급속히 증가했습니다. 2005 년 2 월 현재 Skype 등록 사용자는 2 1 만 명에 달했으며 온라인 사용자는 200 만 명을 돌파했습니다. 스카이프의 시스템 구조는 카자와 거의 비슷하다. 사용자 간에 음성 통신이 필요할 때 Skype 는 현재 대역폭이 가장 큰 오버레이 네트워크를 찾아 다중 점프를 통해 데이터를 전송합니다. 일반적으로 오버레이 네트워크에서 발견된 전달 경로의 품질은 통화 두 점 사이의 직접 경로보다 우수하므로 통화 중 음성이 더 명확하고 원활합니다. Skype 의 출현과 급속한 발전으로 인해 점점 더 많은 사용자가 IP 전화로 전환함에 따라 기존 통신 업계에 위협이 되고 있습니다. 미래에는 Skype 와 같은 P2P 기반 IP 전화 시스템이 전통적인 전화 서비스를 대체로 대체할 가능성이 높으며, 사람들의 일상적인 의사 소통을 위한 기본적인 방법 중 하나가 될 것입니다.
P2P 시스템이 공업계에서 급속히 발전함에 따라 연구계도 제때에 후속 조치를 취해 대규모 P2P 시스템 연구를 전개하였다. 2000 년 이후 P2P 시스템에 대한 중요한 연구 결과가 OSDI, SOSP, SIGCOMM, USENIX 및 HOTOS 의 최상위 컨퍼런스에서 계속 나타나고 있습니다. 200 1 년 학계에서는 P2P 시스템을 주제로 새로운 학술회의 IPTPS 를 개최했습니다. 대회는 유명 고교와 연구기관의 광범위한 관심을 받아 신속하게 P2P 연구 분야의 정상회담이 되어 대량의 우수 논문을 발표하여 P2P 연구의 풍향표가 되었다. 2002 년부터 버클리 스탠포드 등 유명 대학들이 P2P 관련 대학원 과정을 잇달아 개설해 P2P 를 새로운 연구 방향으로 추진했다.
정신적 본질은' 노드 협력' 이다
P2P 시스템의 본질은 "노드 협업" 입니다. 따라서 한 시스템에 관리자가 없는 한 모든 작업은 노드 간 교환과 협력을 통해 이루어지며, 이 시스템은 P2P 시스템으로 간주될 수 있습니다. 일반적으로 기존 P2P 시스템은 두 가지 범주로 나눌 수 있습니다.
첫 번째 범주는 "서비스 지향 P2P 시스템" 입니다. P2P 서비스 시스템은 WAN 의 서비스 노드를 피어 투 피어 방식으로 구성하여 사용자에게 더 강력하고 신뢰할 수 있는 서비스 (데이터 서비스, 컴퓨팅 서비스, 스토리지 서비스 등) 를 제공합니다. ). 이러한 시스템에는 만개의 분산 실험 플랫폼인 PlanetLab, Ivy 등이 포함됩니다.
두 번째 범주는' 물물 교환을 위한 P2P 시스템' 이라고 합니다. P2P 스위칭 시스템은 인터넷상의 많은 최종 사용자에게 리소스를 교환할 수 있는 플랫폼을 제공합니다. 사용자는 파일, 블록, 스토리지 공간 등 이 플랫폼에서 리소스를 교환할 수 있습니다. 이러한 시스템에는 KaZaA, BitTorrent, Pastiche 등이 포함됩니다.
P2P 서비스 시스템과 P2P 스위칭 시스템 모두 기존의 분산 시스템에서 볼 수 없는 많은 새로운 문제에 직면해 있습니다.
노드의 수가 매우 많다.
많은 P2P 시스템은 이미 백만 노드에 달하는 동시에 온라인 규모에 이르렀다. 이렇게 큰 규모의 직접적인 결과 중 하나는 완전히 연결된 위상을 사용할 수 없다는 것입니다. 즉, 각 노드가 현재 다른 모든 노드를 기록하도록 하는 것입니다. 이렇게 하면 노드에 다른 노드에 대한 자세한 정보를 알리고 두 노드가 통신할 수 있도록 하는 것이 어려운 문제입니다. 따라서 P2P 시스템의 노드 정보 수집 알고리즘 및 오버레이 라우팅 프로토콜은 P2P 연구의 중요한 방향이 됩니다.
노드는 매우 동적입니다.
사용자에게 P2P 시스템을 사용하는 표준 모드는 "시스템 진입-자원 검색-자원 확보-시스템 종료" 이며 일반적으로 시간이 오래 걸리지 않습니다. 따라서 P2P 시스템의 두드러진 특징 중 하나는 노드 평균 온라인 시간이 짧다는 것입니다. 실험 계산에 따르면 Napster 및 Gnutella 시스템의 노드에 대한 평균 온라인 시간은 2 시간 이상입니다. 노드의 높은 동적 특성으로 인해 데이터 가용성을 유지하기가 매우 어렵습니다.
노드는 이질적입니다.
인터넷의 노드는 하드웨어 기능과 액세스 모드가 다릅니다. 이로 인해 P2P 시스템에 참여하는 노드는 스토리지 용량, 컴퓨팅 용량 및 대역폭 성능에 큰 차이가 있습니다. 이러한 이질성을 활용하여 모든 노드의 사용 가능한 리소스를 최대한 활용하고 시스템의 모든 측면에서 성능을 향상시키는 방법은 P2P 시스템이 신중하게 연구해야 하는 문제입니다.
노드 분포가 광범하다.
P2P 시스템의 노드는 전 세계에 분포되어 있습니다. 시간대가 다르기 때문에, 시스템의 다른 부분은 시간에 따라 매우 바쁠 것이다. 이는 로드 밸런싱, 작업 마이그레이션 및 복제 전략에 새로운 과제를 제기합니다.
네트워크는 비동기적이다.
기존의 분산 시스템은 클러스터 또는 LAN 범위 내에 구축되어 있으며 네트워크는 동기화 네트워크에 속합니다.
(동기식 네트워크) 즉, 두 노드 간의 통신 지연에는 항상 상한선이 있습니다. 그러나 P2P 시스템은 인터넷의 비동기 네트워크에 배포됩니다. 네트워크는 종종 차단, 간섭 및 분열되기 때문에 시스템의 두 점 간의 통신 지연에는 상한선이 없습니다. 인터넷의 비동기성은 엄격한 의미를 필요로 하는 응용에 큰 어려움을 가져왔다. 예를 들어, 복제 알고리즘은 비동기 네트워크에서 엄격한 선형화를 보장하지 않습니다. 그렇다면 인터넷 환경에서 다양한 작업의 신뢰성과 일관성을 어떻게 보장할 수 있을지는 신중하게 분석하고 연구해야 한다.
노드 간에 상호 신뢰가 없습니다.
P2P 노드는 서로 다른 조직과 사용자로부터 온 것이며 노드 간에 자연스러운 신뢰가 없기 때문에 보안 및 개인 정보 보호 작업이 매우 중요합니다. 다른 노드와 데이터를 교환할 때 자신의 사생활을 보호하는 방법은 항상 P2P 연구의 중요한 방향이다.
노드는 이기적이다.
많은 이성적인 사용자들은 항상 다른 사람의 자원을 많이 이용하고 자신의 자원을 적게 기여하려고 노력한다. 실험에 따르면 Gnutella 의 노드 중 25% 는 다른 사람과 데이터를 공유하지 않고 다른 사람에게서만 데이터를 다운로드하는 것으로 나타났습니다. 많은 사용자 (약 30%) 가 대역폭을 낮게 보고하여 다른 사용자가 데이터를 다운로드하려는 의지를 줄입니다. 사용자가 더 많은 자원에 기여하고 교환의 형평성을 보장하는 방법을 장려하는 것도 많은 연구자들이 주목하는 핫스팟이다.
시스템이 모두 공용 네트워크에 노출되었다.
전통적인 분산 시스템에서는 사용자와 교환을 담당하는 포털 노드만 인터넷에서 직접 액세스할 수 있고, P2P 시스템의 거의 모든 노드는 인터넷에서 직접 액세스할 수 있으므로 P2P 시스템이 공격에 더 취약합니다. 특히 대부분의 P2P 파일 공유 시스템과 같이 노드가 자유롭게 가입할 수 있는 일부 시스템에서는 공동 공격을 방지하는 방법이 더욱 중요해졌습니다.
P2P 시스템의 이러한 새로운 기능으로 P2P 시스템은 기존의 분산 시스템과 외관적으로 크게 다릅니다. 이것이 많은 저명한 학자들의 연구 흥미를 불러일으킬 수 있는 이유 중 하나이다.
P2P 응용 시스템 응용 프로그램 상태
P2P 기술이 발전함에 따라 사람들은 P2P 를 사용하여 다양한 문제를 해결하려고 시도하고 있으며, 점점 더 많은 P2P 애플리케이션 시스템이 제시되어 다음과 같은 실제 테스트를 받고 있습니다.
Wan 분산 스토리지 시스템 (P2P 스토리지 시스템).
분산 스토리지 시스템은 항상 분산 시스템의 중요한 영역이었으며 기존의 분산 파일 시스템, 분산 개체 스토리지 시스템 및 LAN 의 분산 데이터베이스는 모두 좋은 연구 기반을 가지고 있습니다. P2P 기술이 등장하자 사람들은 이러한 분산 스토리지 시스템을 더 넓은 범위로 확장하려고 시도하면서 WAN 에 구축된 분산 파일 시스템, 개체 스토리지 시스템 및 데이터베이스 시스템을 제안했습니다.
비디오 멀티 캐스트 시스템.
비디오 멀티 캐스트는 대역폭 요구 사항이 높고, 기존의 C/S 구조의 멀티 캐스트 시스템은 서버 수출 대역폭 제한으로 인해 확장성이 떨어지는 경우가 많습니다. P2P 구조 기반 비디오 그룹 방송 시스템에서는 소수의 노드만 서버에서 직접 데이터를 가져오고, 더 많은 노드는 다른 노드에서 데이터를 가져오고, 다른 노드는 다른 노드에 데이터를 제공합니다. 전체 시스템의 아키텍처는 트리 또는 메쉬 구조입니다. 이 피어-투-피어 비디오 멀티 캐스트 시스템은 노드 간 사용 가능한 대역폭을 최대한 활용하여 시스템의 확장성을 크게 향상시킵니다.
대형 파일 배포 시스템.
비디오 그룹 방송 시스템과 마찬가지로 대용량 파일 배포 시스템도 노드 간에 데이터를 전송하여 데이터 소스의 압력을 줄이며, 아키텍처는 트리 또는 메쉬 구조입니다. 그러나 파일 배포 시스템은 실시간 요구 사항이 높지 않고 허용되는 최소 대역폭 요구 사항도 낮기 때문에 비디오 데이터보다 대역폭을 최대한 활용하여 확장성을 높일 수 있습니다.
도메인 이름 서버 (DNS).
현재 인터넷상의 DNS 서버 간 연결은 트리 구조를 채택하고 있다. 이러한 구조에서 자주 사용되지 않는 도메인 이름을 확인하는 것은 비효율적입니다. 트리 구조에는 많은 점프의 질의와 전달이 필요하기 때문입니다. 특히 잘못된 도메인 이름을 구문 분석하거나 구문 분석을 담당하는 서버를 일시적으로 사용할 수 없으므로 사용자에게 반환하는 데 시간이 오래 걸리고 쿼리 실패가 표시됩니다. 또한 현재 메커니즘에서 문서를 식별하는 URL 이 저장 위치와 직접 관련되어 있어 문서 마이그레이션에 많은 불편을 겪고 있습니다. P2P 아키텍처로 DNS 시스템을 재구성하는 데 많은 노력을 기울이고 있으며, 문서 인식과 저장 위치 간의 상관 관계를 분리하여 좋은 결과를 얻었습니다.
웹 협업 캐시 (웹 캐시).
웹 사이트에는 종종 액세스 핫스팟이 있어 웹 페이지의 가용성과 액세스 효율성에 영향을 줍니다. P2P 를 통해 웹 페이지를 여러 노드에 캐시하면 이 문제를 잘 해결할 수 있습니다. 이러한 협업 캐싱 방식은 여러 클라이언트와 여러 서버 간에 수행할 수 있으며 서버와 해당 클라이언트를 구성하여 할당 정책을 향상시킬 수 있습니다.
라우트를 덮어쓰다.
인터넷은 임의의 두 점 사이의 데이터 경로를 제공할 수 있지만 라우터 업데이트, 구성 오류, 네트워크 정체 등으로 인해 두 점 간의 통신 품질이 좋지 않거나 완전히 끊어지는 경우가 많습니다. 이러한 상황을 줄이거나 피하기 위해 통신이 필요한 많은 노드 사이에 오버레이 네트워크를 설정하는 것이 좋습니다. 두 점 간의 직접 통신이 원활하지 않을 경우 다른 노드의 전달을 통해 보다 효율적인 통신을 할 수 있습니다. 예를 들어, 노드 A 가 노드 B 에 메시지를 보낼 수 없거나 통신 품질이 좋지 않을 경우, 다른 노드 C, A 와 C 사이에 C 와 B 간의 통신이 원활하고 양호하여 A 가 C 에 메시지를 보내고 C 가 B 로 다시 전달될 수 있습니다. .....
응용 계층 멀티 캐스트.
IP 계층 그룹 방송 기술은 10 년 동안 제안되었지만 널리 사용되지 않았습니다. 주로 라우터 알고리즘을 변경해야하기 때문에 널리 배포하기가 어렵습니다. 또한 IP 그룹 캐스트는 그룹 상태 (그룹 이름 및 구성원 주소) 를 기록해야 하므로 프로토콜이 매우 복잡하여 인터넷 설계에서 고수해 온 무상태형 IP 계층의 기본 원칙에 부합하지 않습니다. 이에 따라 IP 계층 지원이 필요하지 않은 애플리케이션 계층 그룹 캐스트, 즉 메시지를 수신해야 하는 노드 간에 메시지를 지속적으로 전달하여 그룹 내 모든 구성원이 메시지를 받을 수 있도록 하는 것이 좋습니다. 많은 애플리케이션 계층은 트리 구조를 통해 노드 간에 멀티캐스트를 수행하며 (1) 노드가 드나들 때 트리 구조를 신속하게 복구할 수 있도록 합니다. (2) 더 낮은 인터넷 구조와 일치하도록 이러한 트리 구조를 최적화함으로써 멀티 캐스트 효율성을 높이고 인터넷 링크에 대한 멀티 캐스트 통신의 압력을 줄입니다.
또한 P2P 검색 엔진을 구축하고, P2P 시스템을 사용하여 네트워크 상태를 측정하고, P2P 라우팅을 통해 방화벽과 게이트웨이 간의 장벽을 제거하고, P2P 게임 시스템을 구축하는 등의 시도도 있습니다. , 여기에 자세히 소개하지 않습니다.