+1 and since we were going to do some of this, we can likely contribute a
developer to pieces of it if needed.

Michael Oliver
CTO/Matrix Intermedia
7391 S. Bullrider Ave.
Tucson, AZ 85747
Office (520)574-1150
Cell (518)378-6154


Juan Carlos Soto said:
> Brad,
>
> This sounds very cool.  +1 for P2P sockets project!
>
> -Juan Carlos.
>
> Brad Neuberg wrote:
>
>> Hi everyone.  I just posted the web site, source code,
>> and two tutorials for the Peer-to-Peer Sockets Project
>> at p2psockets.jxta.org.  I believe this would be a
>> valuable addition to the Jxta community and would like
>> to propose this project.  The source code represents a
>> working, 1.0 beta 1 release, with several pieces of
>> software, such as Jetty and XML-RPC Client and Server
>> libraries, already ported onto this new API.  I have
>> spent the last month and a half working full time on
>> this.  Here are some more details on the project:
>>
>> ------------------------
>>
>> Are you interested in:
>>
>>     * returning the end-to-end principle to the
>> Internet?
>>     * an alternative peer-to-peer domain name system
>> that bypasses ICANN and Verisign, is completely
>> decentralized, and responds to updates much quicker
>> than standard DNS?
>>     * an Internet where everyone can create and
>> consume network services, even if they have a dynamic
>> IP address or no IP address, are behind a Network
>> Address Translation (NAT) device, or blocked by an
>> ISP's firewall?
>>     * a web where every peer can automatically start a
>> web server, host an XML-RPC service, and more and
>> quickly make these available to other peers?
>>     * easily adding peer-to-peer functionality to your
>> Java socket and server socket applications?
>>     * having your servlets and Java Server Pages work
>> on a peer-to-peer network for increased reliability,
>> easier maintenence, and exciting new end-user
>> functionality?
>>     * playing with a cool technology?
>>
>> If you answered yes to any of the above, then welcome
>> to the Peer-to-Peer Sockets project! The Peer-to-Peer
>> Sockets Project reimplements Java's standard Socket,
>> ServerSocket, and InetAddress classes to work on a
>> peer-to-peer network rather than on the standard
>> TCP/IP network. "Aren't standard TCP/IP sockets and
>> server sockets already peer-to-peer?" some might ask.
>> Standard TCP/IP sockets and server sockets are
>> theoretically peer-to-peer but in practice are not due
>> to firewalls, Network Address Translation (NAT)
>> devices, and political and technical issues with the
>> Domain Name System (DNS).
>>
>> The P2P Sockets project deals with these issues by
>> re-implementing the standard java.net classes on top
>> of the Jxta peer-to-peer network. Jxta is an
>> open-source project that creates a peer-to-peer
>> overlay network that sits on top of TCP/IP. Ever peer
>> on the network is given an IP-address like number,
>> even if they are behind a firewall or don't have a
>> stable IP address. Super-peers on the Jxta network run
>> application-level routers which store special
>> information such as how to reach peers, how to join
>> sub-groups of peers, and what content peers are making
>> available. Jxta application-level relays can proxy
>> requests between peers that would not normally be able
>> to communicate due to firewalls or NAT devices. Peers
>> organize themselves into Peer Groups, which scope all
>> search requests and act as natural security
>> containers. Any peer can publish and create a peer
>> group in a decentralized way, and other peers can
>> search for and discover these peer groups using other
>> super-peers. Peers communicate using Pipes, which are
>> very similar to Unix pipes. Pipes abstract the exact
>> way in which two peers communicate, allowing peers to
>> communicate using other peers as intermediaries if
>> they normally would not be able to communicate due to
>> network partitioning.
>>
>> Jxta is an extremely powerful framework. However, it
>> is not an easy framework to learn, and porting
>> existing software to work on Jxta is not for the
>> faint-of-heart. P2P Sockets effectively hides Jxta by
>> creating a thin illusion that the peer-to-peer network
>> is actually a standard TCP/IP network. If a peer
>> wishes to become a server they simply create a P2P
>> server socket with the domain name they want and the
>> port other peers should use to contact them. P2P
>> clients open socket connections to hosts that are
>> running services on given ports. Hosts can be resolved
>> either by domain name, such as "www.nike.laborpolicy",
>> or by IP address, such as "44.22.33.22". Behind the
>> scenes these resolve to JXTA primitives rather than
>> being resolved through DNS or TCP/IP. For example, the
>> host name "www.nike.laborpolicy" is actually the NAME
>> field of a Jxta Peer Group Advertisement. P2P sockets
>> and server sockets work exactly the same as normal
>> TCP/IP sockets and server sockets.
>>
>> The benefits of taking this approach are many-fold.
>> First, programmers can easily leverage their knowledge
>> of standard TCP/IP sockets and server sockets to work
>> on the Jxta peer-to-peer network without having to
>> learn about Jxta. Second, all of the P2P Sockets code
>> subclasses standard java.net objects, such as
>> java.net.Socket, so existing network applications can
>> quickly be ported to work on a peer-to-peer network.
>> The P2P Sockets project already includes a large
>> amount of software ported to use the peer-to-peer
>> network, including a web server (Jetty) that can
>> receive requests and serve content over the
>> peer-to-peer network; a servlet and JSP engine (Jetty
>> and Jasper) that allows existing servlets and JSPs to
>> serve P2P clients; an XML-RPC client and server
>> (Apache XML-RPC) for accessing and exposing P2P
>> XML-RPC endpoints; an HTTP/1.1 client (Apache Commons
>> HTTP-Client) that can access P2P web servers; a
>> gateway (Smart Cache) to make it possible for existing
>> browsers to access P2P web sites; and a WikiWiki
>> (JSPWiki) that can be used to host WikiWikis on your
>> local machine that other peers can access and edit
>> through the P2P network. Even better, all of this
>> software works and looks exactly as it did before
>> being ported. The P2P Sockets abstraction is so strong
>> that porting each of these pieces of software took as
>> little as 30 minutes to several hours. Everything
>> included in the P2P sockets project is open-source,
>> mostly under BSD-type licenses, and cross-platform due
>> to being written in Java.
>>
>> Because P2P Sockets are based on Jxta, they can easily
>> do things that ordinary server sockets and sockets
>> can't handle. First, creating server sockets that can
>> fail-over and scale is easy with P2P Sockets. Many
>> different peers can start server sockets for the same
>> host name and port, such as "www.nike.laborpolicy" on
>> port 80. When a client opens a P2P socket to
>> "www.nike.laborpolicy" on port 80, they will randomly
>> connect to one of the machines that is hosting this
>> port. All of these server peers might be hosting the
>> same web site, for example, making it very easy to
>> partition client requests across different server
>> peers or to recover from losing one server peer. This
>> is analagous to DNS round-robining, where one host
>> name will resolve to many different IP addresses to
>> help with load-balancing. Second, since P2P Sockets
>> don't use the DNS system, host names can be whatever
>> you wish them to. You can create your own fanciful
>> endings, such as "www.boobah.cat" or
>> "www.cynthia.goddess", or application-specific host
>> names, such as "Brad GNUberg" or "Fidget666" for an
>> instant messaging system. Third, the service ports for
>> a given host name can be distributed across many
>> different peers around the world. For example, imagine
>> that you have a virtual host for
>> "www.nike.laborpolicy". One peer could be hosting port
>> 80, to serve web pages; another could be hosting port
>> 2000, for instant messaging, and a final peer could be
>> hosting port 3000 for peers to subscribe to real-time
>> RSS updates. Hosts now become decentralized coalitions
>> of peers working together to serve requests.
>>
>> Two tutorials are available:
>>
>>     * Introduction to Peer-to-Peer Sockets -
>> http://www.codinginparadise.org/p2psockets/1.html
>>     * How to Create Peer-to-Peer Web Servers,
>> Servlets, JSPs, and XML-RPC Clients and Servers -
>> http://www.codinginparadise.org/p2psockets/2.html
>>
>> Download P2PSockets-1.0-beta1.zip, (released 9-5-2003)
>> which contains the core package and extensions both
>> compiled and in source form, at
>> http://www.codinginparadise.org/p2psockets/P2PSockets-1.0-beta1.zip
>>
>> I believe this project should be in the core category,
>> as it is a foundational technology that applications
>> and other APIs would build upon, just as standard
>> java.net.Sockets and java.net.ServerSockets are a
>> foundational technology.
>>
>> Thanks,
>>   Brad Neuberg
>>   [EMAIL PROTECTED]
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>
> --
>
> Juan Carlos Soto                              415.762.2734
>
>
> --------------------------------------------------------------------- To
> unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to