Appendix E: Information Sources

This is a hypertext version of Appendix E in the text Windows Sockets Network Programming , by Bob Quinn and Dave Shute. It contains a few URL updates, and a number of new additions not found in the book.

This appendix contains recommended information sources of all types. It's split into two sections: Internet sources and Bibliography. The Internet sources are newsgroups, mail lists, ftp sites, and World Wide Web pages. The bibliography contains magazine and journal articles, textbooks, frequently asked question (FAQ) listings, and Internet requests for comments (RFCs).


Internet Sources

This section contains the "dynamic" information sources available on the Internet:

There are many places where you can get pointers to new sources of information. The best way to find about them as they appear is by reading relevant newsgroups and mail lists. FAQs can point you to them after the fact, and many Internet books have pointers.

URLs and URIs

To access various resources on the Internet, you need a destination host, the name of a resource, and an indication of what protocol to use to access the resource. Meet the universal resource locator (URL). URLs tell you where to go, what to see, and what to do. URLs are a subset of universal resource identifiers (URIs), and Tim Berners-Lee --the father of World Wide Web--describes both in a pair of draft RFCs available on www.cern.ch, the home of the World Wide Web. Here we paraphrase from those documents:

You won't typically use URIs, but you will often use URLs. Here's a simple high-level description of the URL syntax. The draft RFC details the complete syntax in Bakus-Naur form, but here is a simpler description of the URL form in common notation ({} surround required parameters, [] surround optional parameters, and other characters are mandatory seperators).

{service}://{host}[:port]/[path/.../][file name]

We use URLs throughout the remainder of this appendix to denote resource locations, where appropriate.


FTP Sites

The File Transfer Protocol (FTP) provides the most fundemental means of transferring files on the Internet. Here is a list of WinSock-related or networking-related sites you may find helpful. Almost all network software vendors maintain FTP sites, although we don't list them here. These sites are worth exploring since they sometimes have interesting files you would otherwise not know about.

ftp://rtfm.mit.edu
This site has a complete database of USENET FAQs, with a useful text search tool to find exactly the FAQ you need (see the "FAQs" section in this appendix for more information).
ftp://ftp.cs.washington.edu/pub/cstyle.tar.Z
ftp://ftp.cs.utoronto.ca/doc/programming
Indian Hill Style Guide, and other useful C-programming documents can be found here.
ftp://ftp.isi.edu/in-notes/iana/assignments (http://www.isi.edu/div7/iana/)
This site has the latest from the Internet Assigned Numbers Authority (IANA), like standard port numbers, and multicast addresses. IANA regularly updates the "Assigned Numbers" RFC.
ftp://ftp.trumpet.com.au/ftp/pub/winsock (http://www.trumpet.com.au/)
This is Peter Tattam's home site for his shareware Trumpet WinSock implementation and applications.
ftp://ftp.uu.net
/networking/bsd-net2: Berkeley Software Distribution (BSD) source code
/usenet/news.answers: FAQs from USENET newsgroups
/published/books : Addison-Wesley has source code from published books
ftp://gatekeeper.dec.com (http://gatekeeper.dec.com/)
You can find all dinds of useful stuff here, like RFCs and BSD source code. This site has a good keyword search utility that helps locate what you need.


List Servers

Some e-mail locations have list servers that automatically send requested information. To send a request, you specify your query in the "Subject:" field in the message header, or in the main body of your message, or in a combination of both. Different list servers and queris require different formats. We describe the format with each entry below.

resolve@cs.widener.edu subject: "help", message body: "site domain name or address"; it mails back the domain name information (i.e. it provides DNS name resolution via e-mail)

mail-server@nisc.sri.com: nothing in the subject field; message body: "send rfcnnnn.txt" to have an RFC text file sent to you


Mail Lists

Here are a few mail lists to which you can subscribe. Be sure to note how to get off the list in case you get tired of the eemail traffic.

