Sockets

Vol. 7 No. 4 – May 2009

Sockets

Articles

Whither Sockets?

High bandwidth, low latency, and multihoming challenge the sockets API.

Whither Sockets?

High bandwidth, low latency, and multihoming challenge the sockets API.


George V. Neville-Neil


One of the most pervasive and longest-lasting interfaces in software is the sockets API. Developed by the Computer Systems Research Group at the University of California at Berkeley, the sockets API was first released as part of the 4.1c BSD operating system in 1982. While there are longer-lived APIs—for example, those dealing with Unix file I/O—it is quite impressive for an API to have remained in use and largely unchanged for 27 years. The only major update to the sockets API has been the extension of ancillary routines to accommodate the larger addresses used by IPv6.2

The Internet and the networking world in general have changed in very significant ways since the sockets API was first developed, but in many ways the API has had the effect of narrowing the way in which developers think about and write networked applications. This article begins by briefly examining some of the conditions present when the sockets API was developed and considers how those conditions shaped the way in which networking code was written. The remainder of the article looks at ways in which developers have tried to get around some of the inherent limitations in the API and talks about the future of sockets in a changing networked world.

by George V. Neville-Neil

Curmudgeon

One Peut-Être, Two Peut-Être, Three Peut-Être, More

Puns and allusions

One Peut-Être, Two Peut-Être, Three Peut-Être, More

Puns and allusions

Stan Kelly-Bootle, Author

One is always loath to explain a joke. In face-to-face badinage, the joker can judge the comprehension of the jokees from their immediate reactions. Failing to win the approving smiles, chuckles, or belly laughs, the raconteur has a choice of remedies including the Quick Exit Strategy ("What a dumb crowd. I'm out of here!"). The modest teller will accept the blame ("Oh, I forgot to mention that the mother-in-law was a blond Republican Fortran programmer!") and order drinks all around. It's the bore unwilling to accept defeat who embarks on a detailed analysis heralded by an aggressive, "You don't get it, do you?"

This rhetorical affront, one that has wormed its annoying way into many areas of contemporary polemic, is the ultimate deterrent to goodwill and reasonable discourse. If you don't "get" something, as opposed to merely not understanding all its finer ramifications, the feeling is conveyed that you are forever outside humanity's caring fold. Pascal lovers don't "get" C, and deep C fishers don't "get" C++. And, naturally, vice-versa, across a chasm of misunderstanding. Moreover, they are clearly never going to "get it," so brand the mark of the beast on their foreheads as they slink back to their obscure North Country polytechnics.1

by Stan Kelly-Bootle