Trang chủ Development

Bittorrent là gì và hai mặt của bittorrent

Bittorrent là gì và hai mặt của bittorrent

Trên Internet, có một cách download file - hay cũng gọi là chia sẻ file - mà chúng ta vẫn thường dùng đó là tìm các link tải file trên các dịch vụ lưu trữ file như Google Drive, Dropbox, OneDrive,... 

Cách download này đã được sử dụng từ rất lâu, mô hình tải hay chia sẻ file đó đã xuất hiện từ những năm 1971 qua giao thức FTP (tuy nhiên, thời đó chưa có dịch vụ lưu trữ file như hiện nay). Dần dần, khi băng thông của Internet được tăng lên, các chuẩn dữ liệu như video HD, Full HD,... hay các gói dữ liệu lớn nhiều GB xuất hiện. Việc download truyền thống như trên đã bộc lộ ra một số nhược điểm không thể khắc phục được. 

>> Tìm hiểu thêm: FTP là gì? Hướng dẫn cách chuyển file lên hosting server bằng FTP 

Từ đó một giao thức mới cần được sử dụng để giảm thiểu các nhược điểm của cách chia sẻ file thông thường, và chúng ta có Bittorrent - cách chia sẻ file bằng P2P phổ biến nhất. Bài sau đây sẽ nói về Bittorrent và lí do gì Bittorrent vẫn không thể thay thế hoàn toàn được cách chia sẻ file trên Internet.

1. Chia sẻ file với mô hình client – server

Khi chúng ta được share một URL tới một file hoặc một folder trên Google Drive và được cấp quyền truy cập vào file/folder đó, có nghĩa là chúng ta sẽ có thể đọc cũng như download file/folder đó về máy (Thật ra, hầu hết các file mà chúng ta nghĩ đang đọc online trên trình duyệt thực chất đã được download về máy, ngay cả với các video trên Youtube hay giao diện các trang web mà chúng ta xem hằng ngày.). Nếu như chúng ta bấm vào nút tải xuống, trình duyệt sẽ download file đó và lưu vào máy tính. 

Bittorrent là gì và hai mặt của bittorrent - Ảnh 1.

Mô hình Client – Server

Cách download - chia sẻ file này sử dụng mô hình client – server, trong đó client là máy tính của chúng ta còn server là các hệ thống lưu trữ của Google Drive. Máy tính sẽ gửi một request đến Google Drive với nội dung là muốn download file/folder, Google Drive sẽ nhận request, và chuyển file qua các CDN tới máy tính người dùng. Nếu bình thường, chúng ta sẽ tải thành công và sử dụng được file/folder đó, nhưng có rất nhiều vấn đề cả chủ quan và khách quan ảnh hưởng trong khi việc download đang được thực hiện:

- Trước đây, khi băng thông của mạng còn thấp, việc tải file lớn , ví dụ như tải 1GB với băng thông 7KB/s của dial-up thì phải mất tới hơn 41 giờ trong điều kiện lí tưởng (tốc độ luôn là 7KB/s và máy tính phải chạy suốt 41 giờ).

Rất may, hiện nay băng thông của các đường truyền cáp quang đã giải quyết được vấn đề băng thông tối đa của các hệ thống mạng.

- Khi server nhận được nhiều request tải file từ nhiều máy tính, việc xử lí tốc độ và các request cho từng máy tính ở phía server luôn là một bài toán khó, nhất là vấn đề chi phí. Các hệ thống lưu trữ file trước đây phải giới hạn băng thông đối với từng người dùng, phân cấp người dùng qua tài khoản, giới hạn số lần tải, số lượng file tải đồng thời trong cùng một thời điểm, giới hạn thời gian giữa các lượt tải,...

Hiện nay, việc sử dụng CDN đã giảm thiểu rất nhiều vấn đề này, vấn đề được đơn giản thành bài toán duy nhất là chi phí cho CDN.

- Trong khi download, nếu như có vấn đề xảy ra như mất mạng, server/client bị sập mà không thể resume, tất cả thời gian chờ đợi và cả dữ liệu của file đã download về máy sẽ trở thành số 0. Chúng ta lại phải tải lại từ đầu, kể cả khi đã chờ 40 trên 41 tiếng.

Các hệ thống dịch vụ lưu trữ file có khả năng resume (download tiếp các file chưa download đủ từ lần download trước) rất hạn chế, ngay cả với thời điểm hiện tại.

- Có hai cách giải quyết vấn đề trên, cách thứ nhất là chia nhỏ file thành các phần qua các công cụ như FFSJ, WinRAR, WinZIP,... Tuy nhiên, nếu như một trong các phần file đó bị hỏng thì khi gộp lại file, chúng ta sẽ không thể dùng được.