winsock-2: Initially for discussions of WinSock version 2 SDK discussions. is is fast becoming the site for any WinSock application development questions, as WinSock 2 becomes the standard API (see the Winsock 2 page for more info). Subscribe by mailing to listserv@mailbag.intel.com with a BODY of "subscribe winsock-2" (subject is not read). .

winsock-hackers: Not heavily trafficked, but the best place to expose your WinSock development question to many of the WinSock heavies. It is well read by most of the WinSock implementors, so this is the place where many WinSock specification ambiguities are discussed. Subscribe by mailing to listserv@mailbag.intel.com with a BODY of "subscribe winsock-hackers" (subject is not read).

winsock-l: Good place for WinSock application users, also for developers but not many development issues are discussed. Not as heavily trafficked as the alt.winsock newsgroup, but useful. To join, mail to list-admin@papa.indstate.edu with nothing in Subject:, and "subscribe winsock-l" as the (only) textual body of the message. List members have access to WinSock applications at ftp://papa.indstate.edu/winsock-l, which is regularly updated.


Newsgroups

USENET newsgroup access is available from any Internet service provider. There are interest groups for everything under the sun including a lot of network-programming related traffic. The rules of courtesy dictate that you should always refer to the "frequently asked questions" for answers before you post a question (see FAQs section in this appendix for more information).

alt.winsock: deals with everything related to Windows Sockets. There are occasional messages dealing with programming, but it tends to stay crowded with messages about the shareware WinSock implementations and the latest WinSock applications (problems or praises).

alt.winsock.programming: a good place to ask questions, or simply lurk watching for information. There's a manageable amount of traffic here.

comp.os.ms-windows.networking.tcp-ip:
comp.os.ms-windows.networking.windows:
comp.os.ms-windows.programmer.networks
comp.os.ms-windows.programmer.tools.winsock
These all contain mostly the same WinSock-related messages as in alt.winsock.

comp.os.ms-windows.programmer.win32: This deals with generic Win32 programming questions, but there are some specific to WSOCK32 and others dealing with UNIX-to-Win32 porting issues.


Web Pages

World Wide Web traffic has surpassed FTP traffic on the Internet. The web is everywhere, and growing daily. There are countless useful sites for WinSock-related information, although only a few specialize in WinSock programming. Many of the FTP sites listed in the FTP section of this appendix also have web pages. There are many search engines for finding information anywhere on the Internet. Here are some pointers you may find helpful.

http://www.sockets.com/
The home site for this book. All source code, errata, and other new information about this book are available. Lots of additional WinSock information is also available.
http://www.stardust.com/
This is home site for Stardust Technologies WinSock Resource Center, which maintians a comprehensive repository of WinSock development information including documentation, articles, software, sample code and more for WinSock Versions 1.1 and 2.
http://www.pcausa.com
This is an excellent site for anyone that needs to do network driver-level work (i.e. to create an application that receives all packets in promiscuous mode). There is a sample packet capture program and be sure to see the "infrequently asked questions" (IFAQ) list.
http://papa.indstate.edu:8888/CWSApps/index.html
Here you'll find The Consummate WinSock Applications List, which lists Forest Stroud's annotated list of popular shareware and public domain WinSock applications. This includes an online forum for discussions about the applications.
http://www.tucows.com
Not to be outdone by the Stroud's, this site hosts The Ultimate Collection of Internet Software.
http://www.cmpcmm.com/cc/standards.html
This is an excellent jump point when looking for any standards documents of any kind, but those dealing with network-related standards in particular.

http://www.isi.edu/div7/iana/
Internet Assigned Numbers Authority website, where all port numbers and other Internet-related number assignments .
http://www.mbone.com/
http://www.best.com/~prince/techinfo
http://www.mediadesign.co.at/newmedia/more/mbone-faq.html
Internet multicast backbone (MBONE) references
http://www.eecs.nwu.edu/unix.html
This site provides a "reference desk" for UNIX, but it has lots of useful pointers for anyone doing networking on any platform!
http://www.NeoSoft.com/internet/paml
Here is a list of many publicly accessible mailing lists.


