그누텔라2

Gnutella2
Shareaza2.JPG

G2라고도 불리는 Gnutella2는 주로 Michael Stokes에 의해 개발되어 2002년에 출시된 피어피어 프로토콜입니다.

G2는 gnutella 프로토콜에서 영감을 얻었지만 연결 핸드쉐이크 및 다운로드 [1]메커니즘을 제외하고는 디자인을 거의 공유하지 않습니다.

G2는 확장 가능한 바이너리 패킷 포맷과 완전히 새로운 검색 알고리즘을 채택합니다.

게다가 G2는, 관련하는(그러나 현저하게 다른) 네트워크 토폴로지와 개량된 메타데이터 시스템을 갖추고 있기 때문에, 네트워크상의 바이러스등의 가짜 파일을 효과적으로 삭감할 수 있습니다.

역사

2002년 11월 Michael Stokes는 Gnutella 개발자 포럼에 Gnutella2 프로토콜을 발표했습니다.Gnutella2의 목표는 주로 Gnutella 0.6 프로토콜과 완전히 단절하고 처음부터 다시 시작하는 것이라고 생각하는 반면, Gnutella의 덜 깨끗한 부분 중 일부는 더 우아하고 일반적으로 인상적이고 바람직하다; 다른 개발자, 주로 LimeWireBearShare는 "싼 홍보"라고 생각했다.스턴트" 및 기술적 장점 할인.일부에서는 여전히 네트워크를 "Gnutella2"라고 부르는 것을 거부하고 대신 "Mike's Protocol"("MP")[2]이라고 부릅니다.

Gnutella2 프로토콜은 여전히 Gnutella 0.6 사양에 정의된 대로 연결에[1] 오래된 "GNUTELLA CONNECT/0.6" 핸드셰이크 문자열을 사용합니다.하위 호환성이 있는 이 핸드쉐이크 방식은 Gnutella Developers Forum에 의해 Gnutella 네트워크를 사용하여 관련 없는 새로운 네트워크를 부트스트래핑하려는 시도로 비판받았습니다.또한 네트워크 지지자들은 Gnutella의 하위 호환성을 유지하고 현재 Gnutella 클라이언트가 Gnutella2를 추가할 수 있도록 하는 것이 목적이라고 주장했습니다.레저

개발자들이 자리를 굳히자 곧 불꽃 전쟁이 일어나 양측의 [3][4][5][6]결의를 더욱 굳혔다.

사양서 초안은 2003년 3월 26일에 발표되었으며, 곧 더 자세한 사양서가 발표되었습니다.G2는 많은 오래된 Gnutella 네트워크 클라이언트에서 지원되지 않지만, 많은 Gnutella2 클라이언트도 여전히 Gnutella에 연결되어 있습니다.많은 Gnutella2 지지자들은 이것이 정치적인 이유 때문이라고 주장하는 반면, Gnutella 지지자들은 급격한 변화가 깊은 [7]개작의 비용보다 더 큰 메리트를 가지고 있지 않다고 주장한다.

설계.

Gnutella2는 노드를 2개의 그룹으로 나눕니다.Leafs 및 Hubs.대부분의 Leave는 [8]허브에 대한 2개의 연결을 유지하고 허브는 수백 개의 리프 연결을 허용하며 다른 허브에 대한 평균 7개의 연결을 허용합니다.검색이 시작되면 노드는 필요에 따라 허브 목록을 가져오고 목록이 모두 사용되거나 사전 정의된 검색 제한에 도달할 때까지 목록 내의 허브에 연락하여 검색된 허브에 주목합니다.이를 통해 사용자는 네트워크를 로드하지 않고도 일반적인 파일을 쉽게 찾을 수 있으며 이론적으로는 사용자가 네트워크상의 임의의 위치에 있는 단일 파일을 찾을 수 있습니다.

