ma@inmet.inmet.com (07/27/90)
I am building an application which needs to do RPC-like processing across a SUN network, but I cannot use SUN's rpc facility itself; I need to build mine from lower-level components. The question is, WHICH set of lower-level components should I use? I gather that the underlying mechanism for SUN's rpc facility is sockets, so that would be an obvious choice. However, the SUN 4.1 documentation (in particular the Network Programming Guide) alludes to the fact that SUN intends to ultimately discontinue support for sockets, and warns the user to not use them directly for new software. If that were true, what should one use instead? The impression I get from that very same Guide is that the answer is TLI. However, TLI is NOT available on pre-4.1 releases. Is there something on that level that IS available both now and in the future? What comes to mind is STREAMS. However, I find it hard to figure out whether STREAMS provide the same functionality as sockets and/or TLI, how those three differ from one another, what each of them is good or bad for, whether any of them are implemented in terms of the others, etc, etc... I would very much appreciate an explanation of all of this, and some advice about which of them to use. Thanks in advance, Malgosia Askanas (ma@inmet.inmet.com)
guy@auspex.auspex.com (Guy Harris) (07/29/90)
>The question is, WHICH set of lower-level components should I use? I >gather that the underlying mechanism for SUN's rpc facility is >sockets, so that would be an obvious choice. Correct, in SunOS (modulo the non-existence of a major workstation vendor named SUN; it's "Sun Microsystems", not "SUN Microsystems"). >However, the SUN 4.1 documentation (in particular the Network >Programming Guide) alludes to the fact that SUN intends to ultimately >discontinue support for sockets, and warns the user to not use them >directly for new software. What this means is that the next major OS release from Sun will be based on System V Release 4, and the "native" networking interface in S5R4 is TLI. However, S5R4 will have a sockets interface, at least to the Internet protocol family, as well. >If that were true, what should one use instead? The impression I >get from that very same Guide is that the answer is TLI. However, >TLI is NOT available on pre-4.1 releases. Is there something on that >level that IS available both now and in the future? No. >What comes to mind is STREAMS. However, I find it hard to figure out whether >STREAMS provide the same functionality as sockets and/or TLI, That's because it ultimately doesn't. Sockets provides the same functionality as STREAMS+TLI. TLI is built atop STREAMS; some of the functionality provided by sockets is mirrored by STREAMS functionality, and other functionality is mirrored by TLI functionality. Prior to SunOS 4.1, the only networking functionality implemented using STREAMS is NIT (unless you count the tty driver). Prior to SunOS 4.0, you don't have STREAMS anyway. I would probably go with sockets for now, if I were concerned about maximum portability. Just about every UNIX system that offers the Internet protocol family has them (I think most TCP/IP packages for S5R3 come with a socket emulation library; TCP/IP implementations atop S5R2 and the like tended to be done with sockets; S5R4 comes standard with a sockets library, and any UNIX system with a BSD-based networking implementation has sockets).
brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (07/29/90)
In article <36200002@inmet> ma@inmet.inmet.com writes: > I am building an application which needs to do RPC-like processing > across a SUN network, but I cannot use SUN's rpc facility itself; > I need to build mine from lower-level components. > > The question is, WHICH set of lower-level components should I use? (Bias alert.) The answer is, my auth package (c.s.unix volume 22). As the README says: This package provides two benefits. The first is a secure user-level implementation of RFC 931, the Authentication Server; unless TCP itself is compromised, it is impossible to forge mail or news between computers supporting RFC 931. The second is a single, modular interface to TCP. Programs written to work with authtcp and attachport don't even need to be recompiled to run under a more comprehensive network security system like Kerberos, as long the auth package is replaced. You should have no trouble compiling and running auth on any Sun. Not only will you get the authentication of RFC 931 now, but your programs will be perfectly portable to any system supporting the straightforward interface. auth could be implemented on top of TLI, for example. Warning: auth only provides a modular interface for two-party stream communication. If you need multi-party or datagram communication, you'll have to do some extra work. ---Dan