Bibliography

This section contains the "static" information sources:


RFCs

Requests for Comments (RFCs) are the official specifications for Internet standards (which is surprising, considering the name). They started out informally, but the IETF (Internet Engineering Task Force) now has a well-established standards review process for RFCs. The central site for RFCs is http://www.isi.edu/rfc-editor/, though RFCs are widely available.

Berners-Lee, Tim. draft-bernerslee-www-uri-00, "Universal Resource Identifiers in WWW," March 12, 1994, and draft-ietf-uri-uri-03, "Uniform Resource Locators," March 21, 1994.
These describe URIs and URLs (see earlier section in this appendix) used to address World Wide Web pages (for WWW-browsers like NetScape and Mosaic).
Braden, R., Borman, D., and Partridge, C. "Computing the Internet Checksum," Sept. 1988
This summarizes techniques and algorithms for efficiently computing the Internet checksum used in IP, TCP, UDP, and ICMP headers.
Cohen, David. IEN 137, "On Holy Wars and a Plea for Peace," 1 April 1980
As the date implies, this is a funny IEN ("Internet Experiment Notes," which were the precursors to RFCs), but it's also very informative. It gives the derivation of the terms "big endian" and "little endian," which are based on Jonathan Swift's Lilliputians and Blefuscians. They had a holy war about which end of the egg to break, analogous to the holy war about whether to transmit MSB or LSB first.
Deering, Steve. RFC 1112, "Host Extensions for IP Multicasting," Aug. 1989,
Describes the TCP/IP protocol stack extensions required of a host to support multicasting and provides mechanics of the Internet Group Management Protocol (IGMP) used for multicasting.
Deering, Steve. RFC 1256, "" Sept. 1991
Describes the ICMP router discovery mechanism (router solicitation and router advertisements).
Stine, Robert H. RFC 1175, "FYI on Network Management Tool Catalog: Tools for Montoring and Debugging TCP/IP Internets and Interconnected Devices," 1990.
The title says it all. Although dated 1990, it is still relevant.
Mockapetris, P.
RFC 1034, "Domain Names - Concepts and Facilities," Nov. 1987, is an introduction to DNS.
RFC 1035, "Domain Names - Implementation and Specification," Nov. 1987, describes the details of the domain name system and protocol.
Plummer, David C. RFC 826, "An Ethernet Address Resolution Protocol," Nov. 1982
Describes ARP over Ethernet. It contains this great quote: "The world is a jungle in general, and the networking game contributes many animals."
Postel, Jonathan B.
RFC 768, "User Datagram Protocol," Aug. 1980, describes UDP.
RFC 791, "Internet Protocol," Sept. 1981, describes IP.
RFC 792, "Internet Control Message Protocol," Sept. 1981, describes ICMP.
RFC 793, "Transmission Control Protocol," Sept '81, describes TCP.
RFC 821, "Simple Mail Transfer Protocol," Aug. 1982, describes SMTP.
RFC 862, "Echo Protocol," May 1983, describes TCP and UDP echo service.
RFC 863, "Discard Protocol," May 1983, describes TCP and UDP discard service.
RFC 864, "Character Generator Protocol," May 1983, TCP and UDP chargen.
Postel, J.B. and Reynolds, J.K.
RFC 854, "Telnet Protocol Specification," May 1983, describes basic telnet
RFC 959, "File Transfer Protocol (FTP)," Oct. 1985, describes FTP
Reynolds, J.K. and Postel, J.B. RFC 1700, "Assigned Numbers," Oct. 1994
Describes network byte ordering (big endian) and lists all standard numbers on the Internet: protocols, well-known ports, multicast addresses, Sun RPC numbers, and so forth.
Romao, Artur, RFC 1713, "Tools for DNS Debugging," Nov. 1994
This is an informational RFC that catalogs and describes tools for detection and correction of anomalies in a DNS configuration (describes host, dnswalk, lamers, DOC, DDT, and BIND checker code).