허브는 Query Routing Table에 의해 Leaf에 어떤 파일이 있는지 인덱싱합니다.Query Routing Table은 키워드단일 비트엔트리로 채워지고 Lef가 허브에 업로드한 후 허브가 남긴 모든 해시 테이블과 결합하여 인접 허브에 보낼 버전을 만듭니다.이를 통해 검색과 일치하는 엔트리가 라우팅 테이블에 없는 경우 허브는 쿼리를 Leave 및 네이버허브에 전송하지 않음으로써 대역폭을 대폭 줄일 수 있습니다.

Gnutella2는 검색에 TCP가 아닌 UDP에 광범위하게 의존합니다.TCP 접속을 설정하는 오버헤드는 랜덤 워크 검색 시스템을 만들며, 적은 양의 데이터를 가진 다수의 노드를 연결할 수 없게 됩니다.단, UDP에 단점이 없는 것은 아닙니다.UDP는 접속이 없기 때문에 메시지가 수신되었음을 송신측 클라이언트에 통지하는 표준 방법은 없습니다.따라서 패킷이 손실되었을 경우 알 수 없습니다.이 때문에, Gnutella2 의 UDP 패킷에는, 신뢰성 설정을 유효하게 하는 플래그가 붙어 있습니다.신뢰성 플래그가 유효하게 되어 있다UDP 패킷을 수신하면, 클라이언트는 확인 응답 패킷으로 응답해, 패킷이 수신처에 도착한 것을 송신측 클라이언트에 통지합니다.확인 응답 패킷이 송신되지 않는 경우, 신뢰할 수 있는 패킷은, 전달을 확실히 하기 위해서 재발송됩니다.플래그가 네이블로 되어 있지 않은 중요도가 낮은 패킷은 확인 응답 패킷을 필요로 하지 않기 때문에 신뢰성이 저하될 뿐만 아니라 확인 응답 패킷을 전송하거나 대기할 필요가 없기 때문에 오버헤드도 감소합니다.

프로토콜 기능

Gnutella2는 XML 문서 트리에 버금가는 확장 가능한 바이너리 패킷 형식을 가지고 있으며, 이는 Gnutella의 덜 우아한 부분에 대한 해답으로 생각되었습니다.패킷 포맷은 [9]네트워크상의 다른 클라이언트에서 버그를 일으킬 염려 없이 향후 네트워크 개선과 벤더별 기능을 추가할 수 있도록 설계되어 있습니다.

파일 식별 및 파일의 보안 무결성 검사를 위해 SHA-1 해시를 사용합니다.파일을 여러 소스에서 동시에 안정적으로 다운로드할 수 있도록 하고 파일을 다운로드(스위밍)하는 동안 부품의 안정적인 업로드를 허용하기 위해 Tiger 트리 해시를 사용합니다.[10]

또한 Gnutella2는 검색용 보다 견고하고 완전한 시스템을 구축하기 위해 단순히 파일 [11]이름으로 수집하는 것보다 더 완전한 라벨, 등급 및 품질 정보를 검색 결과에 제공하는 메타데이터 시스템을 갖추고 있습니다.노드에서는 파일을 삭제한 후에도 이 정보를 공유할 수 있기 때문에 사용자는 복사본을 보관할 필요 없이 네트워크상의 바이러스나 웜을 마킹할 수 있습니다.

또한 Gnutella2는 네트워크 연결에 압축을 사용하여 [10]네트워크에서 사용되는 대역폭을 줄입니다.

Shareaza에는 이미지 비디오의 미리보기를 요청하는 추가 기능이 있지만 FilesScope만이 이 기능을 제한적으로 활용합니다.

gtk-gnutellaGnutella와 G2 사이의 격차를 더욱 줄이기 위해 프로토콜을 확장했습니다.특히 준신뢰성 UDP 레이어가 확장되어 레거시 G2 [12]클라이언트와의 하위 호환성이 있는 방법으로 누적 확인 응답 및 확장 확인 응답을 추가했습니다.추가 확장에는 /Q2/I의 "A" 문자열과 쿼리 [14]히트에서의 /QH2/H/ALT, /QH2/H/PART/MT, /QH2/HN, /QH2/BH 및 /QH2/G1의 도입이 포함됩니다.

gnutella와의 차이점

전체적으로 두 네트워크는 매우 유사하며 패킷 형식과 검색 방식에서 주된 차이가 있습니다.

