gnash-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash-dev] Proposal: Bittorrent support for Gnash


From: John Gilmore
Subject: Re: [Gnash-dev] Proposal: Bittorrent support for Gnash
Date: Mon, 17 Mar 2008 19:59:03 -0800

> The biggest difference between TCP
> and BitTorrent is that TCP delivers data in the same order you sent
> it, which is the order in which the user wants it, whereas BitTorrent
> delivers in random order, so you potentially have to wait until the
> very end of reception.

The order in which data is delivered in BitTorrent is determined by
the recipient, not the sender.  Senders notify recipients of what
blocks they have, and the recipients decide which blocks to ask which
senders for.

Of course, the senders may not answer that request quickly, and there's
a lot of tuning involved in making the whole thing perform well.  But a
recipient is free to ask for block #0, block #1, block #2, etc.

BitTorrent Inc. has defined extensions to the protocol to support
streaming.  Basically this involves requesting blocks sequentially.
This is not so terrible, since if most recipients are requesting them
in sequential order, they will then be able to upload those same
early-numbered blocks to the next guy.

  "BitTorrent DNA provides fast downloads for large files like
  feature-length movies, games, software programs, and makes it
  possible to easily stream broadcast-quality video."

  
http://www.bittorrent.com/about/press/bittorrent2019s-delivery-network-accelerator-dna-service-improves-the-online-experience-for-streaming-video-downloadable-software-and-video-games

  http://www.bittorrent.com/dna/streamingservices.html
  http://www.bittorrent.com/dna/technology.html
  http://en.wikipedia.org/wiki/BitTorrent_DNA

They have not released protocol specs for this (they took the entire
BitTorrent software proprietary, and are doing the same with new
specs).  But it's been somewhat reverse-engineered.  See:

  http://wefixedtheglitch.tumblr.com/post/22786974

  How does the "btdna.exe" work? How does it speed up flash movies?

  This is easy, "btdna.exe" is simply an http proxy for the flash
  wrapper around the movie that you view in your browser. The
  "btdna.exe" process simply get meta data(torrent) from the site
  visited, loads this up and starts a normal BitTorrent transfer
  however the piece picker has been changed so rarest first is not the
  case as this would not work when trying to stream media. Now that
  "btdna.exe" is chunking away just like regular BitTorrent the
  Flash/Flex movie that you see opens an HTPP connection to
  "btdna.exe"'s built in webserver and streams the media from
  localhost or 127.0.0.1.

  What is the webserver running in "btdna.exe" called? 

  00421665 |. 68 58714500 PUSH btdna.00457158 ; ASCII "HTTP/1.1 200 OK
  %s%sServer: BitTorrent_DNA_Proxy/1.0 Connection: close

  Do flash web applications have access to "btdna.exe"?

  Yes in fact they do over a TCP socket. The following code was found
  in "btdna_unpacked.exe": db '?xml version="1.0"? cross-domain-policy
  allow-access-from domain="*" / /cross-domain-policy'db
  '/crossdomain.xml'

  This is a Policy file that determines if a Flash or Flex application
  can access 127.0.0.1:0. The first thing that a Flash/Flex
  application does when attempting to connect to your local machine is
  check for this "crossdomain.xml" policy file, if it exists, is valid
  and allows the domain then the Flash/Flex application running inside
  of your browser can make tcp socket connections to the service, in
  this case "btdna.exe". That is how the Flash/Flex movie gets access
  to the content that "btdna.exe" has downloaded thus far.

The open/public torrent community has also been working on streaming:

  
http://torrentfreak.com/eu-invests-22-million-in-next-generation-bittorrent-client/
  
  "One of the biggest names taking part is the BBC, who will use the
  new BitTorrent client to stream TV programs. ... The main goal is to
  develop an open source, BitTorrent-compatible client that supports
  live streaming."

  http://torrentfreak.com/mininova-launches-music-torrent-streaming-080209/
  http://torrentfreak.com/streaming-music-from-a-torrent-file-080108/
  http://torrentfreak.com/bittorrent-dna-vulnerable-to-remote-hijack-080103/

> Well, but when you're streaming through a TCP connection, you cannot
> guarantee at the beginning that every block will be available by the
> time you're ready to consume it.

You can't guarantee this via UDP, or any other method, on the Internet.
The essence of IP is that there are no guarantees.  Still, most of
the time, it works well enough.

        John




reply via email to

[Prev in Thread] Current Thread [Next in Thread]