FAQs

Frequently Asked Questions (FAQs) answer common questions. Each USENET newsgroup usually has at least one FAQ. There are a few sites for USENET FAQs, but two of the best are ftp://ftp.uu.net/usenet/news.answersand ftp://rtfm.mit.edu. Whenever you start reading a newsgroup and a question occurs to you, you should check the FAQ for an answer before asking. They are not called "frequently asked questions" for nothing.

Kriz, Harry M. <hmkriz@vt.edu>, "Windows and TCP/IP for Internet Access"
http://learning.lib.vt.edu/wintcpip/wintcpip.html
Young, Warren <tangent@cyberport.com>, "WinSock Programmer's FAQ"
http://www.cyberport.com/~tangent/programming/winsock/


Magazine and Journal Articles

The articles collected here are from various magazines, with a number of them from the Microsoft Developers' Network CD (MSDN CD). This subscription service available from Microsoft provides you with a new CD-ROM quarterly that contains articles from Microsoft Systems Journal, some Microsoft Press texts (like Petzold), Technical Education seminars, white papers, specifications, and so forth, and any sample source code that accompany these. It is a gold mine with an easy-to-use, effective, and fast search utility, and is definitely recommended.

Chan, Chuck (Margaret K. Johnson, Keith Moore, and David Treadwell), "Write an NT WinSock Service,"
Byte Magazine, Dec. 1994 Describes how to take advantage of Windows NT features to write a secure server in a design akin to a UNIX daemon (i.e., the operating system spawns the service process when it receives a connection request). Although somewhat high level, it has many useful tips.
Collyer, Geoff (and Henry Spencer). "News Need Not Be Slow,"
This is a short and sweet collection of sensible rules of thumb for optimizing any application. It uses the optimization of the BSD USENET news server application as a practical example of what can be accomplished. It says things like "prepare for the worst, but optimize for the typical case," and "buying in bulk is often cheaper ...the law of diminishing returns does apply to buying in bulk." Highly recommended.
Dolenc, A. (A. Lemmke, D. Keppel, G. V. Reilly). "Notes on Writing Portable Programs in C,"
Describes the behavior of different C-preprocessors, compilers and environments, with some references to ANSI C.
Dreyer, Lori (John Miller and Al Dunn). "Porting a UNIX/XWindows Application to Windows using Win32s,"
USENET comp.os.ms-windows.programmer.win32, September 12, 1994 This is a telling saga of the pain suffered during a comprehensive code port that illuminates some fundamental programming differences between the UNIX and Windows worlds. It deals mostly with non-Sockets issues.
Spencer, Henry. "How to Steal Code, or Inventing the Wheel Only Once,"
If you re-invent the square wheel, you will not benefit when someone else squares off the corners. A resource shared is a resource squared!
Spencer, Henry (David Keppel, Mark Brader). "Recommended C Style and Coding Standards."
The scope is coding style, not functional organization. Available with other C-related articles from: ftp://ftp.cs.washington.edu/pub/cstyle.tar.Z, ftp://cs.toronto.edu/doc/programming
Treadwell, David, "Developing Transport-Independent Applications Using the Windows Sockets Interface,"
Tech Ed 1994 Windows NT, Microsoft Development Library, from Microsoft Developer Network CD-ROM. Introduces programming with WinSock, with some emphasis on NT, its multiple transport support, and how to use it.


Textbooks