프로토콜

Gnutella의 패킷 포맷은 원래 확장성을 염두에 두고 설계되지 않았고 수년간 많은 추가가 있었기 때문에 패킷 구조가 혼란스럽고 [15]비효율적이기 때문에 비판을 받아왔다.Gnutella2는 Gnutella2에 Gnutella 표준이 추가된 기능 외에도 이를 통해 학습되었으며, 처음부터 향후 확장성을 염두에 두고 설계되었습니다.

검색 알고리즘

Gnutella2는 검색의 쿼리 플래딩 방식을 사용하는 반면, Gnutella2는 랜덤 워크 시스템을 사용하여 검색 노드가 허브 목록을 수집하여 한 번에 하나씩 직접 연결합니다.단, 허브는 허브 클러스터(Hub clusters)로 구성되어 각 허브가 네이버에 의해 저장된 정보를 반영하므로 리프에는 허브 클러스터 전체(보통 7개 허브)의 정보가 반환됩니다.이는 gnutella의 쿼리 플래딩 시스템보다 몇 가지 이점이 있습니다.검색을 계속해도 네트워크 트래픽이 기하급수적으로 증가하지 않고 쿼리가 노드 수만큼 라우팅되지 않으며 검색의 세분화도도 증가하므로 결과의 사전 정의된 임계값이 확보되면 클라이언트가 gnutella보다 더 효과적으로 정지할 수 있습니다.그러나 워크 시스템은 네트워크의 복잡성과 필요한 네트워크 유지 보수 및 관리를 증가시킬 뿐만 아니라 악의적인 공격자가 서비스 거부 공격을 위해 네트워크를 이용하는 것을 방지하기 위한 안전장치가 필요합니다.

용어.

용어의 차이도 있습니다.네트워크를 압축하기 위해 사용되는 보다 기능이 뛰어난 노드를 Gnutella에서는 Ultrapeer, Gnutella2에서는 Hubs라고 부릅니다.또한 토폴로지에서는 약간 다르게 사용됩니다.Gnutella에서는 일반적으로 Ultrapeer는 피어 접속과 같은 수의 리프를 유지하고 Gnutella2 허브는 훨씬 더 많은 리프를 유지하고 피어(허브 투 허브) 접속은 더 적습니다.그 이유는 다양한 네트워크의 검색 방식이 최적의 토폴로지를 달리하기 때문입니다.

클라이언트

목록.

무료 소프트웨어 Gnutella2 클라이언트는 다음과 같습니다.

  • Adagio[16](Cross Platform), GPL에 Ada로 기재되어 있습니다.
  • Gnucleus(Windows), LGPL 아래 C/C++로 작성
  • Gtk-gnutella(Cross Platform), C로 작성.버전 1.1 [17]이후 G2로의 리프 모드 접속만 지원됩니다.
  • OCaml로 작성된 MLDonkey(Cross Platform)는 GPL에서 단, 버전 2.9.0(2007)부터는 공식적으로 지원이 유지되지 않고 [18]바이너리에서 비활성화되어 있습니다.
  • Shareaza(Windows), 멀티 네트워크, C++로 작성, GPL에 기재되어 현재 +/- 93%의[19] 네트워크 점유율

독자적인 소프트웨어 실장은 다음과 같습니다.

  • Foxy (Windows) Chinese GnucDNA에서 파생된 프로그램으로 다른 G2 클라이언트와의 상호작용이 불가능하며 원래의 G2와 절반 정도 떨어져 G2로의 네트워크[citation needed] 유출로 알려진 자체 "Foxy" 네트워크를 사용합니다.이론적으로 클라이언트는 G2에 대응하고 있습니다.무료입니다.
  • Morpheus (Windows)

비교

다음 표는 G2 네트워크를 지원하는 다수의 사용 가능한 응용 프로그램에 대한 일반 정보와 기술 정보를 비교한 것입니다.