Nếu như nén một folder chứa nhiều file qua WinRAR hay WinZIP, có thể chúng ta sẽ lấy lại được các file không bị hỏng, tuy nhiên các file bị hỏng hầu như không thể khôi phục lại được.

Hiện nay việc chia file thành các phần vẫn rất phổ biến.

- Cách thứ hai đó sử dụng nhiều luồng tải cho một file/folder đối với một client. Về phía người dùng cũng có thể sử dụng một số app giúp tăng luồng tải như IDM,...

Một số hệ thống chia sẻ file cấm các app tăng luồng tải. Đó là lí do IDM không thể dùng được đối với một số site.

Nếu như một vấn đề trên xảy ra, hệ quả đó là nó kéo theo các vấn đề còn lại hoặc làm chính vấn đề đó thêm trầm trọng hơn:

- Nếu có nhiều request, server phải xử lí và chia đều băng thông, dẫn tới việc tải file chậm hơn, mà lượng request vẫn tăng dẫn tới server quá tải. 

Bittorrent là gì và hai mặt của bittorrent - Ảnh 2.

Quá tải server – nếu như server nhận quá nhiều request và không xử lí kịp

- Nếu việc download bị hỏng, các client sẽ request lại khi có thể dẫn tới việc request tăng thêm.

- Chia nhỏ file cũng dẫn tới việc client phải sử dụng nhiều request.

- Tăng luồng tải cũng bắt server phải xử lí nhiều request hơn.

Tất cả vấn đề đều có một cách giải quyết: tài chính. Tăng băng thông, tăng sức mạnh của server, CDN,... tuy nhiên yêu cầu luôn tăng mà "tài chính luôn chỉ có hạn".

Đó cũng là lí do miếng bánh thị phần của các hệ thống chia sẻ file là đấu trường mà các tổ chức lớn về tài chính như Google, Microsoft,... mới có thể tham gia được.

2. Sự thay thế dựa trên mô hình P2P – Bittorrent, bittorrent là gì?

Qua những nhược điểm của mô hình client – server, một mô hình kiến trúc khác là P2P (Peer-to-Peer) được sử dụng để phát triển một giao thức chia sẻ file, và từ đó giao thức Bittorrent xuất hiện. Thay vì chỉ một máy tính nhận file (client) và một hệ thống gửi file (server), trong giao thức Bittorrent, tất cả những máy tính tham gia vào đều có thể là máy tính nhận file cũng như máy tính gửi file. Đặc biệt, do tính phi tập trung (decentralised) mà hệ thống sẽ không bị quá tải ở bất cứ máy tính nào trong hệ thống mạng, đối lập với việc khả năng nghẽn rất lớn ở phía server của mô hình chia sẻ client – server.

Bittorrent là gì và hai mặt của bittorrent - Ảnh 3.

Mô hình P2P

Vậy cách thức hoạt động của Bittorrent là gì?

Một máy tính tạo một file torrent chứa metadata của các file và folder cần chia sẻ, đồng thời chứa một danh sách các tracker và một số thông tin cần thiết khác.

Metadata của các file và folder là các thông tin của các file và folder như size, tên, directory,…

Tracker là một server có nhiệm vụ track các máy tính trong một swarm. Các client – hay máy tính trong swarm đó – trao đổi thông tin với tracker để biết được thông tin của các client khác trong swarm đồng thời thông báo cho tracker về thông tin của mình. Tracker không hề lưu trữ dữ liệu của file/folder cần chia sẻ.

__________________________________________________________

Swarm là hệ thống các máy tính cùng chia sẻ một torrent. Trong swarm, các máy tính được phân loại thành các seeder, peer và leecher.

- Seeder là các máy tính có đầy đủ file/folder và đang share dữ liệu (hay gọi là seed) cho các máy tính khác trong swarm.

- Peer là các máy tính trong swarm.

- Leecher là các máy tính đang nhận dữ liệu có thể từ Seeder hoặc từ các Peer khác. Đôi lúc Leecher được sử dụng với nghĩa tiêu cực.

_____________________________________________________________

- Các Peer tham gia vào Swarm của file torrent đó bằng cách sử dụng file torrent hoặc link magnet. Khi đó Peer bắt đầu nhận dữ liệu từ máy tính ở bước trên – hay được gọi là Seeder.

Seeder sẽ gửi dữ liệu tới các Peer (Leecher) như sau:

+ Chia nhỏ toàn bộ các file/folder thành các Piece, Piece có kích thước nhất định (64KB, 128KB, 512KB, 1MB, 2MB, 4MB or 8MB), được lưu metadata trong file torrent, bao gồm cả hash.

+ Gửi tới các Peer cần Piece đó.

Ngay sau khi nhận được Piece, nếu như Piece không bị hỏng (qua việc check hash), Peer đó có thể share Piece cho các Peer khác cần Piece vừa nhận.

- Sau khi nhận đủ các Piece, Peer trở thành Seeder nếu như vẫn giữ dữ liệu và seed cho các Peer (Leecher) khác.

Với cách này, tổng tốc độ download không bằng tốc độ upload của một máy tính (như tốc độ upload của server trong mô hình client – server) mà bằng tổng tốc độ upload của tất cả các Peer trong Swarm. Qua đó, thời gian download cũng như tốc độ chia sẻ file trên lí thuyết sẽ cao hơn rất nhiều so với mô hình client – server.

3. Làm thế nào để sử dụng Bittorrent

Để sử dụng Bittorent download file. Chúng ta cần file torrent và một Bittorrent client.

Có rất nhiều Bittorrent client, hầu hết đều là các chương trình mã nguồn mở. Tuy nhiên, một số Bittorrent sẽ “tặng kèm” một số chương trình đi kèm khi cài đặt các client đó. Ví dụ như bản μTorrent vào tháng 3 năm 2015 – client phổ biến nhất hiện tại – khi cài đặt nếu như người dùng không chú ý, sẽ cài đặt một chương trình đào coin vào máy người dùng [1]. Vì vậy, người dùng nên thận trọng khi cài đặt các Bittorrent client, hoặc sử dụng các client có mã nguồn mở để đảm bảo an toàn.

Bittorrent là gì và hai mặt của bittorrent - Ảnh 4.

Giao diện web của Transmission client

Với file torrent, chúng ta có thể tìm kiếm trên các Bittorrent index. Hầu hết các Tracker sẽ đồng thời đảm nhiệm các Bittorent index của Tracker đó. Chúng ta có thể download file torrent hoặc sử dụng magnet link.

Thực chất magnet link là một cách gián tiếp để download file torrent.

Có hai loại Tracker là Public TrackerPrivate Tracker:

- Public Tracker là các Tracker có thể được truy cập bởi bất cứ người dùng nào. Người dùng có thể truy cập, tìm các torrent mình muốn và sử dụng.

- Private Tracker là các Tracker yêu cầu người dùng đăng kí và sử dụng tài khoản để đăng nhập. Private giới hạn người dùng, hầu hết yêu cầu người dùng phải đảm bảo một số quy định đối với tài khoản của mình. Private Tracker thường chỉ cho phép đăng kí qua các hệ thống invitation, ví dụ như một member trong Private Tracker được cấp một số lượt invitation nhất định, hoặc một user mới phải interview trước khi được cấp tài khoản. Ngoài ra, một số private tracker có thể cho phép đăng kí thông qua việc donate.

Bittorrent có rất nhiều nhược điểm

Mặc dù có rất nhiều ưu điểm, tuy nhiên, Bittorrent cũng có những nhược điểm nhất định.

Hit and Run

Có thể thấy như đã nói ở trên, trên lí thuyết, việc chia sẻ file của Bittorrent sẽ giúp tất cả các Peer có thể nhận được file mà mình mong muốn. Tuy nhiên, không phải Peer và Seeder nào cũng có thể seed mãi được. Đôi lúc máy tính cần phải tắt đi vì một lí do nào đó. Mặc dù vậy, phần lớn các trường hợp mà Peer hay Seeder không seed nữa là do chính ý muốn của người sử dụng. Sau khi có được dữ liệu mà mình mong muốn (đôi lúc chỉ là một số file trong toàn bộ các file trong torrent), một Peer sẽ không tham gia vào Swarm nữa mà xóa torrent trên Bittorrent client (Xóa torrent không liên quan tới việc xóa file đã download). Với các Public Tracker, việc này không hề vi phạm quy định nào của Tracker cả nhưng cũng không được khuyến khích. Với Private Tracker, trước đây, việc này bị cấm và sẽ có các cách xử phạt user, tuy nhiên, hiện tại với cách quản lí bằng point, tổng dung lượng download/upload và share ratio, việc leech file và xóa torrent ngay khi hoàn thành – hay còn gọi là hit and run – đã không còn là một trong những quy định bắt buộc nữa.

Share ratio là tỉ lệ upload / download của một file hoặc toàn bộ các torrent đã download. Lưu ý rằng nếu như hit and run quá nhiều, share ratio sẽ thấp và sẽ vi phạm vào quy định của Private Tracker.