Bonner, Pat, Network Programming with Windows Sockets
Prentice-Hall, Upper SaddleRiver, NJ, 1996, ISBN: 0-13-230152-0 This title is easily confused with our own Windows Sockets Network Programming, and amazingly enough, Pat's coverage of WinSock is very similar also. This is a worthy replacement, when you can't find WSNP ;-)
Brown, Ralf (and Jim Kyle). Network Interrupts: A Programmer's Reference to Network APIs
Addison-Wesley, Reading, MA, 1994, ISBN: 0-201-62664-6 This is a conglomerate of quick references for just about every network API in existence (including WinSock and BSD 4.x Sockets). The Windows Sockets API has obsoleted many, but it's a convenient, all-in-one reference for the driver APIs (ODI, NDIS, and Packet Driver).
Carl-Mitchell, Smoot (and John S. Quarterman), Practical Internetworking with TCP/IP and UNIX
Addison-Wesley, Reading, MA, 1993, ISBN: 0-201-58629-0 This contains practical descriptions of all aspects of TCP/IP in UNIX systems, with discussion of MAC and PC integration. It's a great quick reference that answers many questions, or at least gets you pointed in a direction so you can answer it yourself.
Cole, Gerald D. Computer Networking for Systems Programmers
John Wiley and Sons, New York, NY, 1990, ISBN: 0-471-51057-2. A comprehensive survey of networking layers and protocols, it makes a good "quick reference" book: very readable but not in-depth.
Comer, Douglas. Internetworking with TCP/IP Volume I
Prentice-Hall, Englewood Cliffs, NJ, 1991, ISBN: 0-13-468505-9 This beginner's-level introduction (undergraduate text book) to the structure of the TCP/IP protocol suite makes the transition to advanced texts like RFCs, Stevens Volume I, or Stallings Volume III relatively painless.
Dumas, Arthur. Programming WinSock
Sams Publishing, Indianapolis, IN, 1995, ISBN: 0-672-30594-1 This provides a good tutorial for using WinSock with C++; it doesn't cover many of the intracacies of WinSock, but includes source code that illustrates many of the basics.
Estrada, Susan. Connecting to the Internet
O'Reilly & Associates, Sebastopol, CA, 1993, ISBN: 1-56592-061-9 An excellent introduction to Internet service providers, and what you need to know to get connected. This book gives a quick overview of what's available on the Internet, and lots of information about the different types of Internet access available. It is best at providing practical advice about how to choose what's best for you or your business.
Hunt, Craig. TCP/IP Network Administration
O'Reilly & Associates, Sebastopol, CA, 1992, ISBN: 0-937175-82-X This is battle armor for anyone in the trenches. It is detailed, yet readable, like anything edited by Mike Loukides.
Jamsa, Kris (and Ken Cope)Internet Programming
Jamsa Press, Las Vegas, NV, 1995, ISBN: 1-88413-312-6 From reports I've seen, it sounds like this book covers lots of the common Internet protocols, and has a number of sample applications in C.
Krol, Ed. The Whole Internet: User's Guide & Catalog
O'Reilly & Associates, Sebastopol, CA, 1992, ISBN: 1-56592-025-2 There are alot of Internet guide books available these days, but this is still one of the best. This isn't surprising, since Ed wrote the original Internet guide in 1989 (RFC 1118, "Hitchhiker's Guide to the Internet").
Myers, Brian (and Eric Hamer). Mastering Windows NT Programming
Sybex, Alameda, CA, 1993, ISBN: 0-7821-1264-1 This is a comprehensive, detailed, and readable programming guide and reference for Windows NT. Similar to Petzold's for Windows 3.1.
Petzold, Charles Programming Windows 3.1, (3rd edition)
Microsoft Press, Redmond, WA, 1992, ISBN: 1-55615-395-3 The definitive Windows 3.1 programming guide and reference, this text contains lots of sample code (includes disk).
Pietrek, Matt. Windows Internals
Addison-Wesley, Reading, MA, 1993 ISBN: 0-201-62217-3 This is a companion to Undocumented Windows that exposes components in the black box that is Windows. It helps you to understand what you should and shouldn't do in your 16-bit Windows applications (and why). Also, it can provide guidance when you need some hint as to which way a bug scurried.
Raymond, Eric. The New Hacker's Dictionary
MIT Press, Cambridge, MA, 1991, ISBN: 0-262-68069-6 This is not an average (lame) computer dictionary. Hackerspeak is obfuscated English, and this text defines the grammar and vocabulary. It'll help you with USENET messages, RFCs, as well as encounters with hacknoids. Besides being useful, it's pretty entertaining too. Note: This text is also available in electronic form on the Internet from the Gutenberg Project.
Richter, Jeffrey. Advanced Windows Programming
Microsoft Press, Redmond, WA, 1995, ISBN 1-55615-677-4 This is a very useful tutorial and reference for Win32 programming.
Roberts, Dave, Developing for the Internet with Winsock
Coriolis Group, 1996, ISBN 1-883577-42-X This looks worthwhile (so far, I've only skimmed it in a bookstore), and I've seen a number of recommendations. Of course, I still think our book is better if you've got to choose only one :-)
Roberts, Dave, Internet Protocols Handbook
Coriolis Group, 1996, ISBN 1-883577-88-8 This is a handy complement to the RFCs. It provides what amounts to digested forms of the IETF RFC specifications for most of the common standard Internet protocols.
Schulman, Andrew. Unauthorized Windows 95: Developers Resource Kit
IDG Books, San Mateo, CA, 1994, ISBN: 1-56884-305-4 A glimpse at the internals Windows 95 before its release, it reveals the "new" operating system's MS-DOS foundation.
Schulman, Andrew (David Maxey and Matt Pietrek). Undocumented Windows
Addison-Wesley, Reading, MA, 1992, ISBN: 0-201-60834-0 This is full of information about the mechanics of Microsoft Windows 3.x. and includes useful source code for exploring Windows and debugging application problem.
Stallings, William, Networking Standards: a Guide to OSI, ISDN, LAN and MAN
Addison-Wesley, Reading, MA, 1993, ISBN: 0-201-56357 If you need to delve into the low-level "network access" layers (layers 1 and 2 in the OSI network reference model), then you want a copy of this book. It focuses on OSI, but it deals with details in many medias: Broadband, ISDN, Ethernet, IEEE 802.5, FDDI, ATM, and Frame Relay.
Stevens, W. Richard. Advanced Programming in the UNIX Environment
Addison-Wesley, Reading, MA, 1992, ISBN: 0-201-56317-7 This comprehensive reference for programming with the runtime library of the (any) UNIX environment contains excellent descriptions of concepts with code illustrations in C. It describes programming standards: ANSI, IEEE POSIX, and X/Open, and references specifics in a variety of UNIX platforms ("vanilla SVR4." 4.3+BSD, BSD/386, and SunOS 4.1.1 and 4.1.2). It is edited by Brian Kernighan
Stevens, W. Richard. TCP/IP Illustrated, Volume 1
Addison-Wesley, Reading, MA, 1994, ISBN: 0-201-63346-9 It doesn't get any better than this comprehensive, in-depth, and readable book. If you need to program or debug a TCP/IP network, you should have a copy of this book.
Stevens, W. Richard. UNIX Network Programming
Prentice-Hall, Englewood Cliffs, NJ, 1990, ISBN: 0-13-949876-1 This is the definitive reference for Berkeley Sockets and System V TLI. It describes all the various UNIX interprocess communication paradigms. It provides many examples of common TCP/IP application protocols, including ping, TFTP, LPR, and BSD "r" (remote) utilities such as rsh. We highly recommend this book.
Tannenbaum, Andrew S. Computer Networks
Prentice-Hall, Englewood Cliffs, NJ, 1989, ISBN: 0-13-162959-X This standard network reference has a comprehensive survey of every layer in the OSI Network Reference Model.
Umar, Amjad. Distributed Computing: A Practical Synthesis
Prentice-Hall, Englewood Cliffs, NJ, 1993, ISBN: 0-13-036252-2 An excellent introduction to network hardware and software architecture, with descriptions of many open standards, this text contains a nice mix of high-level management discussions and down-and-dirty technical applications and integration (with case studies).

[Go to top]