http://www.dolda2000.com/~fredrik/doldaconnect/protocol.html
write. However, it would be good if people would start looking through
the sections that I've written about the semantics of the protocol and
give me some early feedback.
However, should this protocol define a hub-to-hub protocol as well, or should that be left to the hub implementor?
All in all I don't see any real need to make GUIDs persistent, while I
don't like the idea of making all too easy the life of people willing to
track my online presence.
I think the current hub model is showing many limits; simply put it doesn't
scale at all. Things could get better by making two or more servers work
togheter (thus the need of a server-to-server protocol spec). I don't know
if your draft is the right place, but I'd definitely like to explore the
topic.
All in all I don't see any real need to make GUIDs persistent, while I
don't like the idea of making all too easy the life of people willing to
track my online presence.
I think the current hub model is showing many limits; simply put it doesn't
scale at all. Things could get better by making two or more servers work
togheter (thus the need of a server-to-server protocol spec). I don't know
if your draft is the right place, but I'd definitely like to explore the
topic.
Speaking of x-to-x protocols; Eric had an idea that I found
interesting, namely to make to client-to-client protocol more-or-less
pure HTTP. After all, HTTP does almost exactly what the
client-to-client protocol is supposed to do. I would like people to
voice their opinions about that. In my mind, it is a very good
idea. Of course, it would have some DC-specific headers, but that
doesn't prevent anything at all. It would also make HTTPS quite
natural for encrypted transfers.
First of all, do we really need *persistent* GUIDs? They won't help tracking malicious users, since anyone can always force his client to generate a new GUID when he likes.I agree about your privacy concerns... I think a "good" client will offer the user a choice of both per session and global GUIDs. If someone has queued files from you (and keeps your GUID as an identifer in their queue), a couple of hash matches (since you can request by hash, eliminating the pitfalls of you having reorganized your share in the meantime) should be enough for their client to learn your new GUID and re-establish you as a source for all those files.
I agree that it is in a way an interesting thought. However, I would
guess that hub owners wouldn't like the bandwidth that's wasted on
sending redundant information like that.
That, however, can be solved in a much nicer way, in that case. I
would imagine it to be better in that case to leave the fields that
should not be updated being the empty string, like this:
desc "new nick" "" "" "" 4 ""
Isn't that even better?
desc "new nick" "" "" "" 4 ""
No, not particularly - especially if you think of it in terms of XML and
attributes. Or if you want to make it extensible.
I agree that it is in a way an interesting thought. However, I would
guess that hub owners wouldn't like the bandwidth that's wasted on
sending redundant information like that.
Well, that's quite simple. Since none of the attributes can be empty
(nick, share, slots, hub and address - wouldn't really be practical to
have an empty value), the empty string simply means use the old value.
Also, since you're saving a maximum of 16 bytes, and only once when
you connect, by not sending the IP address, then really, why _not_
send the IP address? Or did you have another reason in mind?
Ah, I see your point. Very good point, in fact. I guess there are twoeDonkey servers do this - they connect to a user's listening port and if it's unreachable, it puts them in their equivalent of passive mode (lowID). eDonkey servers also host a lot more users than the biggest DC hubs as of yet do (the biggest I saw listed was 205,628 users - though the median size seems closer to 20-30k).
ways of solving that. Either make the hub connect to each user to try
him (bad idea, I admit)
If a user detects anything weird about another user (not being able toFrom my experience on the DC++ forums, if you implement a "warning system" that can be triggered on timeouts by the user, you will get a lot of misconfigured users using it. (Many behind routers don't realize they have to put in their external IP to become active.)
connect to him,
Really? I would have thought that it would take to much hub resourcesWell, if it's unfeasible, I'm not sure how eDonkey servers pull it off with a much higher user count than DC hubs. ;)
to do that. Do you really think that it's feasible?
If I'm not incorrect, none of the things it will detect are very proneIf a user is behind a router, hasn't entered his external IP into the settings, and goes to download a list from someone - they will send a CTM with their private network IP. The remote user, of course, cannot connect to them using that. After a short while, DC++ will stop waiting for an incoming connection and display "Connection timeout." For all intents and purposes, the misconfigured user "cannot connect" to other user. This probably will only happen with users new to the DC network, which means it will happen on a regularly annoying basis.
to misconfiguration. Connecting to a user won't be affected by many
(or any?) factors that I can think of. Likewise, fakeshared files
don't have any apparent misconfiguration factors that I can think of
either.
In any case, though, to avoid that users would increase a hubs load byI think the idea of an automagical warning system is novel... but it's really quite unworkable - ultimately, it requires OP intervention, and their judgment about whether or not it's a real problem. Essentially, you're making a new feature that's the same as PMing OPs. Though it might be simpler, isn't educating users that they should report odd behavior by telling OPs a much better long-term solution? How would any automated system establish the two-way communication you need to figure out what is really going on?
misusing it, I was thinking that, if the hub investigates a warning
and detects it to be bogus, it could ignore further warnings from that
same client for five minutes or so.
Jernej Simon?i? writes:
> On Saturday, January 17, 2004, 21:39:34, Fredrik Tolf wrote:
> > > Also, since you're saving a maximum of 16 bytes, and only once when
> > you connect, by not sending the IP address, then really, why _not_
> > send the IP address? Or did you have another reason in mind?
> > How will the hub know that this address is real?
Ah, I see your point. Very good point, in fact. I guess there are two
ways of solving that. Either make the hub connect to each user to try
him (bad idea, I admit), or do something which I very much think that
we should implement anyway - build a "warning system":
> eDonkey servers do this - they connect to a user's listening port
> and if it's unreachable, it puts them in their equivalent of
> passive mode (lowID). eDonkey servers also host a lot more users
> than the biggest DC hubs as of yet do (the biggest I saw listed was
> 205,628 users - though the median size seems closer to 20-30k).
Really? I would have thought that it would take to much hub resources
to do that. Do you really think that it's feasible?
> >If a user detects anything weird about another user (not being
> >able to connect to him,
>
> From my experience on the DC++ forums, if you implement a "warning
> system" that can be triggered on timeouts by the user, you will get
> a lot of misconfigured users using it. (Many behind routers don't
> realize they have to put in their external IP to become active.)
1. Say if you are on a network where you do have your own IP address,Isn't the non-validation of CTM what has allowed DC clients, in past events, to be used as a DDoS tool?
but the firewall doesn't allow incoming SYN packets. Then you might
want to use a SOCKS server that is on another IP address for people
to connect to.
Isn't the non-validation of CTM what has allowed DC clients, in past events, to be used as a DDoS tool?