고객 채팅 대용량 파일 처리 (4 GB 이상) 영국[20] 유니코드 UPnP 포트 매핑 NAT 트래버설 리모트 프리뷰 해시 검색 기능 허브 모드 스파이웨어/애드웨어/멀웨어 없음 기타 네트워크 에 기반을 둔 OS 다른.
폭시 네. 아니요. 아니요. 네. 네. 아니요. 아니요. 네. Foxy만 아니요. GnucDNA 크로스 플랫폼 -
파일 범위 네. 아니요. 아니요. 아니요. 아니요. 아니요. 네. 네. 네. 네. gnutella,

eD2000, OpenNap

- 창문들[21] 개발은 [22]2014년에 종료되었습니다.
그누클루스 아니요. 아니요. 아니요. 아니요. 아니요. 아니요. 아니요. 네. 아니요. 네. 누텔라 GnucDNA 창문들 -
gtk-gnutella 아니요. 네. 아니요. 네. 네. 네. 아니요. 네. 아니요. 네. 누텔라 - 크로스 플랫폼 -
모르페우스 네. 아니요. 아니요. 아니요. 네. 아니요. 아니요. 네. 아니요. 아니요. gnutella,

네오넷

GnucDNA 창문들 클라이언트의 개발 및 호스팅이 중지되었습니다.
샤레아자 네. 네. 네. 네. 네. 아니요. 네. 네. 네. 네. gnutella,

eD2k, 비트토렌트

- 창문들 IRC 지원 포함

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "Developer discussion of similarities between Gnutella and Gnutella2". The Gnutella Developer Forum. Retrieved 2006-05-10.
  2. ^ "GDF Discussion on the Gnutella2 name". The Gnutella Developer Forum. Retrieved 2006-05-10.
  3. ^ "Part of the Gnutella/Gnutella2 Flame War (1)". The Gnutella Developer Forum. Retrieved 2006-08-06.
  4. ^ "Part of the Gnutella/Gnutella2 Flame War (2)". The Gnutella Developer Forum. Retrieved 2006-08-06.
  5. ^ "Part of the Gnutella/Gnutella2 Flame War (3)". The Gnutella Developer Forum. Retrieved 2006-08-06.
  6. ^ "Part of the Gnutella/Gnutella2 Flame War (4)". The Gnutella Developer Forum. Retrieved 2006-08-06.
  7. ^ "Developer discussion on migration to Gnutella2". The Gnutella Developer Forum. Retrieved 2006-05-10.
  8. ^ "Gnutella2 Network history". Trillinux crawler (G2paranha). Retrieved 2009-04-12.
  9. ^ "Packet Structure". Gnutella2 Wiki. Retrieved 2007-11-07.
  10. ^ a b "Gnutella2 Standard". Gnutella2 wiki. Retrieved 2007-11-07.
  11. ^ "Simple Query Language and Metadata". Gnutella2 Wiki. Retrieved 2007-11-07.
  12. ^ "UDP Transceiver - Gnutella2". G2.doxu.org. Retrieved 2014-08-06.
  13. ^ "Q2 - Gnutella2". G2.doxu.org. 2014-02-25. Retrieved 2014-08-06.
  14. ^ "QH2 - Gnutella2". G2.doxu.org. 2014-03-12. Retrieved 2014-08-06.
  15. ^ "Developer discussion of Gnutella and Gnutella2 packet formats". The Gnutella Developer Forum. Retrieved 2006-05-15.
  16. ^ "Adagio download SourceForge.net".
  17. ^ "gtk-gnutella - The Graphical Unix Gnutella Client". Gtk-gnutella.sourceforge.net. Retrieved 2014-08-06.
  18. ^ "OtherNetworksSupported - MLDonkey". mldonkey.sourceforge.net.
  19. ^ "Shareaza network share on the G2 network". Trillinux crawler (G2paranha). Retrieved 2008-09-18.
  20. ^ UKHL = UDP 알려진 허브 목록
  21. ^ "FileScope website: Statement about cross-platforum compatibility". FileScope. Retrieved 2008-08-22.{{cite web}}: CS1 maint :url-status (링크)
  22. ^ "FileScope". SourceForge. Retrieved 2021-06-25.{{cite web}}: CS1 maint :url-status (링크)

외부 링크