[standards-jig] Re: [JDEV] DSPS
ben at blahr.com
Tue Jul 23 17:50:15 UTC 2002
(Cross-posting, cause I think it applies to both lists.)
I agree, that using a stream layer separate from the file transfer would
be preferred, I just think we shouldn't rely on a server as a passthru in
all situations. Working around firewall issues is a problem that has been
solved by nearly every peer-to-peer network in existence, so I assume
there has to be a solution that will work for Jabber. In fact, by keeping
the stream layer separate, it should be possible to initiate the connect
from either side and then do a data transfer in either direction. This way
if I am behind a firewall, but the person I'm communicating with isn't, I
can open a connection to them and then push my data across. Perhaps the
DSPS spec should be expanded/altered to the point where it doesn't
necessarily imply that a proxy is necessary.
Currently, the server doesn't have any knowledge of what a user's IP is
beyond socket creation, and I would guess that this will stay this way in
the open source implementation -- it is a privacy concern, after all. That
being said, however, it would be pretty easy to write something that would
have this information (a DSPS component?) available if it was necessary.
Does any of this make sense? I'm just trying to avoid designing/developing
something that will not be used, because servers probably won't want to
take the extra bandwidth hit just to provide their users with the ability
to do file transfers.
On Tue, 23 Jul 2002, Justin Karneges wrote:
> The problem is that there is otherwise no real clean way to establish a direct
> connection. Everyone is behind a firewall these days.
> Maybe jabberd should support a way of getting your external IP address, so
> that there could be some sort of stream negotiation between two clients. As
> it stands, clients don't even know what their real external address is unless
> you were to specify it directly (not exactly user-friendly).
> The "stream" idea IMO makes more sense than just http URLs, because it implies
> more possibilities than just file transfer. It also keeps the stream
> handshake as a separate layer, which simplifies things when you consider the
> various possible methods of transport (TCP, DSPS, PASS, XML-thru-server??),
> SSL, reverse-connections, etc. I completely agree with Rob about keeping the
> stream layer _separate_ from the file transfer.
> DSPS is dead-easy to use from a client perspective. What we need is something
> similar to it, as a standard part of jabberd, that allows clients to ask for
> a stream to another JID. Something very simple like: "Oh, you want
> joe at blow.org/Home? Connect to this IP address." This might be through DSPS,
> or it might be direct, or whatever. I'm just saying, we need a simple way
> for clients to ask for a stream. DSPS seems to have a nice interface, but it
> assumes we want to route through an external point. Maybe the real solution
> is to have an even smarter component that will hook you up directly to the
> other person if possible, otherwise fall back to DSPS (all hiding this from
> the client).
> The current situation is not optimal.
More information about the Standards