I was just downloading a new distro of linux using uTorrent, and started to wonder how uTorrent (and other bittorrents) send files to eachother through NAT routers? They obviously use the trackers to get introduced, but how do they pass info to eachother?
Is there a whitepaper on this? I couldn't find one :/
Thanks
相关问题
- Keeping the downloaded torrent in memory rather th
- Accessing Jenkins on Mac OS X from another machine
- python zeroconf show IPv4 addresses
- Securing outbound traffic rule from EC2 instances
- Need clarification RouterModule.forRoot([ ABOUT_RO
相关文章
- Routing to sub routing module without lazy loading
- jasmine angular 4 unit test router.url
- @angular/router 3.0.0-alpha.3: How to migrate OnAc
- Universal local network name resolution method wit
- React Router - Stay at the same page after refresh
- How to do NAT with PHP sockets
- How does a peer know another peer is a seed?
- angular2 using router.subscribe to watch url chang
Torrent clients work on the basis of what are known as Distributed Hash Tables. They start off with a set of known roots, and branch out looking for other, connected nodes (i.e., neighbours). Establish connections to them, and keep this up, up to a set limit. Since the client is initiating the connection, all the remote has to do is feed the data back, and you get it through the NAT just fine. It's how network traffic works.
Most of the time, they don't. I have a restricted network, and every time I run my torrent program it warns me that some of the ports/functionality required is not available to me.
If one party has a restricted network and another has an open network, the restricted client will always connect to the open client. If you have two restricted clients they will not be able to connect to each other. The reason it works at all is that most (enough) of the people on the torrent network do have some kind of port forwarding or UPNP (universal plug and play) to facilitate this.