Mạng BitTorrent là gì? Thành phần, mô phỏng cơ chế hoạt động

Bạn đã bao giờ tò mò về cách mà hàng triệu người trên khắp thế giới có thể chia sẻ và tải xuống hàng tỷ file một cách nhanh chóng và hiệu quả? Từ việc chia sẻ phim, nhạc và phần mềm cho đến tải xuống tài liệu quan trọng. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về mạng ngang hàng BitTorrent, thành phần và mô phỏng cơ chế hoạt động.

Xem thêm:

1. Mạng ngang hàng BitTorrent là gì?

BitTorrent là một giao thức chia sẻ tệp ngang hàng (P2P) cho phép người dùng tải và chia sẻ các tệp lớn qua internet. Giao thức hoạt động theo cách thức ngang hàng, tức là người dùng không tải tệp từ máy chủ trung tâm, mà tải tệp từ các máy tính khác trên mạng.

Bittorrent đồng thời là tên chương trình chia sẻ tài nguyên ngang hàng được phát triển bởi lập trình viên Bram Cohen năm 2001. Chương trình được sử dụng để tải về nhiều loại tệp lớn, bao gồm nhạc, sách, trò chơi, và video mà không tốn chi phí máy chủ và băng thông mạng.

BitTorrent là gì?

2. Các thành phần trên mạng BitTorrent

– Web server: Cung cấp thông tin về tệp .torrent.

– Tập tin .torrent: Là một tập tin chứa thông tin:

  • Tên
  • Kích thước
  • CheckSum
  • Địa chỉ URL
  • Các mảnh pieces

Tracker: là một máy chủ quản lý thông tin về các máy tính đang tham gia vào quá trình chia sẻ tập tin trên mạng BitTorrent. Tracker cập nhật trạng thái về các máy tính đã tải xuống và đang tải tập tin để cho các máy tính khác có thể kết nối và tải xuống nhanh chóng hơn.

– Swarm: là hệ thống các máy tính cùng chia sẻ một torrent.

+ Seeder: là các máy tính có đầy đủ file và đang chia sẻ dữ liệu. Seeder đóng vai trò quan trọng trong mạng BitTorrent bởi vì chúng giúp cho các máy tính khác có thể tải xuống tập tin nhanh chóng hơn.
+ Leecher: là các máy tính đang tải tập tin từ mạng BitTorrent. Các leecher không chia sẻ tập tin cho các máy tính khác, mà chỉ tải xuống và họ trở thành seeder sau khi tải hoàn thành tập tin.

Các thành phần trên mạng BitTorrent

3. Cơ chế hoạt động của mạng BitTorrent

Cơ chế hoạt động của mạng BitTorrent như sau:

Các tập tin BitTorrent được chia thành nhiều phần nhỏ gọi là “chunk” hoặc “piece”. Mỗi người dùng tải xuống một phần của tập tin từ nhiều nguồn khác nhau cùng một lúc.

Các nút mạng được phân thành các nhóm:

  • Seeds: Có đầy đủ thông tin về tập tin.
  • Leechers: tiếp tục tải tập tin.

Cơ chế hoạt động của Bittorrent

3.1 Gia nhập mạng Bittorrent

– Nhận metadata file.torrent: Người dùng tải tệp torrent này từ một nguồn nào đó trên Internet, thông tin về file torrent sẽ được đọc và tìm hiểu bởi phần mềm BitTorrent của người dùng.

– Liên lạc với tracker: Tracker là một máy chủ trung gian giữ thông tin về các người dùng khác đang tải hoặc chia sẻ tệp torrent. Sau khi nhận được metadata file, phần mềm sẽ liên lạc với tracker giúp người dùng kết nối đến các nút trong mạng BitTorrent

– Nhận danh sách nút (bao gồm cả seeds và leechers): Từ tracker, phần mềm sẽ nhận được danh sách các nút (bao gồm cả Seeds và Leechers) đang chia sẻ và tải về tệp tin.

