2012-04-21 3 views

답변

9

주된 이유는 이전에 연락을 취하지 않은 많은 노드를 신속하게 쿼리하고 검색 중에 다시 볼 수 없기 때문입니다.

카뎀 리아 조회는 반복적입니다. 즉, 요청은 전달되지 않습니다. 포워딩 DHT는 오래 지속되는 TCP 연결에 더 적합합니다.

e.e. 트래픽의 큰 덩어리는 잠재적으로 수백만에 이르는 네트워크 노드 간의 요청 및 응답의 단기간의 교환으로 구성됩니다. 수천 개의 TCP 연결을 빠르게 설정하는 오버 헤드는 엄청납니다.

5

왜 UDP입니까? 왜냐하면 간단하고 효과적이며 저비용의 프로토콜이기 때문입니다. 패키지 제공을 보장하지 않으며 지속적인 연결을 구축 할 필요가 없습니다. 이러한 모든 기능은 UDP를 여러 수신자에게 빠른 데이터 전송에 적합하게 만듭니다. P2P 애플리케이션에 필요한 모든 것입니다.

Сitation Kademlia의 디자인 사양에서 :

이 Kademlia의 설계자가 고려 IPv6 주소 또는 UDP 대신 TCP/IP 또는 여러 개의 IP 주소를 갖는 Kademlia 노드의 가능성의 사용을 촬영 한 것으로 표시되지 않습니다.

3

필자는이 제품을 사용하지 않았 음을 인정해야만합니다.하지만이 제품을 조사하면 대답 할 수 있다고 생각합니다.

결국 일관성있는 시스템 인 것으로 보입니다. 또한 고성능 시스템으로 보입니다. 이 점을 감안할 때 udp는 효과가 있습니다. tcp와 같은 핸드 쉐이크가 없으므로 빠릅니다. 정정 메커니즘이 있으므로 프로토콜의 손상 가능성이 처리됩니다.

2

우리 Kademlia (OpenKad) 버전은 TCP 또는 UDP를 사용할 수 있습니다.

Kademlia는 높은 수준의 라우팅 프로토콜이므로 두 가지 전송 수준 프로토콜에서 동일하게 작동합니다. Kademlia 배포의 조회 시간이 패킷 및 시간 초과가 실패하여 실패하기 때문에 좋지 않습니다. 따라서 성능이 가장 좋은 대답은 아닙니다.

0

많은 논쟁의 여지가 있지만 UDP는 특히 신뢰할 수 없도록 설계되지 않았으며 신뢰성있는 기능이 부족합니다. UDP와 TCP의 모양과 느낌이 비슷하지만 (소켓 프로그래밍과 같은) 높은 수준의 장래성에서는 사실상 비교할 수 없습니다. TCP는 대부분의 전송 관련 문제를 처리 할 수 ​​있도록 설계되었습니다. UDP는 기본 IP 패킷에 포트 헤더와 체크섬을 추가하기 만하고 프로토콜로는 전체 범위입니다.

당연히 두 프로토콜을 모두 빌드하고 확장 할 수 있습니다. UDP를 확장하는 것은 보통 이 아니고인데, 이는 일반적으로 TCP가 네트워킹에서 필요한 모든 것을 처리하기 때문입니다. 그러나 TCP의 연결 모델이 너무 제한적일 때 몇 가지 예외 중 하나가 있습니다. 이것은 P2P 네트워킹의 경우입니다. 왜냐하면 TCP는 기본적으로 P2P 연결이 일반적으로 더 많은 성격을 공유하는 두 끝점 사이에 독점적 인 일대일 파이프를 에뮬레이션하도록 설계 되었기 때문입니다.

긴 이야기를 짧게하려면 UDP에 '신뢰성'을 추가하거나 all-to-all TCP 구현을 작성하여 "휠 재구성"을하십시오.

당신의 질문 (왜 Kademlia의 UDP)에 대한 질문에 대답하기 위해 스펙이 실제로 UDP에 대한 이유 (또는 TCP 사용 안함)를 설명하지 않는다고 생각하기 때문에 나는 권위있는 대답이 없다고 생각합니다. 하지만 필자의 추측에 따르면 저자는 UDP를 기반으로하는 것이 TCP를 특별히 의도하지 않은 방향으로 확장하려고 시도하는 것보다 더 많은 유연성을 제공 할 것이라는 견해를 갖고 있습니다. 다른 말로하면, 실제적으로 어떤 형태의 기능이 결여되어있는 lib에 추가하거나 다른 기능의 기존 기능을 스트레칭하는 것입니다.

관련 문제