views:

67

answers:

2

Not having a CS degree has left large holes in my programming related knowledge. In particular I'd really like to learn some of the computer networking stuff I would have got in a good CS degree. The problem I really have is "not knowing what I don't know". So far I know I don't know anything about the following (as far as computer networks are concearned)

-sockets

-ports

-internet protocol (the whole IP stack I keep hearing about).

Can anyone add more to the list? Can anyone suggest a project (writing a toy web server?)

Thanks in advance

+2  A: 

That's a good point and to know more is usually pretty beneficial. But I would say in depth knowledge of network systems is really necessary only for specific class of programming problems. Majority of programming projects don't require such profound knowledge. Is essence programmers and network experts (IT Professionals as Microsoft likes to call them) are two different occupations (except for that few cases) and they even require, I would say, two different mindsets.

Anvar
IT Professionals need to know a lot about configuring networks (routers, servers, etc.), but the original poster is asking about network programming. Network programming is a pretty useful skill in a programmer's toolbox, IMO. Obviously, it depends on what kinds of applications you plan to write.
Daniel Stutzbach
A: 

I recommend reading TCP/IP Illustrated, Volume 1, by Stevens. It's surprisingly easy to read and by the end of it you will 1) have learned a lot and 2) have a much better idea of what you still don't know. :-)

As for good projects, I suggest making a toy web client first. Just write something that will download a webpage and save it to a file (like wget or curl). A toy web server is a good second project.

Daniel Stutzbach
Thanks for this, I'll check it out, I like your ideas for projects too. Ta!
bplus