Chương trình BitTorrent nguyên thủy được viết bằng ngôn ngữ lập trình Python và ngựa nguồn của chương trình BitTorrent phiên bản 4.0 được phát phát hành dưới dạng ngựa nguồn mở tuân theo Bản quyền sử dụng ngựa nguồn BitTorrent. BitTorrent có rất nhiều biến thể khác nhau được viết bằng các ngôn ngữ lập trình khác nhau, chạy trên các hệ điều hành khác nhau.
BitTorrent hoạt động như thế nào?
Giao thức BitTorrent định nghĩa một cách để phổ biến và sẻ chia tệp trên mạng. Trước khi BitTorrent ra đời vừa tồn tại các giao thức cùng đẳng (Peer-to-Peer, hay viết tắt là P2P) có tiềm năng cho phép một nhóm máy tính trên mạng sẻ chia tệp với các máy tính khác nhóm mà bất nê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 cùng đẳng trước. Giao thức BitTorrent có một nguyên lý hoạt động chặt chẽ để có tiềm năng tùy biến, tin cậy và chi phí duy trì danh sách các máy vi tính sẻ chia tệp tốt hơn các giao thức 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 applicant là một chương trình hoạt động theo giao thức BitTorrent. Mỗi BitTorrent applicant có tiềm 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 vừa được ngựa hóa.
Tạo và phát hành tệp Torrent lên mạng
Để sẻ chia một tệp hay nhiều tệp bằng giao thức BitTorrent, đầu tiên cần làm ra (tạo) tệp “torrent”. Mỗi tệp torrent chứa thông tin miêu tả tệp muốn sẻ chia, và thông tin về máy vi tính cung cấp bản gốc của tệp. Thông tin rõ hơn lưu trên máy vi tính theo dõi sẽ khác nhau tuỳ từng trường hợp vào phiên bản của giao thức BitTorrent, nhưng dù ở phiên bản nào tệp “torrent” luôn luôn có đuôi mở rộng lớn là .torrent. Cụ thể thì một tệp torrent chứa thông tin accommodation báo (địa chỉ URL của máy vi tính theo dõi), và thông tin về tên tệp được sẻ chia, kích thước mảnh, chiều dài khóa, chiều dài tệp, và vé thông hành để tải tệp. Một tệp torrent có thể chứa thông tin về một tệp hay nhiều tệp. Máy vi tính vừa tải về tệp xong có thể lựa chọn hoạt động như máy gieo hạt, cung cấp bản sao trả chỉnh của tệp. Sau khi tệp torrent được tạo, một đường dẫn để tải tệp về từ máy bạn được đặt lên trang web, và tệp torrent được đăng ký với máy theo dõi (tiếng Anh: tracker). Máy theo dõi chứa một danh sách các máy vi tính hiện thời (gian) đang tải tệp về. Máy ngang hàng đang cung cấp tệp trả chỉnh được gọi là máy gieo hạt (seeder).
Tải xuống tệp torrent và sẻ chia tệp
Dùng một trình duyệt Internet bất kì, như FireFox, duyệt trang web có danh sách các tệp torrent, tải nó về, sau đó dùng chương trình BitTorrent applicant mở tệp đấy ra. Sau khi vừa mở tệp torrent, chương trình BitTorrent sẽ kết nối với máy theo dõi, máy theo dõi sẽ cung cấp cho nó một danh sách các máy vi tính đang tải tệp này. Một nhóm các thành viên của một mạng BitTorrent (hay mạng cùng đẳng) để tải về cùng một tệp được gọi là quần thể (swarm).
Việc sẻ chia được bắt đầu từ máy gieo hạt. Các máy tính kết nối đầu tiên sẽ hướng trực tiếp tới máy gieo hạt để bắt đầu tải về các mảnh của tệp. Giao thức BitTorrent chia tệp cần tải về thành các phần nhỏ có kích thước bằng nhau (thường là 1/4 mêgabyte = 256 kilôbyte), ví dụ một tệp có kích thước 4,37 GB thường sẽ bị chia thành các mảnh nhỏ có kích thước là 4 MB (4096 kB) hay nhỏ hơn nữa. Khi máy vi tính nhận được các mảnh này nó sẽ dùng giải thuật băm để kiểm tra xem mảnh nó tải về có bị lỗi hay không
Khi máy vi tính kết nối vào quần thể, các máy vi tính sẽ bắt đầu sẻ chia tệp với nhau. Các máy vi tính sẽ sẻ chia các mảnh với nhau thay vì sẻ chia trực tiếp với máy gieo hạt, vì vậy số lượng máy trong quần thể sẻ chia theo giao thức BitTorrent có thể phát triển rất nhanh. Vì nguyên lý hoạt động của giao thức rất chặt chẽ nên các máy tự chọn máy ngang hàng có kết nối tốt nhất để tải về các mảnh nó cần. Một điểm mới đột phá của giao thức BitTorrent so với các giao thức cùng đẳng trước đó là nguyên lý “mảnh hiếm”. Theo giao thức BitTorrent máy khách luôn luôn yêu các mảnh hiếm nhất, mảnh này ít máy vi tính trong quần thể có nhất. Với nguyên lý yêu cầu mảnh hiếm nhất giao thức BitTorrent làm giảm tải của các máy khách trong chuyện đáp ứng các yêu cầu gửi đến nó, và bất còn hiện tượng nút cổ chai.
Giao thức BitTorrent có một nguyên lý là “tín nhiệm mở” làm ra (tạo) nên “nhóm máy ưa thích”. Máy ưa thích là một tập các máy ngang hàng trong quần thể cung cấp băng thông tải lên lớn cho các máy khách có yêu cầu tải về. Tín nhiệm mở cho phép các chương trình BitTorrent kiểm tra định kỳ xem máy nào trong quần thể nên lựa chọn để tải về. Nếu một máy ngang hàng ngoài nhóm ưu thích có băng thông phục vụ các máy khác trong quần thể tốt hơn một máy trong nhóm ưa thích thì nó đẩy máy phục vụ kém hơn ra khỏi nhóm ưa thích và thay thế vào vị trí đó. Nguyên lý này làm cho các máy khách luôn luôn tải về từ nhóm máy ngang hàng phục vụ tốt nhất.
Giới hạn
Cần chú ý là giao thức BitTorrent bất giúp người dùng giấu tên. Bởi vì máy theo dõi duy trì một danh sách các tệp đang được sẻ chia, cùng thời nó cũng chứa danh sách đất chỉ IP của các máy vi tính đang tải tệp, và danh sách các tệp vừa được tải trước đó. Dựa vào giao thức BitTorrent còn biết chắc chắn đất chỉ của các máy ngang hàng trong quần thể, và tất nhiên là các máy ngang hàng có thể bị tấn công.
Nhược điểm của giao thức BitTorrent là ít khuyến khích các máy ngang hàng trở thành máy gieo hạt sau khi vừa tải về xong tệp. Hệ quả là các máy gieo hạt sẽ biến mất và các máy trong quần thể cũng biến mất dần, nghĩa là tệp torrent càng cũ thì xác suất để tải tệp thành công càng thấp. BitTorrent có ưu thế trong môi trường băng thông, đối với người dùng Internet anchorage số sử dụng giao thức BitTorrent sẽ bất hiệu quả, vì kết nối anchorage số hay bị đứt kết nối và tốc độ tải bất cao.
Thuật ngữ
availability Là số lượng bản sao trả chỉnh của tệp hiện có ở các máy ngang hàng. Mỗi máy gieo hạt cộng thêm 1 vào số này. Nếu máy ngang hàng có một phần của tệp sẻ chia mà các máy hạt mầm khác bất có thì cộng phần phân số này vào chỉ số hiệu lực (ví dụ: máy ngang hàng tải về 65,3% tệp thì cộng 0,653 vào chỉ số hiệu lực, khi có 2 máy ngang hàng có 50% của tệp cần tải về như nhau và có một máy gieo hạt thì chỉ số hiệu lực là 1,5).
choked Diễn tả máy ngang hàng đang tải lên làm nghẹt đường truyền dữ liệu đến của các máy ngang hàng khác. Tình trạng này do hai nguyên nhân sau:Máy ngang hàng là máy gieo hạt, trong trường hợp này nó bất muốn nhận thêm bất kỳ mảnh dữ liệu nào từ các máy ngang hàng khác.
Máy ngang hàng đang tải lên vừa đạt đến giới hạn băng thông tải lên.
interested Diễn tả máy ngang hàng cần tải về mảnh dữ liệu nó thiếu từ máy ngang hàng khác.
leech Diễn tả một máy ngang hàng có tỉ lệ sẻ chia nhỏ, tải về nhiều hơn tải lên. Hầu hết các máy ngang hàng gian lận dùng kết nối Interet bất đối xứng, các máy ngang hàng này bất sẻ chia tệp sau khi vừa tải về tệp xong. Và có một vài máy ngang hàng bất muốn cho tải lên dữ liệu bằng cách chỉnh giới hạn tải lên của chương trình BitTorrent.
peer associate là máy sử dụng chương trình BitTorrent kết nối Internet và tải dữ liệu. Thường máy ngang hàng diễn tả máy chưa có đủ tệp trả chỉnh. Cần lưu ý là ‘peer’ chỉ bất kỳ máy nào trong quần thể liên quan đến tệp torrent bao gồm cả máy gian lận, máy gieo hạt.
scrape Xảy ra khi máy ngang hàng gửi máytheo dõi (tracker) để lấy thông tin về tình trạng của tệp .torrent
seed Máy gieo hạt là máy ngang hàng có bản sao của tệp và đang tải lên tệp. Càng nhiều máy gieo hạt thì xác suất tải về tệp thành công càng cao và thời (gian) gian tải về càng nhanh.
snubbed Máy trạm bị gắn cờ có giá trị snubbed khi quá thời (gian) gian 60s mà các máy ngang hàng khác bất tải về được dữ liệu từ nó.
superseed Nếu máy trạm lần đầu tiên tải lên tệp thì nó có thể tốn rất nhiều thời (gian) gian vì gửi đi gửi lại một mảnh dữ liệu như nhau cho các máy trạm khác nhau kết nối với nó. Để ngăn ngừa trường hợp này, các chương trình BitTorrent có tiềm năng hỗ trợ chức năng siêu tải lên, khi đó chương trình BitTorrent sẽ cố gắng chỉ tải lên một lần duy nhất các mãnh dữ liệu, nó chỉ tải lên các mãnh dữ liệu trước đây chưa bao giờ gửi đi phân phối cho các máy ngang hàng khác nhau trong mạng.
swarm Tập hợp tất cả máy ngang hàng và máy gieo hạt có nhu cầu một tệp.
torrent Chỉ tệp .torrent hay tất cả các tệp miêu tả bởi nó. Tệp torrent chứa tất cả các tệp có thể tải về từ nó, gồm tên, kích thước tệp mà giá trị kiểm checksums của tất cả các mảnh dữ liệu, đất chỉ của máy chủ theo dõi vị trí của các máy trạm giữa các máy trong tập hợp máy trạm.
tracker Máy theo dõi là một máy ngang hàng ghi lại nhật ký máy nào là máy gieo hạt, máy ngang hàng. Các máy ngang hàng báo cáo thông tin cho máy theo dõi định kỳ và nhận lấy thông tin về các máy ngang hàng mà nó có thể kết nối tới để tải về dữ liệu nó cần và tải lên dữ liệu nó có mà các máy khác yêu cầu. Máy theo dõi bất chuyển dữ liệu giữa các máy và bất có bản sao của tệp.
(