– Liên lạc với các nút từ danh sách để nhận dữ liệu tải về: Cuối cùng, phần mềm BitTorrent sẽ kết nối với các nút đó để tải về dữ liệu từ những nút Seed hoặc các phần thiếu từ những nút Leecher. Quá trình này sẽ tiếp diễn cho tới khi người dùng đã tải về đầy đủ tệp tin hoặc quyết định thoát khỏi quá trình tải về.

3.2 Trao đổi dữ liệu

– Xác thực các mảnh dữ liệu sử dụng hàm băm.

– Tải song song các mảnh con.

– Cập nhật các mảnh vào danh sách nút.

– Tìm kiếm tiếp các mảnh còn lại của khối dữ liệu.

Trao đổi dữ liệu các mảnh bitTorrent

3.3 Yêu cầu tải dữ liệu (unchoking)

– Định kỳ tính toán tỷ suất dữ liệu nhận được.

– Tải lên nút mạng có tốc độ tải nhanh nhất.

– Tối ưu hoá yêu cầu:

+ Định kì lựa chọn các nút một cách ngẫu nhiên và tải dữ liệu lên nó.

+ Tiếp tục tìm kiếm các nút mạng có tốc độ tải nhanh nhất để gửi dữ liệu đến.

Yêu cầu tải dữ liệu unchoking

3.4 Hoán đổi các mảnh và phân mảnh

– Một gói tin có kích thước 256KB sẽ được phân tách thành các mảnh nhỏ có kích thước 16KB.

– Cho đến khi gói tin được tái tạo, chỉ các mảnh của gói tin đó được tải về. Điều này đảm bảo các gói dữ liệu được tải hoàn chỉnh và tốc độ tái tạo nhanh hơn.

– Khi truyền dữ liệu qua TCP, có nhiều yêu cầu cùng được xử lý cùng lúc, để giảm độ trễ khi các gói tin được gửi.

– Thông thường tại một thời điểm có 5 yêu cầu được xử lý đồng thời.

– Khi một gói tin được hoàn thành, nó thông báo tới tất cả các nút mạng láng giềng.

3.5 Chọn mảnh

– Thứ tự của các mảnh rất quan trọng đối với hiệu suất của mạng.

– Một thuật toán tệ có dẫn đến việc tất cả các nút đều chờ đợi 1 mảnh bị mất.

– Random Piece First policy:

+ Ban đầu mỗi nút chưa có mảnh nào để trao đổi, do vậy điều quan trọng là có một mảnh càng sớm càng tốt.

+ Chính sách: một nút bắt đầu với một mảnh ngẫu nhiên để tải xuống.

– Chính sách mảnh hiếm nhất trước (Rarest Piece First):

+ Chính sách: tải về các mảnh ít hiển thị nhất trong các nút.

+ Đảm bảo rằng các mảnh chung đều được loại bỏ trong nút cần tải.

4. Ưu, nhược điểm của BitTorrent

4.1 Ưu điểm

Tải xuống nhanh hơn: BitTorrent cho phép tải tập tin từ nhiều nguồn cùng một lúc, tăng tốc độ tải xuống so với các phương pháp tải truyền thống, giảm tải băng thông của máy chủ.

Khả năng tiếp tục tải xuống: Người dùng có thể tạm dừng và tiếp tục tải xuống mà không mất dữ liệu đã tải.

Không phụ thuộc vào máy chủ trung tâm: DHT (Distributed Hash Table) và PEX (Peer Exchange) cho phép peer tìm thấy nhau mà không cần phải kết nối với máy chủ trung tâm (tracker), giúp đảm bảo tính ổn định và phân phối độc lập.

4.2 Nhược điểm

Bản quyền: BitTorrent có thể được sử dụng để tải tập tin bất hợp pháp, vi phạm bản quyền và chia sẻ nội dung không được cấp phép.

Dính virus: Vì bất kỳ ai có thể tạo một tệp torrent và chia sẻ nó trên mạng, người dùng có thể tải về tệp tin chứa phần mềm độc hại hoặc virus.

