[lug] socket programming/kernel question
Zan Lynx
zlynx at acm.org
Wed Mar 5 12:46:57 MST 2003
On Wed, 2003-03-05 at 11:17, Bear Giles wrote:
> Michael J. Hammel wrote:
> > You have two processes that know about each other, correct? Or does
> > your process know about the others, but the others don't know about
> > you? I'm guessing the former, based on your description.
>
> There's a key server daemon, which knows the pid of callers from
> the SCM_CREDENTIALS information attached to the Unix socket
> message. The clients who know nothing about the daemon - they
> just open the socket connection and send stuff through it.
>
> There's no logical connection between the processes, so having the
> server act as a factory isn't a practical solution. (The server
> will probably be in C, the clients java applets triggered by
> asynchronous messages. That also makes it difficult for the
> client to use a gatekeeper.)
>
> > If both know about each other but you want asyncronous message handling,
> > then TCP is the best way to go about it. EPIPE can be used to know when
> > the opposite end goes away. Trying to do it by process id is far more
> > difficult.
>
> The more I think about it, the problem isn't detecting when the
> connection drops, it's detecting that the other process has died.
> Information needs to go down the rabbit hole. Stream protocols
> would tell me this, but require me to keep the stream open for the
> lifetime of the process even if days pass without use.
>
> > I find that UDP is better for situations where the sender doesn't care
> > about the receivers status. This doesn't sound like the case here.
>
> It's also useful for cases where the requests are idempotent and
> have no logical connection to other requests, and that's the case
> here.
>
> I haven't worked through all of the details (since I'm also
> considering other approaches), but the idea is that you hit the
> server with a one object and it echos a modified object, or it
> remains silent and the client times out. If the client misses the
> response (unlikely on Unix sockets :-), they can resubmit the
> request without causing any problems to the server.
>
> The twist is that authentication is necessary, but nothing the
> client provides can be trusted. Hence Unix sockets and the
> SCM_CREDENTIALS - it's not much, but it's a start.
How about a cryptographic cookie in each request? Doesn't secure NFS do
something like that?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.lug.boulder.co.us/pipermail/lug/attachments/20030305/547162c8/attachment.pgp>
More information about the LUG
mailing list