Meet the Author: Steve Evans on TCP/IP Networking for DevelopersBy Paul Ballard
In today’s episode of our Meet the Author Podcast, Fritz Onion speaks to Steve Evans about his course TCP/IP Networking for Developers. In the interview Steve explains the motivation behind creating this course and then steps through the process of debugging connectivity issues to a remote server including using nslookup, telnet, WireShark, and Fiddler.
Listen to the Audio (MP3)
[Fritz] Hi this is Fritz Onion, today I’m here speaking with Steve Evans about his new course, TCP/IP Networking for Developers. Steve has worked in the IT field for over 12 years specializing in Microsoft technologies, he’s consulted for small businesses on their IT infrastructure needs as well as worked for larger companies as a systems engineer. Steve has been a recipient of the Microsoft Most Valuable Professional award for the past three years and as a technical speaker at various industry events. Welcome Steve.
[Steve] Thanks. Thanks for having me.
[Fritz] So this new course of yours, so I guess it’s not that new anymore, it was–came out well over a month ago now. You get into networking, but it’s not sort of your traditional networking course it’s more, you know, what the develop–what a developers needs to know to do things like diagnose problems and understand how his application is working. And let me just give everyone a brief outline of the course, you start off with networking basics. You get into Name Resolution, IP routing, port connectivity, and network capture. So why don’t we start with–I know you speak at events and you target talks at developers a lot and you try to have this IT perspective which a lot of us find really useful. So what was your motivation for this course when you decided to build it?
[Steve] Well, so I’m an IT pro, you know, I work on servers and infrastructure all day. But for some reason, I ended up going to developer events more than IT events. And I think it largely stemmed from–I started off kind of working in doing public speaking and that type of stuff when I lived in a very a small area and there was really only developer events. So I’m very comfortable in the developer space. And I kind of bridge that gap. And one of the things I find developers often struggle with when I’m working with them is, you know, when they, for example, they can’t get to their web server, they sometimes struggle with how to resolve that issue. And so they rely heavily on their IT pro. And especially if you’re in smaller development shop, you might not have IT pro, you know, you might be it. So this course the kind of the genesis of it was, you know, I watch developers not be able to, you know, do basic network troubleshooting and–so this course is not going to teach you how to be a Cisco Engineer. And I’m not a Cisco Engineer, I can’t do anything on, you know, Cisco real networking equipment, but this is just basic network troubleshooting, you know, why can’t I reach X service.
[Fritz] Great! Well, I think it might be really useful if we just kind of start with that question, right? Imagine I’m the developer sitting at my desk and suddenly I can’t reach my web server. Why don’t you walk us through the steps I should take to actually resolve that?
[Steve] Right. So in the course, the first thing we talk about is just basic network topology. So that’s just more of an overview of, you know, how are networks laid out, what are IP addresses, things along those lines. From a–you know, I’m troubleshooting, why can’t I get to my web server? The first step we look at is do we have Name Resolution? So, you know, when you type in google.com or yourwebsite.com, your computer has to turn that into an IP address. So the first thing we look at is, you know, how does Name Resolution work, you know, what is DNS? When my computer tries to convert that name into an IP address, what’s the process it goes through? And so we look at, you know, how it goes to your DNS server and then your DNS server goes out to the root name servers and then eventually to, you know, the DNS servers for your domain name which then finally has the IP address that it gives it back to you. And we can look at some tooling like NsLookup and just kind of talk about the process. And really with Name Resolution, just understanding how Name Resolution works and understand–kind of reducing the, you know, kind of the magic behind it all and just, you know, exposing what it actually–you know, how it actually works helps a lot a lot of times you can run into like caching issues ’cause all DNS entries get cached on your computer on your DN–on all the DNS servers, they cache those entries. So understanding, you know, when you make a change, why does it take so long for it to manifest itself for me? Understanding how the host files works so they can override DNS from my local computer when I’m a migration that’s kind of the first step, you know, do I have Name Resolution? When I type in my website.com, is my web browser even trying to go the right place ’cause if it’s not, any–everything after that doesn’t matter. The next thing we look at is very briefly, we talked about how routing works. So how does, you know, I now know where I want to go. Does my computer–you know does the routers between me and the destination, does it have the right map? Does it route that traffic correctly? So we kind of talked about how that works, but we don’t really get into how to fix it ’cause quite frankly there is, you know, you as a developer or even me as a systems administrator, we can’t really fix it ourselves. We have to rely on our, you know, the networking professionals for that. So then the next step that we have some control under is–and really the route back to the routing, you know, that’s usually not the problem. So we usually don’t spend much time even having to troubleshoot that.
[Steve] So the next one is, you know, can I connect to the service that’s supposed to be there? So I figured out where it is, my traffic gets over there, now can I connect to the port we call it port connectivity? Can I connect to the port that service is running on? And so we looked at some basic tooling on how to check, you know, so the traffics made it to the web server. Now can it connect to the port that the web server is running on? So this is before determining, you know, does the web page render correctly? Does–is there something in my code that’s causing, you know, a 500 to be thrown or, you know, is there–am I getting a 404 because, you know, the resource says, “I think it’s this.” It’s well before that, it’s just, can I connect to, usually for a Microsoft-based developer, you know, can I connect to IIS?
[Steve] And that’s the only question we’re answering with port connectivity.
[Fritz] And I was glad to see you go through how to use Telnet in this course ’cause I can’t tell you how many times I’ve seen developers struggle with, you know, nothing is happening, what do I do? When they could just be dropping into Telnet session and poking around a little bit.
[Steve] Yeah, exactly. So often, you know, Internet Explorer is designed for normal people, not for computer people.
[Steve] And so Internet Explorer or any web browser, they want to make it user-friendly. Users don’t care about port connectivity, they should never know the concept of a port. So you kind of have to drop below the, you know, the GUI interface, open up maybe the oldest networking tool in existence, Telnet, and just see, you know, can I connect to the port? And then the next item around this troubleshooting is, so I can connect to the port, you know, it should be, but it’s not working for some reason. So there’s various troubleshooting steps we can take from there, but from a networking perspective, you know, doing a packet trace is kind of the next networking-based trouble shooting tool. So in this course, we look at two tools. The first one is general purpose, it’s called Wireshark. It’s a free open-source utility that lets you just see everything that’s happening on the network. So maybe we see in this scenario, you know, we connect to the web server and it’s returning–you know, we we’re able to see what it’s actually returning at a very low level. And then for a web-based specific one, or an HTML specific one, really, we can use a tool called Fiddler. So Fiddler ties into–basically acts as a proxy for your web browsers. And so anything you do in your web browser, it gives you a nice HTTP-specific diagnosis of–you’ll see what’s going on. You can see the redirects happening and the individual resources being pulled and kind of gives you an idea on what’s going on so maybe you see in Fiddler that, you know, you’re having some issue and you seeing that, you know, it’s redirecting you off to somewhere else that wasn’t maybe quite obvious in Internet Explorer because it just gives you this, you know, this very user-friendly error message as opposed to, you know, more of a very technical diagnostic of what the issue is.
[Fritz] All right. I know you give talks on this topic at many different places, do you see developers eyes light up when you describe some of these techniques that they wish they had a known a long time ago?
[Steve] Yeah, it’s funny I started doing this course, it was kind of suggested to me by someone who used to do it and they moved out of the area. And, you know, I thought it would be–I was doing it like at a code camp and I thought, you know, I might get a few people to show up. And quite frankly, it’s one of my more popular sessions I do at code camps. And yeah, people come up afterwards and they’re just like, “Oh, that’s how it works.” You know, I spent–you know they’re spending a lot of time not really understanding things, understanding the basics and, you know, they can do amazing thing in code, you know. They can do what most normal people consider magic when it comes to code. But to them, you know, basic networking skills are magical. And just, you know, reducing networking from something magical to just some thing that’s, you know, understandable and easy to troubleshoot is just, you know, what really–that’s the key to this course, that’s the angle.
[Fritz] Right. Well, that’s great! So any developers out there listening to this, if you don’t know how to use Telnet or are looking for–to improve your networking diagnostic skills, definitely want to take some time and check it out. This is Steve Evans with his course TCP/IP Networking for Developers. Thanks very much Steve.
[Steve] Thanks Fritz.
About the Author
Paul Ballard is a Chief Architect specializing in large scale distributed system development and enterprise software processes. Paul has more than twenty years of development experience including being a former Microsoft MVP, a speaker at technical conferences such as Microsoft Tech-Ed and VSLive, and a published author. Prior to working on the Windows platform, he built software using a vast array of technologies including Java, Unix, C, and even OS/2.