Tóm lược
Làm thế nào một khách hàng mới có thể tham gia một bầy mà không có người theo dõi hoặc kiến thức của ít nhất một thành viên của bầy để trao đổi với các đồng nghiệp?
Bạn không thể. Nó là không thể.*
* (Trừ khi một nút trên mạng cục bộ của bạn tình cờ đã là một nút trong DHT. Trong trường hợp này, bạn có thể sử dụng cơ chế phát sóng, chẳng hạn như Avahi, để "khám phá" ngang hàng này và bootstrap từ chúng. Nhưng làm thế nào họ bootstrap mình? Cuối cùng, bạn sẽ đạt một tình huống mà bạn cần phải kết nối với mạng Internet công cộng. Và Internet công cộng là unicast-chỉ, không multicast, vì vậy bạn đang mắc kẹt với việc sử dụng danh sách được xác định trước của các đồng nghiệp.)
Người giới thiệu
Bittorrent DHT được triển khai thông qua một giao thức được gọi là Kademlia , đây là trường hợp đặc biệt về khái niệm lý thuyết của bảng băm phân tán .
Triển lãm
Với giao thức Kademlia, khi bạn tham gia mạng, bạn sẽ thực hiện thủ tục bootstrapping , điều này hoàn toàn đòi hỏi bạn phải biết trước , địa chỉ IP và cổng của ít nhất một nút đã tham gia vào mạng DHT. Ví dụ, trình theo dõi mà bạn kết nối có thể là nút DHT. Khi bạn được kết nối với một nút DHT, sau đó bạn tiến hành tải xuống thông tin từ DHT, cung cấp cho bạn thông tin kết nối cho nhiều nút hơn và sau đó bạn điều hướng cấu trúc "biểu đồ" đó để có được kết nối đến nhiều nút hơn, người có thể cung cấp cả hai nút kết nối với các nút khác và dữ liệu tải trọng (khối tải xuống).
Tôi nghĩ rằng câu hỏi thực tế của bạn được in đậm - đó là làm thế nào để tham gia mạng lưới DHT của Kademlia mà không biết bất kỳ thành viên nào khác - dựa trên giả định sai.
Câu trả lời đơn giản cho câu hỏi của bạn in đậm là, bạn không . Nếu bạn hoàn toàn không biết BẤT K information thông tin nào về một máy chủ có thể chứa siêu dữ liệu DHT, bạn sẽ bị kẹt - thậm chí bạn không thể bắt đầu. Ý tôi là, chắc chắn, bạn có thể vũ phu cố gắng khám phá một IP trên internet công cộng với một cổng mở xảy ra để phát thông tin DHT. Nhưng nhiều khả năng, máy khách BT của bạn được mã hóa cứng cho một số IP hoặc DNS tĩnh cụ thể phân giải thành nút DHT ổn định, chỉ cung cấp siêu dữ liệu DHT.
Về cơ bản, DHT chỉ theo phân cấp như cơ chế tham gia, và vì cơ chế tham gia khá giòn (không có cách nào để "phát sóng" trên toàn bộ Internet! Vì vậy bạn phải unicast đến trước giao máy chủ cá nhân để có được DHT dữ liệu), Kademlia DHT không thực sự phi tập trung. Không theo nghĩa chặt chẽ nhất của từ này.
Hãy tưởng tượng kịch bản này: Một người nào đó muốn P2P ngừng hoạt động và chuẩn bị một cuộc tấn công vào tất cả các nút DHT ổn định thường được sử dụng để khởi động. Khi họ đã tổ chức cuộc tấn công của mình, họ sẽ thực hiện nó trên tất cả các nút cùng một lúc. Wham ; mỗi nút DHT bootstrapping duy nhất đều giảm trong một cú trượt. Giờ thì sao? Bạn bị mắc kẹt với việc kết nối với các trình theo dõi tập trung để tải xuống danh sách các đồng nghiệp truyền thống từ những người đó. Chà, nếu họ cũng tấn công các trình theo dõi, thì bạn thực sự, thực sựlên một con lạch. Nói cách khác, Kademlia và toàn bộ mạng BT bị hạn chế bởi những hạn chế của Internet, trong đó, có một số lượng máy tính hữu hạn (và tương đối nhỏ) mà bạn sẽ phải tấn công thành công hoặc ngoại tuyến để ngăn chặn> 90% của người dùng từ kết nối với mạng.
Khi tất cả các nút bootstrapping "tập trung giả" đều biến mất, các nút bên trong của DHT, không phải bootstrapping vì không ai ở bên ngoài DHT biết về các nút bên trong , là vô ích; họ không thể mang các nút mới vào DHT. Vì vậy, khi mỗi nút bên trong ngắt kết nối với DHT theo thời gian, do mọi người tắt máy tính, khởi động lại để cập nhật, v.v., mạng sẽ bị sập.
Tất nhiên, để giải quyết vấn đề này, ai đó có thể triển khai ứng dụng khách BitTorrent đã vá với một danh sách mới các nút hoặc địa chỉ DNS ổn định được xác định trước và quảng cáo rầm rộ cho cộng đồng P2P để sử dụng danh sách mới này. Nhưng điều này sẽ trở thành một tình huống "đánh đòn" trong đó kẻ xâm lược (kẻ ăn nút) sẽ tự mình tải xuống các danh sách này và nhắm mục tiêu vào các nút bootstrapping mới dũng cảm, sau đó cũng đưa chúng ngoại tuyến.