Anatomia sesji torrenta
Klient sieci BitTorrent komunikuje się z trackerem poprzez zwykłą komendę http GET. Poniżej rozpatrujemy poszczególne przypadki, jakie występują pomiędzy trackerem, a klientem.
Podstawowe polecenie klienta:
tracker otrzymuje rozkaz:
GET /announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C%ED%EE%0F& peer_id=S588-----gqQ8TqDeqaY&port=6882&uploaded=0&downloaded=0&left=753690875&event=started
Co oznacza kolejno:
Info_hash |
|
Jest ciągiem znaków (sumą kontrolną) identyfikującym torrent. |
Peer_id |
|
Identyfikuje nazwę klienta, np. człon s588 rozpoznaje klienta Shadow 5.8.8, reszta członu jest generowana losowo. |
Port |
|
Jest portem nasłuchu, umożliwiającym innym peerom łączyć się do tego torrenta. |
Uploaded |
|
Ilość oddanych danych w bajtach. |
Downloaded |
|
Ilość pobranych danych w bajtach. |
Left |
|
Ilość danych brakujących do ukończenia pobierania w bajtach. |
Event |
|
Stan torrenta. |
Należy zauważyć, że klient nie demaskuje tutaj IP użytkownika (chyba, że sam user zmieni ustawienia klienta). Tracker widzi peer_id, nie związane z IP komputera, łączy z właściwymi portami i statystykami, umożliwiając ściąganie i wysyłanie plików, posługując się wyłącznie w/w potokiem danych dołączanym do listy userów korzystających z danego torrenta.
Od tej chwili klient będzie wymieniał dane (ściągał i wysyłał) z trackerem, zmieniając dane w potoku.
Naliczanie statystyk
tracker otrzymuje rozkaz:
GET /announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C%ED%EE%0F& peer_id=S588-----gqQ8TqDeqaY&port=6882&uploaded=67960832&downloaded=40828928& left=715417851&numwant=0
"Numwant" jest zmienną mówiącą, ile nowi peerzy potrzebują jeszcze danych tego torrenta.
Jak możecie zobaczyć, w tym przykładzie użytkownik udostępnił mniej więcej 68MB i ściągnął mniej więcej 40MB. Przez cały czas trwania sesji tracker otrzymuje te dane i modernizuje wszystkie statystyki: tak samo uploadu jak i downloadu, chwilowego i całkowitego. Te dane są wysyłane przez połączone klienty co 15 min, chyba że ustawienia wymuszą inną częstotliwość aktualizacji statystyk.
Kończenie sesji:
tracker otrzymuje rozkaz:
GET /announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C%ED%EE%0F& peer_id=S588-----gqQ8TqDeqaY&port=6882&uploaded=754384896&downloaded=754215163 &left=0&numwant=0&event=completed
Cała sesja jest zakończona "event=completed". W tym momencie
zakończono przesyłanie potoku danych do klienta i torrent został usunięty z twojego profilu na stronie. Jeżeli z jakichkolwiek powodów (tracker down, zerwane połączenie, nieprawidłowy klient...) wystąpią zaburzenia w zamknięciu sesji i tracker nie otrzyma powyższego komunikatu, potok danych (pewna niewielka ilość) nadal będzie naliczany w profilu usera, dopóki tracker nie dokona zakończenia sesji. Komunikat o zakończeniu sesji zostanie wysłany do trackera tylko wtedy, gdy nastąpi prawidłowe zamknięcie klienta. Inaczej tracker będzie nadal załączał klienta do listy pobierających z left=0 (brakuje 0 bajtów), lecz jeśli nie otrzyma komunikatu w określonym czasie (timeout) uzna sesje za zakończoną.
Powyższą sytuację wykorzystano w niektórych klientach do "modyfikacji" statystyk poprzez wymuszanie przerwań wysyłania/ściągania strumienia danych. Jest to nieuczciwe i grozi banem !
|
|