According to the specification of Bittorrent tracker (https://wiki.theory.org/BitTorrentSpecification) peer is identified by their peer_id and ip. peer_id is passed to tracker in announce request, ip - from request headers, but optionally can be passed as a query parameter. How tracker knows that this request was actually sent from this peer (not a fraud) without any key?
How identification of a peer is done in Bittorrent tracker
498 Views Asked by Oleksii Leonov At
1
There are 1 best solutions below
Related Questions in BITTORRENT
- Is it possible to get hashes of individual 16KB blocks from a v2 torrent file? v1?
- Send the piece request to Udp peer using UDP Tracker Protocol
- Solve the packing error on peer handshake protocol
- Solve the socket error 10060 ,during making a peer handshake
- Problem in debugging custom python libtorrent client - How to add DHT router
- Unhandled Exception during Handshake in BitTorrent protocol implementation
- Error connecting to BitTorrent tracker: Requested download is not authorized for use with this tracker
- How can I index the bittorrent DHT properly for infohashes?
- 'WinError: The remote computer refused the network connection' is caused from BitTorrent project
- npm: cant import bencode module
- Torrent Trackers return port 0 in for peer in peer list
- Sequential downloading and playback of torrents on the server
- Change category of torrent using qBittorrent web API how?
- Trouble with URL encoding torrent's infoHash using JS
- How to download torrent specific files in python code?
Related Questions in TRACKER
- Re-Identification while using YOLOv8 + ByteTrack on real time RTSP stream
- How to change the person my code was following/tracking by clicking or selecting another person by mouse? Rest details of project below
- cv2 has no attribute legacy
- Motion Detection by Yolo and Tracker's data
- module 'cv2' has no attribute 'TrackerCSRT_create'
- how can i know or set id for any HTTP request in Laravel
- Torrent Trackers return port 0 in for peer in peer list
- How to get rid of reinitialization of Matlab trackerGNN for multiple scenarios?
- Selection of specific object by selectROI from the main image while tracking process is being held on subtracted background
- Why am I getting cv2.error: Unknown C++ exception from OpenCV code?
- Unable to use the inbuilt _registerListenersForTrackedConditions() method for tracked conditions and related HTML listeners
- Tracker Algorithms in Open cv install
- Idle Time is not being calculated
- Trying to make crosshair into mouse with Pygame
- gsutil command error - [No space left on device. This can happen if gsutil is configured to save tracker files to an unwritable directory]
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Note that the official specification lists that parameter as optional, meaning that it is not part of the identity of the client. Rather it should be considered as a hint to the tracker that the tracker should hand out that IP to other clients instead of the source of the announce connection. This hint should be ignored if the tracker doesn't trust the client.
Trust can be established if a client authenticates itself to the tracker (e.g. via HTTP basic auth or a secret token in the announce URL).
Instead of trusting the client the tracker could also verify it, e.g. by opening a bittorrent connect to the IP and port that was announced and then send a bittorrent handshake for the infohash that was announced to check if the remote can accept bittorrent connections. That also has the advantage of rejecting announces that aren't reachable due to firewalls or NAT limitations.
For open, public trackers neither approach is practical, so they usually ignore the
&ip=...parameter. Trackers deployed in more restricted environments do make use of the trust and/or verify approaches.