tstrufe
2004-04-26 09:05:05 UTC
Thanks for the hints!
|>Correct me if I'm wrong, but I think the main
|>difference is that, in c/s, any given node is either
|>client or server, but in p2p a node can be both client
|>and server at the same time...
Well, if you consider the dynamic client/server model (client server
with delegation) you get the same behaviour. Servers delegate subtasks
to other servers, and hence become clients for a certain amount of time,
in many c/s-systems.
I suppose the difference is, that in P2P every node can be the
originating source of a request, while in dynamic c/s the source is
always a /client/.
| But Thorsten asked more specific differences, and imho,
| routing is one specific feature of P2P (file-sharing -- Gnutella/Kazza,
| DHT, ad-hoc wireless network, etc.).
I thought about this fact as well, but if that is the defining
characteristic of P2P we had to call any routing system P2P, hadn't we?
The problems solved in the system domain seem to be the same then.
I've got as far as defining P2P as a system architecture (here comes the
first question: does anybody know a good and formal definition of system
architectures?).
The system architecture can be best described with three different models.
~ * In the role model (formal definitions?): P2P knows of only one role,
the servent. Every servent performs, or at least is able to perform the
same tasks (symmetric roles), which usually consist of searching its
local or locally registered ressources, forwarding search requests and
serving an offered ressource.
* In the interaction model (formal definitions?): Similar to the
client/server model interaction in P2P architectures is done
asynchronous via request-response message pairs. Any node can be the
originating source for a request.
* In the organisational model (fd?): No context knowledge other than a
bootstrapping point to one occurence of a specific P2P system is needed
to take part in it. There is no central naming system (anyway, it is
possible to introduce an distributedly implemented algorithmic naming
system as is done with Hashvalues in DHT-Systems). 'Pure' P2P systems
are not structured at all (anyway, it again is possible to introduce a
distributedly implemented structure as the supernodes in gnutella v0.6).
Following this definition, a better word for P2P would probably be
decentral distributed systems or collaborative systems (if this term
wasn't already occupied by the cscw-world).
I'm perfectly aware of the fact that this definition does not cover
***@home, napster and a fair share of other (file-sharing) systems, but
it's still the best definition that I can come up with at the moment.
And I would be highly interested in other views! :-)
Thanks for comments in advance!
thorsten
|>Correct me if I'm wrong, but I think the main
|>difference is that, in c/s, any given node is either
|>client or server, but in p2p a node can be both client
|>and server at the same time...
Well, if you consider the dynamic client/server model (client server
with delegation) you get the same behaviour. Servers delegate subtasks
to other servers, and hence become clients for a certain amount of time,
in many c/s-systems.
I suppose the difference is, that in P2P every node can be the
originating source of a request, while in dynamic c/s the source is
always a /client/.
| But Thorsten asked more specific differences, and imho,
| routing is one specific feature of P2P (file-sharing -- Gnutella/Kazza,
| DHT, ad-hoc wireless network, etc.).
I thought about this fact as well, but if that is the defining
characteristic of P2P we had to call any routing system P2P, hadn't we?
The problems solved in the system domain seem to be the same then.
I've got as far as defining P2P as a system architecture (here comes the
first question: does anybody know a good and formal definition of system
architectures?).
The system architecture can be best described with three different models.
~ * In the role model (formal definitions?): P2P knows of only one role,
the servent. Every servent performs, or at least is able to perform the
same tasks (symmetric roles), which usually consist of searching its
local or locally registered ressources, forwarding search requests and
serving an offered ressource.
* In the interaction model (formal definitions?): Similar to the
client/server model interaction in P2P architectures is done
asynchronous via request-response message pairs. Any node can be the
originating source for a request.
* In the organisational model (fd?): No context knowledge other than a
bootstrapping point to one occurence of a specific P2P system is needed
to take part in it. There is no central naming system (anyway, it is
possible to introduce an distributedly implemented algorithmic naming
system as is done with Hashvalues in DHT-Systems). 'Pure' P2P systems
are not structured at all (anyway, it again is possible to introduce a
distributedly implemented structure as the supernodes in gnutella v0.6).
Following this definition, a better word for P2P would probably be
decentral distributed systems or collaborative systems (if this term
wasn't already occupied by the cscw-world).
I'm perfectly aware of the fact that this definition does not cover
***@home, napster and a fair share of other (file-sharing) systems, but
it's still the best definition that I can come up with at the moment.
And I would be highly interested in other views! :-)
Thanks for comments in advance!
thorsten