Torrent chết

Đôi lúc, một torrent được upload lên một tracker nào đó, nhưng dữ liệu của file trong torrent đã không còn vì một số lí do như không còn Seeder (các Seeder thoát khỏi Swarm, mất kết nối mạng), file bị corrupt ngay khi tạo torrent, không còn đầy đủ Piece trong Swarm, số lượng Peer rời Swarm dần qua thời gian… thì việc tải hoàn chỉnh torrent sẽ không thể thực hiện được với tình trạng đó. Nếu như may mắn, một Seeder nào đó kết nối lại vào Swarm, hoặc một số Peer khác kết nối mà Swarm có đầy đủ các Piece, việc download file có thể được thực hiện trở lại. Tuy nhiên, rất nhiều torrent không thể download hoàn chỉnh được nữa, đặc biệt là các torrent cũ từ nhiều năm trước. Rất may, các tracker đều hiển thị số lượng Seeder và Leecher khi tìm kiếm các torrent. Các Private Tracker cũng thường có tỉ lệ torrent chết ít hơn so với các Public Tracker.

Overseeded (Private Tracker)

Điều này chỉ xảy ra trong các Private Tracker sử dụng chỉ tiêu share ratio hoặc chỉ tiêu upload. Nếu như một torrent có số lượng Seeder quá cao so với số lượng Leecher, những Seeder sẽ khó có thể đạt được chỉ tiêu mà Tracker quy định hơn, dẫn tới việc hệ thống download/upload trong Private Tracker bị ngưng do không ai có đủ chỉ tiêu để download nữa. Đó là lí do các Private Tracker đôi lúc sẽ đưa ra các torrent FreeLeech – cho phép user download mà không tính vào chỉ tiêu nhưng vẫn tính lượng dữ liệu upload.

Seedbox/VPS (Private Tracker)

Để đảm bảo chỉ tiêu trong các Private Tracker, một số user sử dụng Seedbox và VPS để tăng băng thông cho việc upload/download tài khoản của mình. Việc này làm cho những user thông thường với băng thông của các đường truyền cá nhân không thể so được với Seedbox và VPN dẫn tới việc share ratio luôn thấp hơn nhiều so với user sử dụng.

5. Câu chuyện của bất cứ hệ thống chia sẻ file nào – Malware và vấn đề bản quyền 

a. File download từ torrent có virus hay malware

Mọi người thường nghĩ rằng file download từ torrent sẽ có virus hay malware, tuy nhiên bất cứ việc download file từ torrent hay từ một hệ thống chia sẻ file nào đó cũng có thể có malware đi kèm. Để tránh tình trạng gặp torrent có malware, hãy tìm kiếm các Tracker uy tín hoặc Private Tracker do tỉ lệ malware của Private Tracker ít hơn rất nhiều so với Public Tracker.

b. Vấn đề bản quyền

Bittorrent, cũng như các site lưu trữ file, mặc dù hai cách lưu trữ file khác hẳn nhau về cách thức, luôn là một trong những vấn đề luôn gây tranh cãi trong vấn đề bản quyền. Giao thức Bittorrent là hợp pháp, tuy nhiên các file và folder được ghi trong file torrent thì lại là một vấn đề khác. Việc lưu trữ các file torrent lại không hề vi phạm luật bản quyền do các file torrent không lưu trữ file bản quyền bên trong nó. Mặc dù vậy, vẫn có các vụ kiện liên quan tới các site Tracker, nổi tiếng nhất là của The Pirate Bay. Ngoài ra, một số quốc gia (như Đức) có những hành động rất cứng rắn đối với người dùng Bittorent như gửi các cảnh báo (Abmahnung), phạt tiền với các người dùng chia sẻ các sản phẩm vi phạm bản quyền,…

Cuối cùng, Bittorrent là một giao thức chia sẻ dữ liệu thông qua mô hình P2P. Tuy có nhiều ưu điểm hơn mô hình client – server, Bittorrent cũng có những nhược điểm. Do đó, một số các app đã tích hợp một số giải pháp hybrid giữa client – server và P2P như trong Battle.net App của Activision Blizzard, Delivery Optimization kết hợp với Windows Update của Microsoft Windows,… Giải pháp hybrid này hạn chế được các nhược điểm của cả hai cách download client – server và P2P, và có thể là một trong những cách download được sử dụng nhiều nhất trong những năm tới đây.

Theo BizFly Cloud tổng hợp

BizFly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp nhất, được vận hành bởi VCCorp.

BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.

Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cập tại đây.