Seminar Report
Seminar Report
Seminar Report
Seminar Report
ON
BitTorrent
Submitted in partial fulfillment of the Requirements for the award of the degree of
Praveen. C .Menon
Submitted By
1. INTRODUCTION
1.1 Overview
BitTorrent is a peer-to-peer file sharing protocol used to distribute large amounts of data. BitTorrent is one of the most common protocols for transferring large files. Its main usage is for the transfer of large sized files. It makes transfer of such files easier by implementing a different approach. A user can obtain multiple files simultaneously without any considerable loss of the transfer rate. It is said to be a lot better than the conventional file transfer methods because of a different principle that is followed by this protocol. It also evens out the way a file is shared by allowing a user not just to obtain it but also to share it with others. This is what has made a big difference between this and the conventional file transfer methods. It makes a user to share the file he is obtaining so that the other users who are trying to obtain the same file would find it easier and also in turn making these users to involve themselves in the file sharing process. Thus the larger the number of users the more is the demand and more easily a file can be transferred between them. BitTorrent protocol has been built on a technology which makes it possible to distribute large amounts of data without the need of a high capacity server, and expensive bandwidth. This is the most striking feature of this file transfer protocol. The transferring of files will never depend on a single source which is supposed the original copy of the file but instead the load will be distributed across a number of such sources. Here not just the sources are responsible for file transfer but also the clients or users who want to obtain the file are involved in this process. This makes the load get distributed evenly across the users and thus making the main source partially free from this process which will reduce the network traffic imposed on it. Because of this, BitTorrent has become one of the most popular file transfer mechanisms in todays world. Though the mechanism itself is not as simple as an ordinary file transfer protocol, it has gained its popularity because of the sharing policy that it imposes on its users. This fact is quite obvious, since the recent surveys made by various organizations show that 35% of the overall internet traffic is because of BitTorrent. This shows that the amount of files that are being transferred and shared by users through BitTorrent is very huge .
1.2 History
BitTorrent Protocol BitTorrent was created by a programmer named Bram Cohen. After inventing this new technology he said, \"I decided I finally wanted to work on a project that people would actually use, would actually work and would actually be fun\". Before this was invented, there were other techniques for file sharing but they were not utilizing the bandwidth effectively. The bandwidth had become a bottleneck in such methods. Even other peer to peer file sharing systems like Napster and Kazaa had the capability of sharing files by making the users involve in the sharing process, but they required only a subset of users to share the files not all. This meant that most of the users can simply download the files without being needed to upload. So this again put a lot of network load on the original sources and on small number of users. This led to inefficient usage of bandwidth of the remaining users. This was the main intention behind Cohens invention, i.e., to make the maximum utilization of all the users bandwidth who are involved in the sharing of files. By doing so, every person who wants to download a file had to contribute towards the uploading process also. This new and novel concept of Cohen gave birth to a new peer to peer file sharing protocol called BitTorrent. Cohen invented this protocol in April 2001. The first usable version of BitTorrent appeared in October 2002, but the system needed a lot of fine-tuning. BitTorrent really started to take off in early 2003 when it was used to distribute a new version of Linux and fans of Japanese anime started relying on it to share cartoons. The most important part of this protocol that matters a lot about this is that it makes it possible for people with limited bandwidth to supply very popular files. This means that if you are a small software developer you can put up a package, and if it turns out that millions of people want it, they can get it from each other in an automated way. Thus the bandwidth which used to be a bottleneck in previous systems no longer poses a problem.
end user connects to a server provided by his or her ISP, resulting in further bandwidth savings. Usenet is also one of the more anonymous forms of file sharing, and it too is often used for illicit files of almost any nature. Due to the nature of NNTP, a file's popularity has little to do with its availability and hence downloads from Usenet tend to be quite fast regardless of content. The downsides of this method include a set of rules and procedures, and require a certain amount of effort and understanding from the user. Patience is often required to get a complete file due to the nature of splitting big files into a huge number of smaller posts. Finally, access to Usenet often must be purchased due to the extremely high volume of messages in the binary groups. BitTorrent is closest to Usenet. It is best suited to newer files, of which a number of people have interest in. Obscure or older files tend to not be available. Perhaps as the software matures a more suitable means of keeping torrents seeded will emerge, but currently the client is quite resource-intensive, making it cumbersome to share a number of files. BitTorrent also deals well with files that are in high demand, especially compared to the other methods.
In BitTorrent, the data to be shared is divided into many equal-sized portions called pieces. Each piece is further sub-divided into equalsized sub-pieces called blocks. All clients interested in sharing this data are grouped into a swarm, each of which is managed by a central entity called the tracker. BitTorrent has revolutionized the way files are shared between people. It does not require a user to download a file completely from a single server. Instead a file can be downloaded from many such users who are indeed downloading the same file. A user who has the complete file, called the seed will initiate the download by transferring pieces of file to the users. Once a user has some considerable number of such pieces of a file then even he can start sharing them with other users who are yet to receive those pieces. This concept enables a client not to depend on a server completely and also it reduces overall load on the server.
Fig 2.2 : BitTorrent File Trancision Each client independently sends a file, called a torrent, that contains the location of the tracker along with a hash of each piece. Clients keep each other updated on the status of their download. Clients download blocks from other (randomly chosen) clients who claim they have the corresponding data. Accordingly, clients also send data that they have previously downloaded to other clients. Once a client receives all the blocks for a given piece, he can verify the hash of that piece against the provided hash in the torrent. Thus once a client has downloaded and verified all pieces, he can be confident that he has the complete data. Both BitTorrent and DAP download files from multiple sources. Also the files are divided into pieces in both approaches. But BitTorrent has many such features that DAP doesnt, which has made it the most popular one. In BitTorrent the users participate actively in sharing files along with servers. This is the uniqueness of this protocol. Also this needs an implementation of a dedicated server called tracker to handle the peers connected in the network. The file transfer in DAP takes place through the traditional HTTP or FTP protocol which means that the transfer rate will always be limited by the servers bandwidth. If these servers are flooded with requests then the breakdown and the transaction will terminate. This is not the case in BitTorrent since the whole process is not depending on servers alone. The load is distributed across the network between peers and servers. This makes BitTorrent far better than its competing peers like DAP and others.
2.WORKING OF BITTORRENT
As previously explained, BitTorrents design makes it extremely efficient in the sharing of large data files among interested peers. Looking under the hood, BitTorrent is a protocol with some complexity where modeling is useful to gain a better understanding of its performance. BitTorrent scales well and is a superior method for transferring and disseminating files between interested peers while limiting free riding (peers who download but do not upload) between those same peers. BitTorrents is based on a tit for tat reciprocity agreement between users that ultimately results in pareto efficiency. Pareto efficiency is an important economic concept that maximizes resource allocation among peers to their mutual advantageBitTorrent Protocol Pareto efficiency is the crown jewel of BitTorrent and is the driving force behind the protocols popularity and success. Cohens vision of peers simultaneously helping each other by uploading and downloading has been realized by the BitTorrent system.
Web server
Tracker
1 Peer2 5 6
Peer1
5 6
Client
Fig 3.1: A Typical BitTorrent System The protocol shares data through what are known as torrents. For a torrent to be alive or active it must have several key components to function. These components include a tracker server, a .torrent file, a web server where
the .torrent file is stored and a complete copy of the file being exchanged. Each of these components is described in the following paragraphs. The file being exchanged is the essence of the torrent and a complete copy is referred to as a seed. A seed is a peer in the BitTorrent network willing to share a file with other peers in the network. Why seed owners choose to share their files is debatable, as the BitTorrent protocol does not reward seed behavior. In fact, some researchers believe the protocol lacks any incentive mechanism for encouraging seeds to remain in torrents. Some argue that the lack of incentive in the protocol is a fundamental design flaw that leads to the punishment of seeds. Peers lacking the file and seeking it from seeds are called leechers. While seeds only upload to leechers, leechers may both download from seeds and upload to other leechers. BitTorrents protocol is designed so leeching peers seek each other out for data transfer in a process known as optimistic unchoking. Together seeds and leechers engaged in file transfer are referred to as a swarm. A swarm is coordinated by a tracker server serving the particular torrent and interested peers find the tracker via metadata known as a .torrent file. Since l BitTorrent has no built in search functionality, .torrent files are usually located via HTTP through search engines or trackers. The first step in the BitTorrent exchange occurs when a peer downloads a .torrent file from a server. The role of .torrent files is to provide the metadata that allows the protocol to function; .torrent files can be viewed as surrogates for the files being shared. These .torrent files contain key pieces of data to function correctly including file length, assigned name, hashing information about the file and the URL of the tracker coordinating the torrent activity. Torrent files can be created using a program such as MakeTorrent, another open source tool available under the free software model. When a .torrent file is opened by the peers client software, the peer then connects to the tracker server responsible for coordinating activity for that specific torrent. The tracker and client communicate by a protocol layered on top of HTTP and the trackers key role is to coordinate peers seeking the same file for Cohen envisioned The trackers responsibilities are strictly limited to helping peers find each other. In reality the trackers role is a bit more complex as many trackers collect data about peers engaged in a swarm. Additionally, some of the newer tracker software being released has integrated the functions of the tracker and .torrent server. Leechers and seeds are coordinated by the tracker server and the peers periodically update the tracker on their status allowing the tracker to have a global view of the system. The data monitored by the tracker can include peer IP addresses, amount of data uploaded/downloaded for specific peers, data transfer rates among peers, the percentage of the total file downloaded, length of time connected to the tracker, and the ratio of sharing among peers. Usually a tracker coordinates multiple torrents and the most popular trackers are busy coordinating thousands of swarms simultaneously It should be noted that .torrent files are not the actual file being shared; rather .torrent files are the metadata information which allow which trackers and peers to coordinate their activities. As previously mentioned, the complete
file is actually stored on peer seed nodes and not the tracker server. Since .torrent files are small and require little space to store, one server can easily host thousands of .torrent files without prohibitive server or bandwidth requirements. There is some issue with bandwidth usage to host a tracker, however, especially if the tracker becomes popular and begins to see heavy usage. Regardless, the trackers bandwidth requirements are much less than hosting the complete files in a traditional client-server model such as one would encounter with an FTP site while trackers and torrent files serve as mechanisms to assist the BitTorrent protocol, the process of actually transferring data is handled by the peers engaged in the swarm. Cohens vision of tit for tat is the sole incentive measure he saw necessary for the protocols success. Peers seek tit for tat behavior from others and discourage free riding by a choke/unchoke policy. This choke policy uses a process known as optimistic unchoking to constantly seek other swarm peers who may have more beneficial connections to offer an interested peer. There has been some research of the tit for tat algorithm by modeling rational users whose behavior is then studied. This work defined rational users as those peer nodes manipulating their client software beyond default settings. The fact that many newer BitTorrent clients allow for custom tweaking of specific upload or download speed indicates that perhaps the original tit for tat coding was too good, and thus detrimental to other peer node functions such as normal HTTP traffic. Some BitTorrent FAQs recommend limiting uploads to approximately 80% of known capacity and personal tests indicate this strategy does benefit download speeds. The final important aspect of the BitTorrent protocols architecture is its use of a rarest piece first algorithm when a peer begins a file download. The rarest first algorithm has as its goal the uniform distribution of data across peers, also known as the endgame mode. A rarest first policy requires a seed to upload new file chunks (those not yet uploaded to a swarm) to the newest peer connecting to a torrent. This policy encourages distribution of the file further across peer nodes.. The rarest first algorithm is an interesting aspect of BitTorrent that when combined with optimistic unchoking may explain why the protocol has achieved such success
4. TERMINOLOGY
These are the common terms that one would come across while making a typical BitTorrent file transfer. Torrent: this refers to the small metadata file you receive from the web server (the one that ends in .torrent.) Metadata here means that the file contains
Peer: Ainformation about the data you want to download, not the data itself. peer is another computer on the internet that you connect to and transfer data.
Leeches: They are similarGenerally a peer does not have the complete file. to peers in that they wont have the complete file. But the main difference between the two is that a leech will not upload once the file is downloaded. Seed: A computer that has a complete copy of a certain torrent. Once a client downloads a file completely, he can continue to upload the file which is called as seeding. This is a good practice in the BitTorrent world since it allows other users to have the file easily. Reseed: When there are zero seeds for a given torrent, then eventually all the peers will get stuck with an incomplete file, since no one in the swarm has the missing pieces. When this happens, a seed must connect to the swarm so that those missing pieces can be transferred. This is called reseeding Swarm: The group of machines that are collectively Tracker: A server on the Internet that actsconnected for a particular file. to coordinate the action of BitTorrent clients. The clients are in constant Share ratio:touch with this server to know about the peers in the swarm. This is ratio of amount of a file downloaded to that of uploaded. A ratio of 1 means that one has uploaded the same amount of a file that has been downloaded. Distributed copies: Sometimes the peers in a swarm will collectively have a Choked : It is acomplete file. Such copies are called distributed copies. Such copies are called distributed copies. Interested: This is the state of a downloader which suggests that the other end has some pieces that the downloader wants. Then the downloader is said to be interested in the other end. Snubbed: If the client has not received anything after a certain period, it marks a connection as snubbed, in that the peer on the other end has chosen not to send in a while. Optimistic unchoking: Periodically, the client shakes upto send in a while. the list of uploaders and tries sending on different connections that were previously choked, and choking the connections it was just using. This is called optimistic unchoking
5. ARCHITECTURE OF BITTORRENT
The BitTorrent protocol can be split into the following five main components:
Metainfo File - a file which contains all details necessary for the protocol to operate Tracker - A server which helps manage the BitTorrent protocol. Peers - Users exchanging data via the BitTorrent protocol. Client - The program which sits on abeing transferred across the protocol.
Peers computer and implements the protocol. Peers use TCP (Transport Control Protocol) to communicate and send data. This protocol is preferable over other protocols such as UDP (User Datagram Protocol) because TCP guarantees reliable and in-order delivery of data from sender to receiver. UDP cannot give such guarantees, and data can become scrambled, or lost all together. The tracker allows peers to query which peers have what data, and allows them to begin communication. Peers communicate with the tracker via the plain text via HTTP (Hypertext Transfer Protocol) The following diagram illustrates how peers interact with each other, and also communicate with a central tracker.
info: A dictionary which describes the file(s) of the torrent. Either for the
single file, or the directory structure for more files. Hashes for every data piece, in SHA 1 format are stored here. announce: The announce URL of the tracker as a string
announce-list: Used to list backup trackers creation date: The creation time of the torrent by way of UNIX time
stamp (integer seconds since 1-Jan-1970 00:00:00 UTC) comment: Any comments by the author
created by: Name and Version of programme used to create the metainfo
file
Instead of transmitting the keys in plan text format, the keys contained in the metainfo file are encoded before they are sent. Encoding is done using bittorrent specific method known as 'bencoding'.
5.1.1 Bencoding
Bencoding is used by bittorrent to send loosely structured data between the BitTorrent client and a tracker. Bencoding supports byte strings, integers, lists and dictionaries. Bencoding uses the beginning delimiters 'i' / 'l' / 'd' for integers, lists and dictionaries respectively. Ending delimiters are always 'e'. Delimiters are not used for byte strings. Bencoding Structure:
Byte Strings :<string length in base ten ASCII> : <string data> Integers: i<base ten ASCII> Lists: l<bencoded values> Dictionaries: d<bencoded string><bencoded element>
Minus integers are allowed, but prefixing the number with a zero is not permitted. However '0' is allowed. Examples of bencoding
5.2 Tracker
A tracker is used to manage users participating in a torrent (know as peers). It stored statistics about the torrent, but its main role is allow peers to 'find each other' and start communication, i.e. to find peers with the data they require. Peers know nothing of each other until a response is received from the tracker. Whenever a peer contacts the tracker, it reports which pieces of a file they have. That way, when another peer queries the tracker, it can provide a random list of peers who are participating in the torrent, and have the required piece.
A tracker is a HTTP/HTTPS service and typically works on port 6969. The address of the tracker managing a torrent is specified in the metainfo file, a single tracker can manage multiple torrents. Multiple trackers can also be specified, as backups, which are handled by the BitTorrent client running on the users computer. BitTorrent clients communicate with the tracker using HTTP GET requests, which is a standard CGI method. This consists of appending a \"?\" to the URL, and separating parameters with a \"&\". The parameters accepted by the tracker are:
info_hash: 20-byte SHA1 hash of the info key from the metainfo
file.
peer_id: 20-byte string used as a unique ID for the client. port: The port number the client is listed on. uploaded: The total amount uploaded since the client sent the
'started' event to the tracker in base ten ASCII. downloaded: The total amount downloaded since the client sent the 'started' event to the tracker in base ten ASCII. left: The number of bytes the client till has to download, in base ten ASCII. compact: Indicates that the client accepts compacted responses. The peer list can then be replaced by a 6 bytes per peer. The first 4 bytes are the host, and the last 2 bytes are port. event: If specified, must be one of the following: started, stopped, completed. ip: (optional) The IP address of the client machine, in dotted format. numwant: (optional) The number of peers the client wishes to receive from the tracker. key: (optional) Allows a client to identify itself if their IP address changes. trackerid: (optional) If previous announce contained a tracker id, it should be set here. The tracker then responds with a \"text/plain\" document with the following keys: failure message: If present, then no other keys are included. The value is a human readable error message as to why the request failed. warning message: Similar to failure message, but response still gets processed. interval: The number of seconds a client should wait between sending regular requests to the tracker. min interval: Minimum announce interval. tracker id: A string that the client should send back with its next announce. complete: Number of peers with the complete file. incomplete: number of non-seeding peers (leechers) peers: A list of dictionaries including: peer id, IP and ports of all the peers.
5.2.1 Scraping
Scraping is the process of querying the state of a given torrent (or all torrents) that the tracker is managing. The result is known as a \"scrape page\". To get the scrape, you must start with the announce URL, find the last '/' and if the text immediately following the '/' is 'announce', then this can be substituted for 'scrape' to find the scrape page.
5.3 Peers
Peers are other users participating in a torrent, and have the partial file, or the complete file (known as a seed). Pieces are requested from peers, but are not guaranteed to be sent, depending on the status of the peer. BitTorrent uses TCP (Transmission Control Protocol) ports 6881-6889 to send messages and data between peers, and unlike other protocols, does not use UDP (User Datagram Protocol)
peers connect, rarest first will the some load off of the tracker, as peers begin to download from one another. Eventually the original seed will disappear from a torrent. This could be because of cost reasons, or most commonly because of bandwidth issues. Losing a seed runs the risk of pieces being lost if no current downloaders have them. Rarest first works to prevent the loss of pieces by replicating the pieces most at risk as quickly as possible. If the original seed goes before at least one other peer has the complete file, then no one will reach completion, unless a seed re- connects.
5.3.6 Choking
When a peer receives a request for a piece from another peer, it can opt to refuse to transmit that piece. If this happens, the peer is said to be choked. This can be done for different reasons, but the most common is that by default, a client will only maintain a default number of simultaneous uploads (max_uploads) All further requests to the client will be marked as choked. Usually the default for max_uploads is 4
5.3.9 Handshaking
Handshaking is performed as follows: The handshake starts with character 19 (base 10) followed by the string 'BitTorrent Protocol'. A 20 byte SHA1 hash of the bencoded info value from the metainfo is then sent. If this does not match between peers the connection is closed. A 20 byte peer id is sent which is then used in tracker requests and included in peer requests. If the peer id does not match the one expected, the connection is closed.
5.4 Data
BitTorrent is very versatile, and can be used to transfer a single file, of multiple files of any type, contained within any number of directories. File sizes can vary hugely, from kilobytes to hundreds of gigabytes.
P1
P2
P2
P2
P2
P2
A metainfo file must be opened by the client to start partaking in a torrent. Once the file is read, the necessary data is extracted, and a socket must be opened to contact the tracker. BitTorrent clients use TCP ports 6881-6999. To find an available port, the client will start at the lowest port, and work upwards until it finds one it can use. This means the client will only use one port, and opening another BitTorrent client will use another port. A client can handle multiple torrents running concurrently. Clients come in many flavours, and can range from basic applications with few features to very advanced, customisable ones. For example, some advanced features are metainfo file wizards and inbuilt trackers. These additional features means different clients behave very differently, and may use multiple ports, depending on the number of processes it is running. As all applications implement the same protocol, there is no incompatibility issues, however because of various tweaks and improvements between clients, a peer may experience better performance from peers running the same client.
request are: calculated from whatever value the info key maps to in the metainfo file. peer_id: A 20 character long id of the downloading client, random generated at start of every download. There is no formal definition on how to generate this id, but some client applications have adapted some semiformal standards on how
ip: This is an optional variable, giving the IP addressto generate this id. of
the client. This can usually be extracted from the TCP connection, but this field is useful if the client and tracker are on the same machine, or behind the same NAT gateway. In both cases, the tracker then might publish an unroutable IP port: The port number that the client is listening on.address to the client. uploaded: The amount of data uploadedThis is usually in the range 68816889. so far by the client. There is no official definition on the unit, but generally left: How much the user has left for the download to bebytes are used event: An optional variable, corresponding to one of fourcomplete, in bytes. possibilities: started: Sent when the client starts the download stopped: Sent when the client stops downloading completed: Sent when the download is complete. If the download is complete at start up, this message should not be sent. empty: Has the same effect as if the event key is nonexistent. In either case, the message in question is one of the messages sent with regular intervals
Handshake message
The handshake message consists A single byte, containing the decimal value 19. This is theof five parts: A character stringlength of the character string following this byte. A character string BitTorrent protocol, which describes the protocol. Newer protocols should Eightfollow this convention to facilitate easy identification of protocols. reserved bytes for further extension of the protocol. All bytes are zero in A 20 byte SHA1 hash of the value mapping to the infocurrent implementations All connections start out as not interested and choking for both peers. Clients should keep the am_interested value updated continuously, and report changes to the other peer. The messages sent after the handshaking are structured as: [message length as an integer] [single byte describing message type] [payload] Keep
alive messages are sent with regular intervals, and they are simply a message with length 0, and no type or payload. Type 0, 1, 2, 3 are choke, unchoke, interested and not interested respectively. All of them have length 1 and no payload. These messages simply describe changes in state. Type 4 is a have. This message has length = 5, and a payload that is a single integer, giving the integer index of which piece of the file the peer has successfully downloaded and verified. Type 5 is bitfield. This message is only sent directly after handshake. It contains a bitfield representation of which pieces the peer has. The payload is of variable length, and consists of a bitmap, where byte 0 corresponds to piece 0-7, byte 1 to piece 8-15 etc. A bit set to 1 represents having the piece. Peers that have no pieces can neglect to send this message. Type 6 is a request. The payload consists of three integers, piece index, begin and length. The piece index decides within which piece the client wants to download, begin gives the byte offset within the piece, and length gives the number of bytes the client wants to download. Length is usually a power of two. Type 7 is a block. This message follows a request. The payload contains piece index, length and the data itself that was requested. Type 8 is cancel. This message has the same payload as request messages, and it is used to cancel requests made. Peers should continuously update their interested status to neighbors, so that clients know which peers will begin downloading when unchoked.
6. VALNERABILITY OF BITTORRENT
6.1Attacks on BitTorrent
As we have seen so far, BitTorrent is one of most favoured file transfer protocol in todays world. But it has been exposed to various attacks in the recent past due to the vulnerabilities that are being exploited by the hacker community. Here are some of the attacks that are commonly seen.
6.2 Solutions
Many of the attacks that BitTorrent suffers have been dealt with and some measures have been taken to avoid such attacks. Here are a few solutions to the attacks that were discussed above.
There are broadly two approaches followed to counter this type of attacks. The first method is to encrypt the packets sent by the means of BitTorrent protocol. By doing this, the filters that sniff packets will not be able to detect such packets belonging to BitTorrent protocol. This means that the filters are fooled by the encrypted packets and thus packets can sneak through such filters. Another approach is to make use of tunnels. Tunnels are dedicated paths where the filters are avoided by using VPN software which connects to the unfiltered networks. This results in successfully bypassing the filters and thus the packets are guaranteed to be transmitted across networks.
7. CONCLUSION
BitTorrent pioneered mesh-based file distribution that effectively utilizes all the uplinks of participating nodes. Most followon research used similar distributed and randomized algorithms for peer and piece selection, but with different emphasis or twists. This work takes a different approach to the mesh-based file distribution problem by considering it as a scheduling problem, and strives to derive an optimal schedule that could minimize the total elapsed time. By comparing the total elapsed time of BitTorrent and CSFD in a wide variety of scenarios, we are able to determine how close BitTorrent is to the theoretical optimum. In addition, the study of applicability of BitTorrent to real-time media streaming applications, shows that with minor modifications, BitTorrent can serve as an effective media streaming tool as well. BitTorrents application in this information sharing age is almost priceless. However, it is still not perfected as it is still prone to malicious attacks and acts of misuse. Moreover, the lifespan of each torrent is still not satisfactory, which means that the length of file distribution can only survive for a limited period of time. Thus, further analysis and a more thorough study in the protocol will enable one to discover more ways to improve it.
8. REFERENCES
1. BitTorrent Inc. (2006) http://www.bittorrent.com 2. BitTorrent.Org (2006) http://www.bittorrent.org/protocol.htm 3. Cohen, Bram (2003) Incentives Build Robustness in BitTorrent, May 22 2003 http://www.bitconjurer.org/BitTorrent/bittorrentecon.pdf 4. Cachelogic, BitTorrent bandwidth usage http://www.cachelogic.com/research/2005_slide06.php 5. Information on BitTorrent Protocol en.wikipedia.org/wiki/BitTorrent_(protocol) 6. BitTorrent FAQ: http://btfaq.com 7. BitTorrent Specifications http://wiki.theory.org/BitTorrentSpecification 8. Other Information http://www.dessent.net/btfaq/#compare