[Tìm hiểu]Giao thức tải file BitTorrent
    Các bạn thường tải phần mềm từ download.com?Hay tải nhạc từ cuatui,MP3?Đó là cách tải thong thường,nghĩa là người ta đưa một phần mềm hay một bản nhạc nào đó lên máy chủ rồi từ đó chúng ta lấy về một cách trực tiếp.
    Vấn đề đặt ra ở đây 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à lúc đó máy chủ sẽ quá tải và băng thong không thể đủ.Giống như chỉ có một cuốn sách mà tất cả mọi người đều giành giật để đi photo vậy!
    BitTorrent(BT) ra đời để giải quyết vấn đề đó.Nó là một giao thức tải file trên mạng ngang hàng - Peer to peer(P2P).Thay vì làm như trên,nó sẽ chia cuốn sách ra từng phần nhỏ,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 vài thuật ngữ cơ bản:
1/Peer:Là tất cả máy tính trong quần thể tải file bằng BT,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.
2/Seed:Là máy tính có được đầy đủ file chia sẻ(100%).Máy tính này có vai trò là người có đủ cuốn sách.Seed chỉ upload chứ không download(Có đủ rồi down chi?!!Chỉ chia sẻ tiếp cho người chưa có thôi)
3/Tracker:Là máy tính theo dõi.Nó ghi lại thong tin về các Seed,Peer để cung cấp cho các máy.Nó giống như người chủ cuốn sách vậy.Nghĩa là nó không chứa file mà chỉ quản lý các file mà thôi.
4/Swarm:LÀ quần thể các seed,peer cùng chia sẻ 1 file.
5/Leech:Là từ để chỉ máy “khoái” download hơn là upload.Tức là tỉ lệ up rất nhỏ so với download.
6/Torrent:Là file có đuôi *.torrent,file này chứa thong 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ẻ bạn phải tải file này trước.
7/Phần mềm tải file chia sẻ:Là những phần mềm đặc chủng để tải file dạng này,số lượng các phần mềm này cực kì nhiều.
BT hoạt động như thế nào?
    Ví dụ mình có một file phim hoạt hình Avenger.mp4.Bây giờ nếu muốn chia sẻ nó với cộng đồng trên mạng mình thực hiện các bước sau:
    Mình dung phần mềm để tạo file Avenger.torrent từ *.mp4 .File này có chứa thong tin về A….mp4 và nó cắt Avenger.mp4 ra nhiều mảnh nhỏ.VD bộ phim này 8GB thì mình sẽ cắt nó ra mỗi phần khoảng 400Mb để tải cho nhanh,nó cũng chứa địa chỉ tracker mà mình nhập vào.
    Mình upload file torrent đó lên 1 trang web nào đó(VD bittorrent.com).Kể từ đó mình 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 tôi.
    Những vị khách đầu tiên đã đến,họ phải tải file avenger.torrent về và mở nó lên bằng một Bittorrent Client.Chương trình sẽ đọc thong tin trong file đó và tiến hành việc tải file avenger.mp4.Những người đầu tiên sẽ lấy trực tiếp các mảnh từ máy tôi,người đến sau sẽ yêu cầu các mảnh mà người đến trước chưa có để 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 BT sẽ không ngừng tìm kiếm (thong qua tracker) những peer có mảnh mà họ còn thiếu và những mảnh họ trao đổi cho nhau,nhờ đó giảm bớt gánh nặng cho máy 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 avenger.mp4,BT Client sẽ nối nó lại thành một file hoàn chỉnh.Đồng thời nếu người đó duy trì kết nối,anh ta sẽ trở thành seed.
    Cứ thế quá trình được thực hiện lien tục và từ nhiều file ban đầu đã được nhân bản thành hang trăm,hang vạn,hang nghìn file mà chẳng cần phải upload nó lên server nào.Tất cả đều được truyền đi từ người này đến người khác…