Phụ thuộc : Nếu không có đủ seeders hoặc nguồn tải dữ liệu, tập tin có thể trở nên khó tải hoặc không thể tải được.

5. Cài đặt chương trình mô phỏng

5.1 Chuẩn bị:

Môi trường chạy java

– Mã nguồn mở phần mềm mô phỏng BitTorrent:

https://github.com/ttnguyenblog/bittorrent-simulator

5.2 Biên dịch

File owner:

cd Peer1_Owner
javac FileOwner.java

Peer 2:

cd Peer2
javac Peer.java

Peer 3:

cd Peer 3
javac Peer.java

Peer 4:

cd Peer 4
javac Peer.java

Peer 5:

cd Peer 5
javac Peer.java

Peer 6:

cd Peer 6
javac Peer.java

5.3 Chuẩn bị chạy thử

Chuẩn bị chạy chương trình mô phỏng bitTorrent

5.4 Kết quả chạy thử

Kết quả chạy chương trình mô phỏng bitTorrent

6. Phân tích hoạt động mạng mô phỏng

– Tạo 2 chương trình:

  • File Owner: máy chủ sở hữu tập tin được phân thành các mảnh.
  • Peer: Bao gồm cả máy chủ và máy khách, thực hiện download và upload cho các máy khách.

Phân tích hoạt động:

  1. Khởi động Peer1 Owner, cung cấp một cổng.
  2. Khởi động 5 máy ngang hàng: Peer 2, Peer 3, Peer 4, Peer 5, Peer 6. Mỗi ngang hàng có 3 cổng: cổng máy chủ, cổng chính nó, cổng ngang hàng khác.
  3. Mỗi ngang hàng kết nối với chủ sở hữu tệp. 1 cổng sẽ tải lên các mảnh cho ngang hàng, trong khi cổng còn lại sẽ lắng nghe các ngang hàng mới.
  4. Sau khi nhận được các mảnh từ chủ sở hữu tệp. Ngang hàng sẽ lưu chúng dưới dạng các tệp riêng biệt, liệt kê ID các mảnh mà nó có.
  5. Sau đó, ngang hàng tiến hành với hai luồng mới, với một luồng lắng nghe hàng xóm tải lên của nó và luồng còn lại kết nối với hàng xóm tải xuống của nó.
  6. Ngang hàng yêu cầu danh sách ID các mảnh từ hàng xóm tải xuống, so sánh với danh sách của riêng nó để tìm các phân đoạn còn thiếu và yêu cầu ngẫu nhiên một mảnh còn thiếu từ hàng xóm.
  7. Trong khi đó, nó sẽ gửi danh sách ID phân đoạn của riêng mình cho hàng xóm tải lên của mình và khi được yêu cầu sẽ tải lên các phân đoạn lên hàng xóm.
  8. Sau khi một ngang hàng có tất cả các phân đoạn tệp, nó sẽ kết hợp chúng thành một tệp duy nhất.
  9. Các mạng ngang hàng kết nối với nhau và trao đổi danh sách ID các mảnh. Sau đó, chúng yêu cầu và gửi các mảnh cho nhau cho đến khi tất cả các mạng ngang hàng đều có tất cả các mảnh và có thể kết hợp chúng thành một tệp duy nhất.

– Ví dụ với 3 ngang hàng:

  • Tất cả ngang hàng download từ chủ sở hữu.
  • Ngang hàng 1 và ngang hàng 2 download từ ngang hàng 3.
  • Ngang hàng 3 download từ ngang hàng 2.

7. Kết luận

– Bittorrent là giao thức chia sẻ tệp trên mạng ngang hàng.

– Thành phần của BitTorrent gồm Web server, file .torrent, tracker, leecher, seeder.

Trên đây một vài thông tin về giao thức Bittorrent mà ttnguyen.net tổng hợp được. Hy vọng nó sẽ hữu ích giúp bạn học tập tốt môn mạng máy tính nâng cao.

Tài liệu tham khảo PDF:

Bài viết liên quan:

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em