BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC QUY NHƠN
KHOA KỸ THUẬT & CÔNG NGHỆ
BÁO CÁO BÀI TẬP LỚN
KỸ THUẬT MẠNG MÁY TÍNH
Tìm hiểu giao thức BitTorrent
và dịch vụ chia sẻ file ngang hàng
Đề tài:
Giảng viên hướng dẫn: ThS. Lê Nam Dương
Sinh viên thực hiện:
Nguyễn Minh Tự
Nguyễn Thanh Tú
Lớp:
Điện Tử - Truyền Thông K35
Quy Nhơn, Tháng 12 Năm 2015
LỜI NÓI ĐẦU
Ngày nay, với sự phát triển và phổ biến rộng rãi của mạng Internet,
việc tải các loại dữ liệu như phần mềm, nhạc hay video cũng là nhu cầu cần
thiết của mọi người. Phương pháp phổ biến nhất để truyền tải các tập tin trên
mạng Internet là mô hình client-server. Đó 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, đưa video 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 từ máy chủ đó.
Một máy chủ trung tâm gửi toàn bộ tập tin cho mỗi máy khách yêu cầu nó.
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 sẽ không thể đủ.
Vì vậy, để khắc phục những tình trạng đó, có một phương pháp khác để
truyền tải các tập tin đã trở thành phổ biến trong thời gian gần đây: các mạng
ngang hàng (Peer-to-Peer – P2P) như Kazaa, eDonkey, Gnutella, Direct
Connect, BitTorrent…
Trong hầu hết những mạng này, những người sử dụng Internet thông
thường sẽ trao đổi các tập tin bằng các kết nối trực tiếp với nhau. Trong số
các mạng chia sẻ tập tin ngang hàng hiện nay, mạng có lưu lượng truyền tải
lớn nhất và có lượng người sử dụng lớn nhất là mạng ngang hàng sử dụng
giao thức BitTorrent. Tuy không phải là mạng ngang hàng ra đời sớm nhất,
nhưng với những ưu điểm vượt trội của mình, mạng BitTorrent đã nhanh
chóng trở thành mạng ngang hàng lớn nhất thế giới, thu hút đông đảo người
tham gia cùng với đó là lượng dữ liệu chia sẻ vượt trội so với các mạng ngang
hàng khác.
Bài báo cáo này sẽ tìm hiểu về mạng ngang hàng và giao thức
BitTorrent, tìm hiểu đặc điểm của giao thức, khuôn dạng các thông điệp,
nguyên lý hoạt động và viết ra chương trình chia sẻ file đơn giản bằng giao
thức BitTorrent.
Mặc dù có nhiều cố gắng nhưng cũng không tránh khỏi sai sót, mong
nhận được ý kiến đóng góp tận tình của thầy và các bạn.
Chúng em xin chân thành cảm ơn!!!
Giới thiệu về BitTorrent.
- BitTorrent là một giao thức chia sẻ tài nguyên trên mạng ngang hàng,
đồng thời là tên của một 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.
- Về cơ bản, BitTorrent là giao thức chia sẻ dữ liệu ngang hàng qua
Internet, hoạt động dựa trên 1 mô hình được phân cấp rõ rệt. Tính độc đáo của
mô hình này là khi bạn download 1 gói dữ liệu bất kỳ về máy tính từ những
người chia sẻ trước đó, chính là bạn đã góp phần vào việc tối ưu hóa tốc độ.
Hiện tại, BitTorrent đang là giao thức chia sẻ được sử dụng nhiều nhất trên
thế giới để truyền tải những file dữ liệu có dung lượng “khủng”, bởi vì mô
hình này không hề làm quá tải các webserver download thông thường, khi
mọi người tham gia vào mô hình này, họ đều tự nguyện chia sẻ bằng cách
send – gửi tín hiệu đi, và receive – nhận tín hiệu từ người khác, và do vậy sẽ
ổn định hơn rất nhiều nếu so với việc tất cả mọi người đều tập trung
download từ 1 server cố định.
- BitTorrent dùng để tải về những dữ liệu lớn mà không tốn chi phí máy
chủ và băng thông mạng, đặc biệt có ích cho những người cần chia sẻ các file
có dung lượng lớn qua mạng.
- Giao thức BitTorrent có thể thay thế cho máy chủ và cung cấp mạng
lưới để truyền các file lớn, tốt hơn là download 1 file từ một máy chủ (nguồn
cấp) duy nhất.
- BitTorrent cho phép người dùng tham gia vào một cộng đồng mạng để
có thể upload/download (trao đổi tệp tin) với nhau. Giao thức này là một thay
thế cho việc tải từ nguồn đơn cũ bằng nhiều nguồn khác (mirror sources) để
phân phối dữ liệu và hoạt động tốt hơn rất nhiều đối với những mạng có băng
thông thấp (băng thông giữa nguồn và đích thấp). Bằng cách sử dụng phương
thức BitTorrent, rất nhiều máy tính có thể thay thế cho một sever lớn, rất hiệu
quả cho việc phân phối tập tin tới nhiều người nhận. Sử dụng băng thông thấp
còn giúp ngăn ngừa đột biến lớn cho đường truyền Internet ở trong khu vực,
giữ cho tốc độ Internet tốt hơn cho những người dùng khác, bất kể họ có hay
không sử dụng giao thức BitTorent.
- Nếu bạn có 1 file có dung lượng 1GB và có 300 người cần, sẽ cần rất
nhiều thời gian để chia sẻ hết 300GB dữ liệu. Nhưng nếu bạn chia file thành
các mảnh nhỏ gửi cho mọi người và họ lại chia sẻ các mảnh đó cho người
khác cho đến khi ai ai cũng có file hoàn chỉnh thì sẽ nhanh hơn rất nhiều. Các
trang web lớn có thể sử dụng BitTorrent để cập nhật cho các phần mềm của
họ, bằng cách này họ sẽ giảm được chi phí cho băng thông. Tốc độ của
BitTorrent rất đáng kinh ngạc, chỉ mất vài giờ để truyền tải các file cực kì lớn.
Vì vậy mà nó được sử dụng trên các trang web trên khắp thế giới.
- Tên gọi chính xác của nó là BitTorrent, nhưng thông thường mọi người
vẫn gọi tắt và biết đến nó với cái tên là Torrent.
- BitTorrent là mạng lưới P2P ( Peer-To-Peer = ngang hàng, tức là nhiều
người cùng kết nối trực tiếp với nhau để chia sẻ file). Torrent chuyên được
dùng để trao đổi những dữ liệu như phim, trò chơi, phần mềm,… và một số
file có dung lượng lớn hoặc cực lớn.
- Do kết nối ngang hàng nên có tốc độ rất cao, phù hợp cho download
các dữ liệu dung lượng lớn.
- Các tập tin trao đổi giữa các máy tính với nhau, nhưng việc tìm kiếm và
chuyển giao tập tin từ các máy tính khác có thể gây ra tắc nghẽn.
- Giao thức BitTorrent định nghĩa một phương thức để phổ biến và chia
sẻ file trên mạng. Trước khi BitTorrent ra đời đã tồn tại các giao thức đồng
đẳng (Peer-to-Peer, viết tắt là P2P) có khả năng cho phép một nhóm máy tính
trên mạng chia sẻ tệp với các máy tính khác nhóm mà không cần phải sử dụng
một máy chủ để làm kho lưu trữ trung tâm. BitTorrent là một cải tiến từ các
giao thức đồng đẳng trước. Giao thức BitTorrent có một nguyên lý hoạt động
chặt chẽ để có khả năng tùy biến, tin cậy và chi phí duy trì danh sách các máy
tính chia sẻ tệp tốt hơn các giao thức đồng đẳng trước đó. Do giao tiếp theo
chuẩn TCP/IP nên giao thức BitTorrent có thể hoạt động trên đường truyền
Internet thông thường.
- BitTorrent Client là một chương trình hoạt động theo giao thức
BitTorrent. Mỗi BitTorrent Client có khả năng so sánh, yêu cầu và vận
chuyển tệp trên mạng sử dụng giao thức BitTorrent. Tệp có thể chứa bất kỳ
thông tin nào, bao gồm cả văn bản, âm thanh, phim, và nội dung đã được mã
hóa.
1.1. Các file Torrent.
- BitTorrent không giống các mạng P2P nào, như là eD2K ( mạng ngang
hàng của Trung Quốc nhưng được nhiều người trên thế giới sử dụng vì cơ sở
dữ liệu của nó rất lớn, gồm nhạc, phim, sách báo, tạp chí, game… Phần mềm
dùng để download là EMULE, nguyên tắc hoạt động: khi cùng download một
file nào đó, nếu bạn có tỷ số up lên cao, bạn được ưu tiên download trước…),
bạn không thể search được file A bằng cách sử dụng các chương trình
BitTorrent. Thay vào đó bạn phải vào các trang web có danh sách các file
Torrent. Các file Torrent này chứa các thông tin về file A mà bạn muốn
download và chứa thông tin về các “Tracker” mà bạn phải kết nối để bắt đầu
download.
- Các Tracker là các máy chủ trung tâm, nó lưu giữ thông tin về từng
người đang chia sẻ các file A, và các phần mà họ có. Khi bạn download file
Torrent và open nó, chương trình BitTorrent ( như Bit Torrent, Bit Tornado,
Azureus,…) sẽ chạy và kết nối đến các Tracker. Tracker sẽ kết nối bạn đến
“Seeds” và “Peers” - những người đang chia sẻ file A này và quá trình
download của bạn sẽ bắt đầu. Đến khi bạn có ít nhất một “mảnh” của file A,
bạn có thể upload “mảnh” đó cho những người chưa có. Như vậy bạn đã có
thể thấy rằng BitTorrent khác với mạng P2P khác: cần có file Torrent cho các
file ( hoặc thư mục ) mà bạn muốn download hoặc chia sẻ.
1.2. Tracker (Theo dõi).
- Khái niệm tracker ở đây là hệ thống 1 server có nhiệm vụ hỗ trợ các
peer trực tiếp, bắt đầu download và duy trì các số liệu thống kê. Kể từ khi các
index có riêng tracker của họ, hầu hết mọi người chỉ nghĩ rằng đó đều là
tracker. Và trong bài viết này, chúng ta sẽ đề cập đến những khái niệm tổng
quát, tránh việc hiểu nhầm với những gì người đọc tự tìm hiểu trên Internet.
- Tại đây, nhiệm vụ của tracker là phân chia các mảnh nhỏ hoặc gói của
dữ liệu tới những người download và gán chúng tới những peer ngang hàng
khác. Có thể hiểu nôm na như thế này, là mỗi khi bạn download từng phần
của file, tức là bạn đã upload chúng tới những người khác – họ có những phần
còn lại của file đó. Chính vì vậy mà càng nhiều người cùng download 1 file
bất kỳ thì sẽ nhanh hơn rất nhiều nếu chỉ 1 hoặc vài người download.
- Các trang web liệt kê các file torrent (như là torrentbox.com) có những
tracker của họ để quản lý việc download và chia sẻ giữa mọi người. File
torrent phải có thông tin chi tiết về tracker. Do đó bạn muốn kết nối đến
tracker nào thì chỉ có thể sử dụng file torrent được tạo cho tracker đó. Có các
phần mềm để giúp bạn thiết lập các tracker riêng và tạo file torrent.
1.3.
Seed, Peer và Leecher.
Có ba khái niệm rất quan trọng mà bạn sẽ luôn gặp chúng cho đến khi nào
bạn còn sử dụng BitTorrent để chia sẻ file và thư mục.
- Seed là những người đã có 100% file hoặc thư mục (file hoặc thư mục
hoàn chỉnh) và vẫn đang tiếp tục upload cho những người khác.
- Peer là những người chưa có đủ 100% file (file chưa hoàn chỉnh) đang
download các phần mà họ chưa có, đồng thời upload các phần đã có cho
người khác.
- Leecher là những người download file nhưng không upload hoặc giảm
mức upload xuống mức thấp nhất. Những người này bị gọi là kẻ trộm bởi vì
đơn giản họ chỉ lấy cái họ cần và bỏ đi.
Qua các thông tin để lại từ hệ thống, nếu bạn là leecher, bạn có thể bị loại
khỏi quá trình tracker, bên cạnh đó những người sử dụng khác sẽ có cái nhìn
khác về bạn, mặc dù họ không biết chính xác bạn là ai.
1.4. Các trang có file torrent.
Có rất nhiều trang web liệt kê các file torrent. Bạn chọn rồi download file
torrent về. Sau đó open bằng chương trình BitTorrent của bạn. Ngay lập tức
bạn sẽ được kết nối với tracker và bắt đầu download.
Một số trang web đó là:
Viettorrent.vn
Mininova.org
Torrentbits.org
TorrentReactor.com
Filelist.org – phải đăng ký.
...
1.5. Tầm quan trọng của việc Upload.
- Việc upload trên BitTorrent là đương nhiên và cần thiết.
- Đặt trường hợp bạn đang download file có 3 seeds và 800 peers, và
việc chia sẻ đã hoàn tất ở một số peers. Giả sử bạn là 1 peer đã download
xong nhưng chỉ upload 10% của file rồi ngừng. Việc làm này sẽ dẫn đến hậu
quả rất xấu, bởi vì bạn làm vậy thì nhiều người cũng có thể làm như vậy, sau
đó sẽ có rất ít seeds và có thể sẽ không còn seeds và những người chưa hoàn
tất sẽ không có file hoàn chỉnh. Nếu tất cả mọi người đều có thói quen ngừng
upload ngay khi download xong thì file đó sẽ không tồn tại lâu. Hãy đảm bảo
rằng dung lượng upload của bạn bằng với dung lượng download hoặc hơn.
Nếu ai đó download 700MB và upload 700MB thì vẫn chưa tốt. Để file đó có
thể tồn tại lâu và những người khác còn có thể download được về với tốc độ
cao, mọi người hãy cố upload bằng 150% dung lượng mình download. Khi
bạn đã download xong, hãy tiếp tục upload đến khi bạn đạt tỉ lệ này. Các
tracker luôn cấm các leechers do đó luôn theo dõi download/upload của bạn.
Nếu bạn thích BitTorrent, đừng thử hoặc cố đánh lừa nó.
2. Các thuật ngữ.
2.1. Torrent.
- Thường thì torrent là một file mang phần mở rộng .torrent bạn nhận từ
server. File .torrent này chứa thông tin về dữ liệu bạn muốn down (chứ không
phải là bản thân dữ liệu đó).
- Bạn có thể save file .torrent đó trên máy của mình, sau đó mở nó bằng
trình BitTorrent để tiến hành việc download. Hoặc, bạn có thể down ngay
bằng cách click thẳng vào link trên trang web – cách này sẽ làm bạn mất thêm
chút công sức nếu muốn down lại file đó sau này.
2.2. Seed/Seeder, Leech/Leecher, Peer.
- Hiểu đơn giản Seed là up, leech là down.
- Seeder là người upload, Leecher là người download.
- Sau khi download xong thì leecher trở thành seeder nếu leecher tiếp tục
upload cho những người đến sau.
- Có thể hiểu nếu số seeder càng đông thì torrent có tốc độ càng cao. Số
leecher cao cũng có thể làm đẩy nhanh tốc độ vì thực chất các leecher cũng sẽ
vừa down vừa up.
Tổng số leech và seed sẽ = số peer.
2.3. Peer.
- Peer là một máy tính khác trên mạng internet.
- Bạn tạo kết nối với peer và truyền tải dữ liệu vói nó. Thường thì một
peer không có cả 100% file mà bạn muốn down (nếu nó có sẽ được gọi là
seed).
- Một vài người khi nói đến peer lại nghĩ ngay đến leecher, những kẻ khi
down xong không chịu để trình BitTorrent chạy tiếp và hoạt động như một
seed.
2.4. Seed.
- Seed là một máy tính có bản copy hoàn hảo của file torrent bạn muốn
down.
- Khi quá trình down của bạn kết thúc, bạn sẽ hoạt động như một seed
cho đến khi bạn bấm Finish hoặc đóng hoàn toàn trình BitTorrent lại. Thường
thì bạn nên chơi đẹp bằng cách seed một file đã download xong cho người
khác. Đồng thời, khi một file torrent mới được đưa lên tracker, một ai đó phải
seed cho người khác down. Hãy nhớ rằng, tracker không biết tí gì về nội dung
thực sự của file, vì thế luôn cần phải có ít nhất một máy đóng vai trò seed.
2.5.
Reseed.
- Với một file torrent mà số seed của nó là con số 0 tròn trĩnh (hoặc
không có đủ số peer để tạo thành một bản copy hoàn hảo), thì dù muốn hay
không, tất cả những gì các peer nhận được cũng sẽ là 1 file không hoàn chỉnh,
vì không ai trong swarm đó có các phần còn thiếu.
Khi điều đó xảy ra, một ai đó với file hoàn chỉnh (seed) sẽ phải đứng ra
kết nối với swarm để tiến hành việc truyền tải các phần còn thiếu. Nó gọi là
reseed. Thường thì khi một yêu cầu reseed được đưa ra và được chấp nhận,
người được yêu cầu phải đảm bảo mình sẽ để trình BitTorrent của mình mở
trong một thời gian nhất định, tạo điều kiện cho file torrent đó có thể được
nhiều người down hơn.
2.6. Swarm.
Một nhóm các máy tính kết nối với nhau thông qua một file torrent.
Ví dụ nếu trình BitTorrent của bạn báo bạn đang nối với 10 peers và 3 seeds,
thì điều đó nghĩa là trong swarm đó có 13 người (không kể bạn).
2.7. Tracker.
- Một server nằm trên mạng internet, phối hợp hoạt động của các trình
BitTorrent.
- Khi bạn mở một file torrent, máy tính của bạn sẽ liên lạc với tracker để
lấy danh sách các peer cần kết nối.
- Trong quá trình down file torrent, thỉnh thoảng máy tính của bạn sẽ lại
liên lạc với tracker, thông báo cho tracker biết bạn đã down và up bao nhiêu,
còn bao nhiêu nữa là down xong…
- Nếu bạn chuẩn bị down 1 file mà tracker của nó hiện đang die, bạn sẽ
không thể tạo kết nối. Nếu đang down mà tracker die, bạn vẫn có thể tiếp tục
quá trình truyền tải file với các peer hiện có, nhưng sẽ không kết nối thêm
được với peer mới nào khác.
- Thường các lỗi với tracker ít xảy ra trong một thời gian dài, do đó bạn
chỉ việc chờ đợi và để mở trình BitTorrent.
2.8. Share rating.
- Nếu bạn dùng một BitTorrent với giao diện GUI (Graphic User
Interface), bạn sẽ thấy thông số share rating hiện trên giao diện. Nó đơn giản
chỉ là tỉ lệ bạn up/down.
- Nếu thông số share rating là 1, nghĩa là lượng bạn down bằng với lượng
bạn up. Số này càng cao thì nghĩa là bạn đóng góp càng nhiều.
- Nếu bạn thấy share rating là vô cùng, thì nghĩa là bạn đang seed một
file – bạn up nhưng không down. Nói chung, con số này chỉ để làm cảnh, tuy
vậy vì lợi ích của người khác, hãy giữ cho share rating của bạn lớn nhất có
thể.
Share ratio = Dung lượng upload / Dung lượng download.
- Muốn có ratio cao là điều tương đối khó, vì bạn cần phải up nhiều hơn
down một lượng rất lớn.
Ví dụ: Ban đầu bạn up 5GB/ down 1GB --> ratio = 5.
Sau đó bạn up thêm 10GB, down thêm 9GB, tổng cộng bạn up 15GB/
down 10GB --> ratio = 1,5. Từ ratio = 5 giảm xuống còn ratio = 1,5 rất nhanh
dù bạn down ít hơn up. Chính vì vậy, nếu muốn ratio cao thì tốt nhất là down
ít, up nhiều.
2.9. Hit and Run.
- Khi bạn leech xong, bạn nên giữ seed (không xóa file torrent trong
client) để tiếp tục up cho người đến sau.
- Hit and Run là hành động down xong trốn luôn mà không seed nữa.
- Hit and Run được xem là hành động tồi tệ nhất trong P2P.
- Người Hit and Run được xem như “Kẻ cắp P2P” thời IT. Họ chỉ biết
hưởng thành quả rồi biến mất, giống như kẻ trộm ngoài lề của xã hội.
Chẳng có lý do gì mà ta lại tự đưa ta vào con đường này vì bản năng và
danh dự của bản thân.
2.10. DHT (Distributed Hash Table).
- DHT có thể hiểu là một chức năng giúp bạn kết nối tới các máy tính
khác nhanh hơn, tải dữ liệu từ các máy đó mà không cần thông qua tracker.
Hầu hết các public tracker đều có chức năng này. Chức năng chỉ có 1 nhược
điểm duy nhất là dữ liệu up/down phần nào không thông qua tracker nên
thông tin up/down trên Client khác với thông tin trên tracker.
- DHT là một lớp nằm trong hệ thống mạng P2P, nó chứa các giá trị và
tên giống như một bảng băm Hash Table và sẵn sàng cung cấp các thông tin
này cho các User có bật DHT và tìm kiếm cái Hash Table đó, điều này sẽ giúp
các User liên kết với nhau trên khắp thế giới và khi tìm thấy file có cái bảng
Hash Table đó, nó sẽ tải về máy mình.
2.11. Port forwarding.
- Nếu máy tính của bạn kết nối với internet thông qua một router hoặc có
một trình firewall đang chạy, Port forwarding là động tác mở một cổng trên
router/firewall để các kết nối từ bên ngoài có thể thiết lập được với máy tính
của bạn.
- Có một vài điểm mà bạn cần nắm rõ trước khi bắt tay vào tìm hiểu về
Port forwarding. Để cho đơn giản và nhanh chóng, bạn hãy tạm chấp nhận
những điều sau (dùng trog hầu hết các trường hợp):
• Mỗi thiết bị trên internet đề có ít nhất 1 địa chỉ IP. Địa chỉ IP là môt
dãy số được sử dụng để nhận diện một thiết bị.
• Mỗi địa chỉ IP được chia ra làm nhiều cổng khác nhau. Khi một máy
tính gửi dữ liệu đến một máy tính khác, dữ liệu sẽ đi từ một cổng thuộc
thuộc địa chỉ IP này đến một cổng thuộc địa chỉ IP kia.
• Trong một thời điểm bất kỳ, một cổng chỉ có thể được sử dụng bởi một
chương trình.
- Khi đã nắm được những điểm trên, ta bắt đầu nói đến NAT (Network
Address Translation). NAT nhận một địa chỉ IP, và về cơ bản, chia nó ra làm
nhiều địa chỉ IP khác nhau.
- Ở đây, địa chỉ IP ngoài (external IP address) được chia thành 2 địa chỉ
IP nội bộ (internal IP address). Địa chỉ IP thứ nhất (IP Address1) là của
Gateway. Địa chỉ IP thứ hai (IP Address2) là của máy tính thứ nhất. Cần chú
ý rằng, Router có 2 địa chỉ IP – 1 địa chỉ IP ngoài và 1 địa chỉ IP nội bộ làm
việc như một Gateway đối với mỗi máy tính trong mạng.
- Trong hình trên, những máy tính trong mạng nội bộ (internal network)
chỉ “nhìn thấy” những địa chỉ IP nội bộ. Vì thế những máy tính này không thể
gửi dữ liệu trực tiếp tới một máy tính ngoài mạng mà không thông qua
Gateway.
- Cần nhớ, Gateway là địa chỉ IP nội bộ của Router. Khi máy tính trong
mạng muốn gửi dữ liệu ra ngoài, đầu tiên những dữ liệu đó sẽ được chuyển
đến gateway, sau đó router sẽ đưa chúng ra ngoài thông qua địa chỉ IP ngoài.
- Điều này cũng tương tự như những gì xảy ra trên mạng internet. Một
máy tính ngoài mạng sẽ không thể “thấy” một máy tính trong mạng nội bộ.
Chúng chỉ có thể thấy và gửi dữ liệu tới router thông qua địa chỉ IP ngoài. Sau
đó router mới quyết định xem nó phải làm gì với những dữ liệu đó – và NAT
đóng vai trò chính trong quá trình này. NAT được cấu hình sẵn để làm việc
với vài chương trình. Tuy vậy, có những chương trình mà NAT không được
thiết kế để làm việc mới, do đó chúng ta phải làm một bước gọi là Port
forwarding.
- Port forwarding cũng khá đơn giản. Khi một máy tính trong mạng
internet gửi dữ liệu tới router qua địa chỉ IP ngoài, router cần xác định xem nó
sẽ làm gì với dữ liệu đó. Quá trình port forwarding sẽ chỉ ra cho router thấy:
Cần gửi dữ liệu tới máy tính nào trong mạng LAN. Khi bạn cài đặt xong các
rule cho port forwarding, router sẽ lấy dữ liệu dạng địa chỉ IP ngoài, số thứ tự
cổng và gửi dữ liệu đó tới địa chỉ IP nội bộ, số thứ tự cổng. Các rule dành cho
port forwarding được cài đặt theo cổng. Vì thế, rule cho cổng mang số 10 sẽ
chỉ làm việc cho cổng mang số 10.
- Tại 1 thời điểm, một cổng chỉ có thể được sử dụng bởi một chương
trình. Dùng cùng 1 cổng trên 2 máy tính trong mạng nội bộ vào cùng một thời
điểm có thể dẫn tới xung đột giữa các rule và làm rối loạn việc truyền dữ liệu.
- Hầu hết các router đều bắt bạn chỉ ra chính xác địa chỉ IP nội bộ cần
forward đến cũng vì lý do này. Còn với việc những router không bắt bạn làm
việc này, hãy cẩn thận, rule cho port forwarding chỉ làm việc với một máy
tính trong một thời điểm.
Tại sao cần phải forward port?
Dữ liệu được truyền tải thông qua 1 cổng khi bạn đang download. Nếu
cổng đó chưa được mở, bạn chỉ có thể kết nối được với những người khác
trong swarm (cổng của họ đã mở). Nếu cổng của bạn đã mở rồi, những người
khác có thể kết nối với bạn (những người này có thể đã mở hoặc chưa mở
cổng). Như vậy, việc mở cổng làm tăng số lượng người kết nối được với bạn
và do đó sẽ làm tăng tốc độ download.
3. BitTorrent hoạt động như thế nào?
- Thông thường khi muốn tải về 1 tập tin nào đó từ trên mạng, bạn chỉ
cần nhấp vào liên kết tương ứng và các máy chủ lưu trữ sẽ bắt đầu gửi cho
máy tính của bạn tập tin đó. Máy của bạn đóng vai trò là máy khách (client)
và nhận dữ liệu tải về từ máy chủ (server).
Kết nối client-server.
- Trong các phương thức truyền tải dữ liệu điển hình thường gặp, ví dụ
như khi bạn tải một trang báo, máy tính của bạn sẽ thực hiện kết nối tới các
máy chủ có chứa dữ liệu của trang báo đó và trực tiếp tải về dữ liệu từ các
máy chủ này. Tất cả các máy muốn hiển thị trang báo – hay còn gọi là các
máy client đều sẽ phải cùng trải qua quá trình này và tải về dữ liệu từ cùng
một server/cụm server đó. Client download dữ liệu do server upload, đây là
mô hình căn bản thường gặp nhất trên mạng Internet.
- BitTorrent là một giao thức mạng ngang hàng, đồng nghĩa với mỗi các
máy tính tham gia trong mạng lưới BitTorrent sẽ đảm nhận cả việc download
lẫn upload dữ liệu mà không cần có sự có mặt của một server trung tâm.
- Giao thức BitTorrent định nghĩa một phương thức để phổ biến và chia
sẻ tệp trên mạng. Trước khi BitTorrent ra đời đã tồn tại các giao thức ngang
hàng (Peer-to-Peer, hoặc viết tắt là P2P) có khả năng cho phép một nhóm máy
tính trên mạng chia sẻ tệp với các máy tính khác nhóm mà không cần phải sử
dụng một máy chủ để làm kho lưu trữ trung tâm. BitTorrent là một cải tiến từ
các giao thức ngang hàng trước.
- Giao thức BitTorrent có một nguyên lý hoạt động chặt chẽ để có khả
năng tùy biến, tin cậy và chi phí duy trì danh sách các máy tính chia sẻ tệp tốt
hơn các giao thức ngang hàng trước đó.
- Do giao tiếp theo chuẩn TCP/IP nên giao thức BitTorrent có thể hoạt
động trên đường truyền Internet thông thường.
- Giao thức BitTorrent có thể thay thế cho máy chủ và cung cấp mạng
lưới để truyền cac file lớn. Tốt hơn là download 1 file từ một máy chủ (nguồn
cấp) duy nhất, BitTorrent cho phép người dùng cho phép người dùng tham gia
vào một cộng đồng mạng để có thể upload/download (trao đổi tệp tin) với
nhau. Giao thức này là một thay thế cho việc tải từ nguồn đơn cũ bằng nhiều
nguồn khác (mirror sources) để phân phối dữ liệu và hoạt động tốt hơn rất
nhiều đối với những mạng có băng thông thấp (băng thông giữa nguồn và
đích thấp).
- Bằng cách sử dụng phương thức BitTorrent, rất nhiều máy tính (như
máy tính cá nhân ở nhà) có thể thay thế cho một sever lớn, rất hiệu quả cho
việc phân phối tập tin tới nhiều người nhận. Sử dụng băng thông thấp còn
giúp ngăn ngừa đột biến lớn cho đường truyền Internet ở trong khu vực, giữ
cho tốt độ Internet tốt hơn cho những người dùng khác bất kể họ có hay
không sử dụng giao thức BitTorent.
Kết nối peer-to-peer.
- Thường thì một máy tính sẽ tham gia vào một mạng
lưới BitTorrent bằng cách sử dụng thông tin chứa trong một file .torrent. Các
phần mềm BitTorrent client, ví dụ như uTorrent hay BitComet sẽ sử dụng
thông tin từ file này để liên lạc với một máy đảm nhiệm vai trò “tracker”
trong mạng lưới.
- Tracker cũng là một dạng máy chủ, nhưng không trực tiếp cung cấp dữ
liệu cho các máy khác trong mạng lưới BitTorrent mà chỉ chịu trách nhiệm
giám sát và theo dõi tình trạng các máy tính đang tham gia vào mạng lưới.
Thông qua giao tiếp và sử dụng các thông tin mà Tracker cung cấp, máy tính
của bạn lúc này sẽ có thể thực hiện kết nối trực tiếp đến các máy khác trong
mạng lưới để bắt đầu gửi/nhận dữ liệu.
- Khi đã kết nối vào mạng lưới, máy tính của người dùng có thể bắt đầu
thực hiện tải dữ liệu về theo từng phần nhỏ. Dữ liệu này do các máy khác
trong mạng lưới cung cấp. Và dĩ nhiên, những phần dữ liệu đã được tải về
cũng sẽ lại tiếp tục được máy của người dùng chia sẻ sang cho những máy
chưa có phần đó.
- Với cơ chế này, cho dù 10000 máy cùng download một file tại một thời
điểm cũng sẽ không gây quá tải cho máy chủ nào hết. Thay vào đó gánh nặng
trên băng thông upload được chia sẻ đều cho các máy trong mạng lưới.
- Quan trọng hơn cả, các máy trong mạng lưới clients không bao giờ
thực sự tải về các file dữ liệu từ máy chủ tracker. Nhiệm vụ của các Tracker
trong mạng lưới chỉ gói gọn trong việc theo dõi thông tin của các máy tính
khác.
- Một mạng lưới BitTorrent chỉ thực sự có ý nghĩa khi có ít nhất một
seeder – một máy có chứa bản đầy đủ, hoàn chỉnh của dữ liệu – trong mạng
đó để chia sẻ phiên bản đầy đủ này cho các máy khác. Nếu mạng lưới chỉ bao
gồm các leecher hay peers, tức các máy có chứa những phần không hoàn
chỉnh của dữ liệu, người dùng sẽ không thể tải về phiên bản đầy đủ.
- Một số BitTorrent client có cơ chế lựa chọn các máy “tích cực” trong
mạng lưới để giao tiếp. Lúc này máy tính của người dùng sẽ ưu tiên gửi dữ
liệu cho những máy có tốc độ upload tốt, đóng góp nhiều dữ liệu cho mạng
lưới thay vì những máy upload với tốc độ chậm. Nói một cách ngắn gọn đây
là cơ chế “làm nhiều, hưởng nhiều” giúp tăng hiệu quả tổng quát của mạng
lưới, ưu tiên giao tiếp giữa những máy có đường truyền tốt.
- BitTorrent client là một chương trình hoạt động theo giao thức
BitTorrent. Mỗi BitTorrent client có khả năng so sánh, yêu cầu, và vận
chuyển tệp trên mạng sử dụng giao thức BitTorrent. Tệp có thể chứa bất kỳ
thông tin nào, bao gồm cả văn bản, âm thanh, phim và nội dung đã được mã
hóa.
Một ví dụ để dễ hình dung quá trình này là hình ảnh một nhóm người ngồi
quanh một cái bàn. Hiển nhiên ai cũng có thể nói và nghe người khác nói. Giờ
hãy tưởng tượng họ đều đang cố lấy một bản copy của một cuốn sách. Người
A cho biết anh ta có trang 1-10, 23, 42-50 và trang 75. Người C, D, E đều
thiếu một số trang trong số các trang người A có, vì thế họ cần sắp xếp để lấy
bản copy của những trang mà mình thiếu. Đến người B, anh cho biết mình có
trang 11-22, 31-37, và 63-70. Người A, D và E bảo B rằng họ muốn một vài
trang trong số đó, và B cần đưa cho họ bản copy các trang ấy. Quá trình cứ
thế tiếp tục, mọi người lần lượt trao đổi cho nhau những phần mình có và
người khác cần. Sau một lúc, dù tất cả đã có bản copy của hầu hết các trang
trong cuốn sách, song không ai trong số họ có đủ cả cuốn.
Trong đó, có một người S có bản copy của đủ cả cuốn sách, và vì thế không
cần nhận bất cứ trang nào. Anh ta có nhiệm vụ phân phát những trang mà
không ai trong nhóm có. Còn người nhận sẽ không lấy các trang mà người
khác trong nhóm đã có. Như vậy, người S có thể chia sẻ cuốn sách cho người
khác mà không cần phải gửi cả bản copy cho từng người. Anh ta chỉ việc đưa
bản copy các trang khác nhau cho những người khác nhau, và tự họ sẽ chia sẻ
cho nhau. Người S ở đây được gọi là Seed trong BitTorrent.
Vậy khi download với chương trình BitTorrent, ví dụ để hình dung
ấy được áp dụng như thế nào?
- Trước hết, bạn tải về một file .torrent và mở nó với chương trình
BitTorrent của mình. File torrent này không chứa file mà bạn muốn
down, nó chỉ mang dữ liệu mô tả file mà bạn chuẩn bị down.
- Chương trình BitTorrent của bạn dùng thông tin ghi nhận được trong
file torrent để kết nối với tracker. Tracker là server mang thông tin và
danh sách các peer đang kết nối với file bạn muốn down.
- Trình BitTorrent của bạn gửi request tới các peer đang kết nối với file
đó (swarm) và bắt đầu down về các phần nhỏ của file đó từ mỗi peer.
- Khi đã down xong mỗi phần nhỏ, trình BitTorrent sẽ bắt đầu up phần
đó lên cho những ai trong swarm chưa có cơ hội down phần nhỏ ấy.
- Quá trình tiếp diễn cho và mọi người trong swarm tiến hành down các
phần của file mình cần.
- Sau khi down xong file bạn cần, trình BitTorrent sẽ chuyển máy bạn
thành seed cho file đó và cho phép mọi người tiếp tục down cho đến
khi bạn thoát khỏi chương trình. Để 1 file torrent có thể truyền lại, cần
ít nhất 1 seed.
Để bắt đầu download một tập tin bằng torrent, bạn cần truy cập vào trang web
chuyên về torrent như thepiratebay.org, demonoid,… và tải về 1 file có đuôi
.torrent liên quan đến tập tin cần download. Các file torrent này không phải là
bộ phim, bài hát, hoặc tập tin thực tế mà bạn đang cần tải về mà là 1 file giúp
máy của bạn kết nối với các máy khác trong mạng thông qua một server theo
dõi gọi là tracker, sau đó địa chỉ của các máy này sẽ được tracker gửi về máy
bạn cũng như địa chỉ của bạn sẽ được gửi cho các máy khác trong mạng để
quá trình download có thể được diễn ra.
Giả sử bạn đang tải một bộ phim thông qua torrent, từng phần của bộ phim sẽ
được tải về từ các máy khác trong mạng thông qua tracker. Khi bạn đã có một
vài phần nhỏ của file, những phần này sẽ được upload cho những phần khác
cũng đang muốn tải bộ phim đó và quá trình này được thực hiện đồng thời với
việc download các phần còn lại của bộ phim. Giả sử rằng một tập tin được
chia thành 6 khối tương ứng với 6 màu, đầu tiên một máy có đầy đủ tập tin
(máy này được gọi là seeder) sẽ gửi cho mỗi máy trong mạng một phần của
tập tin.
Seeder chứa đầy đủ 6 phần của file.
Sau đó lần lượt gửi mỗi phần tới một máy trong mạng.
Ngay khi một máy nhận được một phần của tập tin, nó sẽ bắt đầu chia sẽ phần
đó với các máy khác chưa có phần này. Việc phần nào của file được gửi cho
máy nào là do tracker đảm nhiệm và điều phối.
Các máy trong mạng tự trao đổi với nhau cho tới khi nào có được đầy đủ các
phần của tập tin.
Ưu và nhược điểm của BitTorrent.
Tất cả mọi thứ đều có ưu và nhược điểm, và giao thức BitTorrent cũng không
phải là ngoại lệ. Trước tiên chúng ta hãy xem BitTorrent mang lại những lợi
ích gì so với phương thức download client-server truyền thống.
- Tắt, bật và tạm dừng chương trình download bất kỳ lúc nào mà không
ảnh hưởng đến tập tin cần tải. Lợi thế rất lớn so với việc download trực
tiếp từ server, nếu quá trình tải về tập tin bị gián đoạn vì một lý do nào
đó như mất điện chẳng hạn, thì thay vào việc phải download lại từ đầu,
bạn chỉ cần restart lại client là file lại tiếp tục được tải về.
- Download file dung lượng lớn với 1 click: các bộ phim HD hoặc các
game mới hiện nay thường có dung lượng lớn, nên khi upload lên các
server đều phải chia nhỏ ra và số lượng có khi lên đến vài chục phần.
So với việc add cả đống link vào hàng đợi download thì việc tải phim,
game bằng torrent tỏ ra thuận tiện hơn rất nhiều.
- Download các file cũ: đối với các bộ phim hay chương trình cũ thì việc
download trực tiếp là khá khó khăn khi mà toàn bộ file hoặc một vài
part đã quá thời hạn cho phép của host và bị xóa khiến cho bạn không
tải về được. Tuy nhiên đối với torrent bạn vẫn có thể tìm được những
tracker phù hợp để download những tập tin cũ, tuy tốc độ có thể chậm
một chút do lượng máy seed không còn nhiều nhưng ít ra thì có còn
hơn không.
Bên cạnh những ưu điểm đã nêu trên, BitTorrent mắc phải những hạn chế sau:
Tốc độ tải phụ thuộc vào số lượng seeder: như đã đề cập ở trên bản chất của
torrent là chia sẻ từng phần file giữa các máy tính và số lượng máy tính càng
nhiều thì tốc độ dowload cũng càng nhanh.Đối với các bộ phim hay phần
mềm hot mới ra thì lượng người download là rất nhiều nên điều này không
đáng quan tâm,tuy nhiên nếu bạn đang tìm kiếm một tập tin cũ thì với vài
seeder có thể khiến bạn mât vài ngày mới download xong một tập tin cỡ 3GB
4. Giới thiệu về BitComet
BitComet là chương trình BitTorrent được viết bằng ngôn ngữ C++.Nó có
rất nhiều tính năng mà chương trình BitTorrent gốc không có và có khả năng
tìm kiếm tài nguyên, khả năng download, chia sẻ file rất nhanh và đơn
giản.Hãy nhìn hình trên, đó là cửa sổ chính của chương trình, thanh menu
nằm ở trên đầu, danh sách các file torrent được liệt kê ở giữa, các trang web
chứa các file torrent nằm phía bên trái và bản tin nằm ở dưới cùng. Các trang
web sẽ được mở bằng trình duyệt mặc định của bạn khi nháy đúp vào chúng ở
cột bên trái.Bây giờ chúng ta sẽ làm quen với các thiết lập đơn giản của
BitComet.
Tùy chọn kết nối.
Bấm vào nút Preferences ở trên thanh menu hoặc bấm vào Options
Preferences ( phím tắc CTRL + P). Thiết lập các kết nối là rất quan trọng.Như
bạn có thể thấy trên hình, hiện tại đang là giá trị No Limit ở mục Global Max
Upload Rate và Global Max Download Rate.Bạn nên giới hạn tốc độ upload
của bạn để tránh ảnh hưởng tới tốc độ download. Tốc độ download giới hạn
hoàn tùy bạn chọn. Trong mục Task Schedule là hai tùy chọn. Max
Simultaneous Download Tasks nên để là 10, nhưng nếu bạn có đường truyền
Intertnet tốc độ cao và bạn muốn download thật nhiều, bạn có thể tăng giá trị
này. Bạn cũng có thể thấy tính năng bắt đầu tác vụ download mới nếu tỉ lệ
download nhỏ hơn mức giới hạn. Thiết lập Listen Port là rất quan trọng. Một
vài nhà cung cấp dịch vụ mạng (ISP) đã khóa một số cổng mặc định của
BitTorrent, vì thế bạn đừng sử dụng những cổng đó. Bấm vào nút Choose
Random Port và BitComet sẽ chọn ngẫu nhiên ra các cổng để sử dụng.
Tùy chọn các tác vụ download.
Bấm vào Task ở cửa sổ preferences. Có rất nhiều thiết lập ở đây và bạn nên
thay đổi một chút. Để thay đổi thư mục mặc định chứa các file được
download về bạn chỉ cần chỉnh ở mục Default download patch. Như bạn thấy
ở trên hình có rất nhiều tùy chọn cho tỉ lệ upload cao nhất. Cho dù bạn thay
đổi bất cứ giá trị nào, tốc độ upload của bạn sẽ không vượt quá giới hạn ở
Global Max Upload Speed mà bạn đã thiết lập ở mục Thiết lập kết nối ở trên.
Các tùy chọn khác như là Appearance tùy vào bạn thiết lập, bây giờ chúng ta
sẽ xem cách để download bằng BitComet.
Download bằng BitComet
Như đã đề cập ở các phần trên, file torrent cho phép bạn download và
chia sẻ dữ liệu giữa các người dùng có chung file torrent đó. Để download,
bạn phải vào các trang web có chứa file torrent và download file đó về sau đó
mở ra bằng BitComet. BitComet có một danh sách các trang web chứa file
torrent ở thanh bên trái của cửa sổ chính, nháy đúp vào một trong những link
đó để mở ra các trang web. Một khi bạn tìm thấy cái bạn muốn download,
bấm vào file torrent đó và nó sẽ được tự động tải về. Khi mở file đó ra bằng
BitComet, một cửa sổ sẽ hiện ra danh sách các file chứa trong file torrent đó
và đường dẫn để bạn lưu dữ liệu. Chọn đường dẫn và bắt đầu download. Bạn
có thể thêm nhiều file torrent vào danh sách download của BitComet bằng
cách bấm vào File - Open Torrent (phím tắt CTRL+O) hoặc đơn giản hơn là
thả file torrent đó vào cửa sổ chính của BitComet. Bạn có thể thêm bao nhiêu
file tùy thích.
Các thông tin
Bấm vào bất cứ file torrent nào ở trong danh sách bạn sẽ thấy hiện ra như
trong hình dưới đây. Một vài thông tin trong hình đã bị xóa đi như là tên file
torrent, đường dẫn để lưu trữ dữ liệu, “tracker”. Nhưng về cơ bản bạn có thể
thấy được mục này khi bấm vào file torrent. Nó sẽ cho bạn biết các thông tin
về file torrent của bạn, “tracker” của nó, tiến trình download và tốc độ
download, upload trung bình, đó sẽ là các thông tin rất hữu ích đẻ bạn đánh
giá về file torrent của mình. Bây giờ chúng ta hãy xem thông tin của file được
download xem sao !.
Thông tin về file được download
Bấm vào Files ở cột hiển thị các thông tin về file torrent. Bạn sẽ thấy danh
sách tất cả các file ở file torrent này và từng file đã được download bao nhiêu.
Nếu bạn muốn download một vài file nhanh hơn các file khác, bạn có thể thiết
lập mức độ ưu tiên (priority) bằng cách bấm chuột phải vào file đó. Một cách
khác để bạn thấy tất cả các file bạn download và quản lý các file đó là thông
qua Thông tin tác vụ (Task Properties).
Thông tin tác vụ (Task properties)
Để xem được thông tin về tác vụ bạn bấm chuột phải vào file torrent trong
danh sách của bạn và bấm Properties. Nó sẽ cho bạn thấy danh sách các file
sẽ được download thông qua file torrent này và đưa ra cho bạn tùy chọn
không chọn file này, nghĩa là file đó sẽ không được download. Bạn sẽ hiểu rõ
hơn về việc này ở mục sau. Nếu bạn đã thiết lập Save Location trong Task
Preferences từ trước, đường dẫn đó sẽ tự động hiện lên ở ô Save Location.
Như vây cơ bản bạn đã biết cách download và chia sẻ file sử dụng BitComet,
bạn nên biết về Share Ratio và tại sao nó lại rất quan trọng.
Tỉ lệ chia sẻ là tỉ lệ giữa dung lượng upload và download của bạn. Tỉ lệ
chấp nhận được là 1.000 trở lên, tỉ lệ này có nghĩa là dung lượng bạn đã
upload tương đương với dung lượng bạn đã download. Nếu dung lượng bạn
upload chưa bằng dung lượng bạn download, bạn đang làm ảnh hưởng đến
người khác. Ví dụ, nếu có càng nhiều người ngừng công việc upload ngay sau
khi họ upload được bằng nửa dung lượng họ download, như vây sẽ làm chậm
tốc độ chung của file torrent và làm cho file đó trở nên “chết” sớm hơn so với
khi mọi người có tỉ lệ chia sẻ cao. Một vài trang web Torrent yêu cầu bạn
đăng ký và đảm bảo tỉ lệ chia sẻ có thể sẽ giới hạn những người không chịu
upload hoặc cấm họ kết nối với tracker. Điều quan trọng nhất: bạn hãy upload
bằng dung lượng bạn download, đó là chính là chia sẻ!.
Nếu bạn có một vài file ở trong danh sách, bạn có thể thiết lập mức độ ưu
tiên bằng cách bấm chuột phải vào chúng và chọn các mức tỉ lệ.