Làm thế nào để một khách hàng Bittorrent ban đầu khám phá các đồng nghiệp của nó?
Khi ứng dụng khách torrent của bạn tham gia vào nhóm để chia sẻ và thu thập các phần của tệp, làm thế nào chính xác để biết tất cả các đồng nghiệp của nó đang ở đâu? Đọc tiếp khi chúng ta chọc vào bên trong các cơ chế trải qua giao thức BitTorrent.
Phiên hỏi và trả lời hôm nay đến với chúng tôi nhờ sự hỗ trợ của SuperUser - một phân ngành của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều khiển.
Câu hỏi
Người đọc SuperUser Steve V. đã có một câu hỏi rất cụ thể về hệ thống Bảng phân phối băm (DHT) trong giao thức BitTorrent:
Tôi đã đọc câu trả lời SuperUser này và bài viết Wikipedia này nhưng cả hai đều quá kỹ thuật để tôi thực sự quấn đầu.
Tôi hiểu ý tưởng của một trình theo dõi: khách hàng kết nối với một máy chủ trung tâm duy trì một danh sách các đồng nghiệp trong một bầy.
Tôi cũng hiểu ý tưởng trao đổi ngang hàng: các khách hàng đã sẵn sàng gửi danh sách đầy đủ các đồng nghiệp của họ cho nhau. Nếu các đồng nghiệp mới được phát hiện, chúng sẽ được thêm vào danh sách.
Câu hỏi của tôi là, DHT hoạt động như thế nào? Đó là, 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 bạn bè?
(Lưu ý: giải thích đơn giản là tốt nhất.)
Đến lượt, câu hỏi của anh đã khiến một câu trả lời thực sự chi tiết về các chức năng khác nhau của hệ thống BitTorrent; bây giờ hãy xem nó.
Câu trả lời
Cộng tác viên SuperUser Allquixotic đưa ra lời giải thích sâu sắ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 bạn bè?
Bạn không thể. Nó là không thể.*
* (Trừ khi một nút trên của bạn mạng lưới khu vực địa phương xảy ra đã là một nút trong DHT. Trong trường hợp này, bạn có thể sử dụng một cơ chế phát sóng, chẳng hạn như Avahi, để khám phá ra điều này ngang hàng và khởi động từ chúng. Nhưng làm thế nào họ tự bootstrap? Cuối cùng, bạn sẽ gặp phải tình huống cần kết nối với Internet công cộng. Và Internet công cộng là đơn hướng, không phát đa hướng, do đó bạn bị mắc kẹt với việc sử dụng danh sách các đồng nghiệp được xác định trước.)
Tài liệu tham khảo
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 quy trình 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 của biểu đồ hình chữ nhật để 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 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ìcác thành viên 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ỉ được phân cấp như cơ chế tham gia và bởi vì cơ chế tham gia này khá dễ vỡ (không có cách nào để phát sóng quảng cáo trên toàn bộ Internet! Vì vậy, bạn phải kỳ lânđến một máy chủ được chỉ định trước để nhận dữ liệu DHT), Kademlia DHT không có thật không phi tập trung. Không phải 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: Ai đó muốn P2P ngừng hoạt động và chuẩn bị tấn công tất cả các Các nút DHT ổn định thường được sử dụng để khởi động. Một khi họ đã tiến hành cuộc tấn công của họ, họ sẽ tiếp tục tất cả các tất cả các nút cùng một lúc. Ôi; mỗi nút DHT bootstrapping duy nhất đều giảm trong một cú trượt. Giờ thì sao? Bạn đang bị mắc kẹt với việc kết nối với theo dõi tập trung để tải về danh sách truyền thống của các đồng nghiệp 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ự, có thật không 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 kết nối với mạng.
Khi tất cả các nút bootstrapping của trung tâm giả giả đã biến mất, các nút bên trong của DHT, không phải là bootstrapping vì không ai ở bên ngoài của DHT biết về các nút bên trong, Vô dụng; 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 của Whack-a-mole, trong đó kẻ xâm lược (kẻ ăn nút) sẽ tự 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.
Chúng tôi không chỉ tìm hiểu câu trả lời cho câu hỏi ban đầu mà chúng tôi còn học được khá nhiều về bản chất của hệ thống BitTorrent và các lỗ hổng của nó.
Có một cái gì đó để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra chủ đề thảo luận đầy đủ ở đây.