views:

502

answers:

10

Like:

  • Learning the basic troubleshooting skills
  • Learning how to configure a network
  • Understanding different types of networks
  • etc.

I was configuring a home network between my Windows and Ubuntu machine and I had a tough time doing it. I later figured out that both of them should be configured with the same subnet mask. I don't what that means, but it worked. That made me realize that I lack the basic networking/sysadmin skills and any help in terms of how-to's, links to tutorials that can help me learn is very much appreciated.

And is there any good certification exam that a programmer can take which covers the basic networking concepts and helps him/her build a strong foundation?

+1  A: 

I would highly recommend reading TCP/IP Illustrated or maybe even just book-marking. Not only does it have example code to handle many networking situations you can run into as a programmer, it does an excellent job at providing the essential reference for networking interaction.

Cisco Press also has many books on configuring network according to Cisco's multilayer design.

If you really want to, the Cisco Certified Network Associate (CCNA) is an industry accepted certificate that "should" say you understand networking at a basic level.

Wyatt
A: 

I think it depends on your environment. If you have an entire team of sysadmins and network technicians and such, it's not a big deal at all. But if you have one or two sysadmins, anyone on the technical teams (including the development team) should have enough knowledge of the system and basic tasks to fill in for a day or two, if needed.

If you want to learn, I would learn directly from your system administrators. See what they recommend, and learn the technologies that you use at work. Perhaps, if you get a chance, help them out every once in a while to get your hands dirty, with their oversight so you don't break anything. I think that's the best advice.

Thomas Owens
+1  A: 

I would say learn to subnet. All the basics of IPv4 and what things such as broadcast, network addresses, subnet masks will become known to you. There's a good resource on http://www.learntosubnet.com/

For certifitcation best bet is to look at Cisco's CCNA. It's more then you'll ever need. This is quite a big cert & also teaches you how to configure cisco's routers. The course is broken up into CCNA 1 to 4. CCNA1 teaches you things like what a hub/swich is, how to make patch & cross-over cable and finally how to subnet.

There should be heaps of free resources online for CCNA. If your into books, you should be able to find an old CCNA book for cheap/2nd hand, as the exam gets updated every few years but the basic networking stuff remains the same.

Here are some course notes on CCNA1 which i studied at uni a few years ago http://www-staff.it.uts.edu.au/~dcom/CiscoLessons/CCNA1v31/

nkav
A: 

It also depends on what type of programming you do. I'm a web developer, working mostly with the LAMP stack, so it's useful for me to understand Linux permissions, cron, Apache configuration, MySQL configuration and DNS. Someone writing a C# API on a Windows web server won't benefit from most of that.

You need to understand whatever OS you work on. The things I've learned above are things that could break my application, so it's useful to understand them for debugging purposes. Your knowledge should somewhat overlap your sysadmin's knowledge.

Lucas Oman
A: 

There are two "general" books that would help you with all the details on systems adminstration:

  • Unix System Administration Handbook By Evi Nemeth, Garth Snyder, Scott Seebass, Trent H. Hein
  • Essential System Administration By Aeleen Frisch (O'Reilly, available through Safari)

Both of these will have chapters on each of the topics you mentioned, as well as chapters on tasks/issues/disasters you haven't seen yet. :)

I'm not one for learning through certification programs, but that may be how you work. Two of the more known commercial certifications would be the Red Hat Linux and Sun Solaris certifications. But since you picked Ubuntu as your Linux distribution these may not be your choice either.

There are two organizations developing the profession of Systems administration that may have something for you as well:

  • Sage The USENIX Special Interest Group for SysAdmins
  • LOPSA The League of Professional System Administrators

Finally, you Linux installation probably has a massive collection of documents in /usr/share/docs/ covering many of the packages installed.

Ron Nelson
A: 

In terms of certification, as Thomas mentioned the CCNA is a good introductory certification that covers the basics of networking. Once you understand subnetting and routing, you will be much better prepared for network programming than many developers I've met. However, any higher level than CCNA is probably overkill unless you are planning on being a network engineer/administrator of a very large network.

If you're planning on doing any network intensive programming (i.e. rolling your own networking code rather than relying on a library), "TCP/IP Illustrated v1" and "UNIX Network Programming" by the late great W. Richard Stevens really are the best reference you could buy.

Murali Suriar
A: 

Anyone that works in IT field should at least read few chapters from TCP/IP Illustrated Vol 1. Because they need to know:

  1. How TCP/IP stack works
  2. How IP Routing (including subnet) works
  3. How DNS system works
Niko Gunadi
A: 

I would recommend:

  1. Understand the OSI model. Particularly layers 1 through 5 for network admin related things.
  2. Understanding of UDP and TCP is of much benefit.
  3. A basic understanding of how DNS resolution works on the various platforms that you are going to use

A CCNA or equivalent will give you the appropriate grounding in the networking side of things, and there are a plethora of books available for this.

On the Systems admin, it would depend entirely on what operating systems you will be dealing with. My best advice is to get VMWare or something, install your preferred OS and break it. Intentionally break things on it, install viruses, delete files, rename folders, you name it... if you can think of it... do it... and then once it's broken... Try and fix it.

You can read all the books you want with regards to systems, but if you don't have the experience of using the OS in anger you'll miss the relevant and key factors to working effectively in systems admin.

pobk
+3  A: 
  1. learn the basics of OSI and, of course, TCP/IP
  2. focus on IPv4 subnet and address system until you feel confident
  3. you might want to write some simple server/client application in C
  4. learn the CLI commands for troubleshooting: ping, netstat, ipconfig/ifconfig, tracert, nmap, iptables... (here are some for Windows, for a starter, and some for Linux)
  5. learn to use some other tools like ethereal or tcpview
  6. experiment with some simple firewall; the integrated firewall in your router, a soft firewall (like shorewall, ufw)

EDIT: I second suggestions about CCNA; even if the tests are a bit silly the documentation is pretty clear and does not assume anything about reader's previous level of knowledge

Manrico Corazzi
A: 

minimum requirement for a network engineer is CCNA certification, and for a system engineer MCSE...

Arun Chand