Các bạn thường tải phần mềm từ download.com, tải nhạc từ nhacso.net? Đó là cách tải file từ máy chủ thông thường, nghĩa là người ta đưa phần mềm, đưa nhạc lên một máy chủ để từ đó chúng ta lấy về máy của mình một cách trực tiếp.
Vấn đề đặt ra là nếu file có dung lượng lớn và có nhiều người cùng tải thì sao? Tất nhiên lúc đó máy chủ sẽ quá tải và băng thông không thể đủ. Giống như chỉ có một người có cuốn sách mà tất cả mọi người đều giành giật để đi photo vậy.
BitTorrent ra đời để giải quyết vấn đề đó. BitTorrent là một giao thức tải file trên mạng ngang hàng (Peer-to-Peer, viết tắt là P2P). Thay vì làm như trên, nó sẽ chia cuốn sách ra làm nhiều phần, mỗi người lấy một phần đi photo, sau đó trao đổi với nhau phần mình có để photo tiếp cho đầy đủ.
Đó là cách nói cho dễ hiểu, còn để bước vào thế giới BitTorrent vốn chiếm 1/3 lưu lượng download trên mạng này, chúng ta cần biết một số thuật ngữ cơ bản:
- Peer: là tất cả máy tính trong quần thể tải file bằng BitTorrent, trừ máy chủ, nhưng nó thường dùng để chỉ máy chưa có đầy đủ file. Peer vừa download vừa upload.
- Seed: là máy tính có được đầy đủ file chia sẻ (máy tính có 100% file trong hình). Máy tính này đóng vai trò như người có đầy đủ cuốn sách. Seed chỉ upload chứ không download.
- Tracker: là máy tính theo dõi (đứng trên cùng trong hình). Nó ghi lại thông tin về các seed, peer để cung cấp cho các máy. Cần lưu ý là tracker không chứa file mà nó chỉ quản lý quá trình trao đổi file mà thôi.
- Swarm: là quần thể các seed, peer cùng chia sẻ một file.
- Leech: là từ để chỉ máy “khoái” download hơn là upload. Tức là tỉ lệ upload rất nhỏ so với download.
- Torrent: là file có đuôi .torrent, file này chứa thông tin về file chia sẻ như tên, dung lượng, giải thuật chia nhỏ... và địa chỉ của tracker. Muốn tải file chia sẻ ban phải tải file này về trước.
- Phần mềm tải file chia sẻ (BitTorrent client): là những phần mềm đặc chủng để tải file dạng này, và số lượng các phần mềm này cũng cực kỳ nhiều.
¡ BitTorrent hoạt động như thế nào?
Ví dụ tôi có một file phim hoạt hình Doremon.wmv. Bây giờ tôi muốn chia sẻ nó với cộng đồng trên mạng bằng giao thức BitTorrent, trình tự thực hiện sẽ như sau:
Tôi dùng phần mềm để tạo file Doremon.torrent từ file Doremon.wmv (thường các BitTorrent client có sẵn chức năng này). File này có chứa thông tin về file Doremon.wmv và nó cắt file Doremon.wmv ra nhiều mảnh theo tùy chọn của tôi (ví dụ có dung lượng 100 MB thì tôi cắt thành 100 mảnh), nó cũng chứa địa chỉ của tracker mà tôi nhập vào.
Tôi upload Doremon.torrent lên một trang web nào đó (ví dụ bittorrent.com). Kể từ đó, tôi trở thành seed đầu tiên và phải mở kết nối để mọi người có thể lấy file trực tiếp từ máy của tôi.
Những vị khách đầu tiên đã đến, họ phải tải file Doremon.torrent về và mở nó lên bằng một BitTorrent client. Chương trình sẽ đọc những thông tin trong đó và tiến hành việc tải file Doremon.wmv. Những người đầu tiên sẽ lấy trực tiếp các mảnh từ máy của tôi, người đến sau sẽ yêu cầu những mảnh mà người đến trước chưa có để file nhanh chóng có đầy đủ các mảnh trong cộng đồng. Họ là những peer đầu tiên.
Trong quá trình download, các BitTorrent client sẽ không ngừng tìm kiếm (thông qua tracker) những peer có mảnh mà họ còn thiếu và những mảnh họ có để trao đổi cho nhau, nhờ đó giảm bớt gánh nặng cho máy của tôi. Khi tất cả các mảnh đã được đưa lên, tôi có thể lựa chọn tiếp tục duy trì hoặc ngắt kết nối.
Khi một peer có đầy đủ các mảnh của file Doremon.wmv, BitTorrent client sẽ nối nó lại thành file hoàn chỉnh. Đồng thời nếu người đó vẫn duy trì kết nối, anh ta sẽ trở thành seed.
Cứ thế quá trình được thực hiện liên tục và từ một file ban đầu đã được “nhân bản” thành hàng trăm, hàng nghìn, hàng vạn file mà chẳng cần phải upload nó lên một server nào. Tất cả đều được truyền đi từ người này đến người khác.
NGUYỄN HOÀNG MINH