8 ms·
Ask HN: Good books/courses to learn networking essentials for web developers?
With 'networking essentials' I mean software components which constitute the infrastructure which a webapp lives within: e.g reverse proxy, DMZ, firewall, etc.
- scudd 5y agoI think Beej's Guide to Network Programming is IMO hands down the best resource I've come across: https://beej.us/guide/bgnet/ https://beej.us/guide/bgnet/ It also doubles as a very great introduction to C, if that something you're interested in. It's funny because both C and socket level programming are often a barrier, or at least they were for me. It's an attestant to the quality of Beej's guide that he introduces both simultaneously, and makes it very approachable. This is one of those sources that helped me disproportionately grow as a programmer in a short period of time.
- superchink 5y ago+1 for Beej’s. I took a networking course at UCLA that used it as the textbook and it was great.
- joshxyz 5y agoLooked to upvote this
- ruben81adelaide 5y agoTry the CCNA course of CISCO, “The Complete Network Fundamentals”. I did one of those years ago. It’s a great course to achieve a good base of networking. CCNA is just the first step to a good introduction, if you like it, you can expand your knowledge with more.
- Scarbutt 5y agoThis. A CCNA book is great start of the basics.
- nickelcitymario 5y agoI did the CCNA course in high school, and it's where I learned how to troubleshoot. It has served me well beyond the scope of networking.
- itsmemattchung 5y agoI took CCNA about 10 years ago and I would say its hands down one of the best certification programs and applies to my day-to-day as a software engineer. I also wrote about why all software developers should have some basic network troubleshooting skills here: https://dev.to/memattchung/why-all-developers-should-learn-how-to-perform-basic-network-troubleshooting-2ihj https://dev.to/memattchung/why-all-developers-should-learn-h...
- manuu80 5y agoMe too. Took it in classroom from a Cisco partner when i was a junior webdev 20 years ago and not exposed to any network equipment. instructor was a network admin at big Co and made us crimp ethernet Jacks and shared a Lot of stuff between the lines. most of things i learned there still applies in my daily job as Solution arch
- teleforce 5y agoI'd recommend Kurose's Computer Networking: A Top Down Approach (now in 8th edition) book if you want to learn a proper computer networks concepts because this is the definitive textbook. If you want the practical aspects of computer networks, you can try Niall Manfields' Practical TCP/IP designing, using and troubleshooting TCP/IP networks on Linux and Windows book. Granted it's a bit old (2nd edition is essentially the same 1st edition), but because you are after the essentials it should be more than fine. Here's the review of the book: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1220683 https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=122...
- yagizdegirmenci 5y agoYes! Kurose's book was the first book that i read about networking and it gave me a pretty good level of foundational knowledge, highly recommended.
- mistahenry 5y agoI read Kurose’s book in college and recommend it as the perfect book for this topic. As a neophyte at the time, I remember really drilling into the details of TCP and just being in awe of how well thought out the whole system was. This book laid such a good foundation for my career as a software engineer.
- kroltan 5y agoCan recommend too, it is a great book indeed. Read it while interning, I knew some amount of programming but had never really figured out networks.
- danielmarkbruce 5y ago+1. I read a few different books and Kurose was the best.
- tsjq 5y ago+1 That's a fantastic reco. I've read this book..
- wink 5y ago
- shubik22 5y agoI’d recommend High Performance Browser Networking by Ilya Grigorik[0]. It’s definitely less in-depth/comprehensive than some of the other suggestions here but I’ve found it to be a really clear, accessible exploration of networking concepts relevant for web development. [0] https://www.amazon.com/dp/1449344763 https://www.amazon.com/dp/1449344763
- jakub_g 5y agoThere's not much about firewalls etc. there IIRC, more about low level concepts like DNS, TCP and so on. Anyway it's a great book. You can also read online at https://hpbn.co https://hpbn.co
- eatonphil 5y agoIt's one of the most practical and in-depth books even among others shared in this thread so far. It's in the top four books I'd recommend every developer to read (particularly because it's so practical)!
- mephitix 5y agoOut of curiosity, what are your other top 4 books?
- eatonphil 5y agoAs luck would have it, my blog on Github pages is down. So here's the post describing the four in markdown. Tldr; Designing Data Intensive Applications, Effective Python, The Google SRE book, and High Performance Browser Networking. https://github.com/eatonphil/notes.eatonphil.com/blob/master/posts/books-developers-should-read.html https://github.com/eatonphil/notes.eatonphil.com/blob/master...
- mephitix 5y agoThis is great, thanks! +1 for both data intensive apps and Google SRE books. The other two I haven’t checked out yet
- JanMa 5y agoWhen it comes to networking fundamentals I can definitely recommend "Computer Networks" by Andrew Tanenbaum[0]. [0]: https://www.pearson.com/us/higher-education/program/Tanenbaum-Computer-Networks-5th-Edition/PGM270019.html https://www.pearson.com/us/higher-education/program/Tanenbau...
- read_if_gay_ 5y agoThis and the Ross/Kurose one are definitely the canonical textbooks, but Beej's Guide is a lighthearted and more easily digestible alternative if you don't want to learn everything in detail.
- sam56718 5y agoI found this series to be very useful: https://www.practicalnetworking.net/series/packet-traveling/packet-traveling/ https://www.practicalnetworking.net/series/packet-traveling/...
- oliverx0 5y agoHere are 2 recommendations: https://hpbn.co/ https://hpbn.co/ https://beej.us/guide/bgnet/html//index.html https://beej.us/guide/bgnet/html//index.html
- ramesh31 5y agoUpvoted for beej. An absolute must read for anyone that works with a TCP/IP based stack.
- captn3m0 5y agoUdacity has a Networking for Web Developers course[0], but I'd recommend trying out things (such as running a simple web-app on your own server). Things like: - Running https://certbot.eff.org/instructions https://certbot.eff.org/instructions - Trying out a few different web servers (apache/nginx/caddy) - Playing around with load-balancers on $cloud_provider. - Spending time with docker networking (https://docs.docker.com/config/containers/container-networking/ https://docs.docker.com/config/containers/container-networki...) - Playing around with various X-Forwarded header options in the context of your application For a web developer, the most useful skill is knowing what each and every component on the pipeline is doing before your code executes on the request. As a common eg, if your application seems to be loading stylesheets from `http:// http://` instead of `https:// https://` despite being loaded over HTTPS, it is often because your application didn't honor the X-Forwarded-Proto header (which most frameworks will do for you). Similarly, seeing a local IP address (192.168.x.y for eg) on a log, and realizing that you should be using the X-Forwarded-Ip by "trusting your proxy"[1] and doing it securely[2].[3]. [0]: https://www.udacity.com/course/networking-for-web-developers--ud256 https://www.udacity.com/course/networking-for-web-developers... [1]: https://expressjs.com/en/guide/behind-proxies.html https://expressjs.com/en/guide/behind-proxies.html [2]: https://shubs.io/enumerating-ips-in-x-forwarded-headers-to-bypass-403-restrictions/ https://shubs.io/enumerating-ips-in-x-forwarded-headers-to-b... [3]: https://blog.ircmaxell.com/2012/11/anatomy-of-attack-how-i-hacked.html https://blog.ircmaxell.com/2012/11/anatomy-of-attack-how-i-h...
- arman_ashrafian 5y agoI really like this textbook that was used in my undergrad networking course. https://book.systemsapproach.org/index.html https://book.systemsapproach.org/index.html The “perspective” sections at the end of every chapter are really interesting!
- nikisweeting 5y agoWas about to post this as well. I think these two articles are also a great launch point before diving into the whole stack: - https://apenwarr.ca/log/20170810 https://apenwarr.ca/log/20170810 The World in Which IPv6 was a good design (which is actually a mini CS history course on networking in disguise) - https://tailscale.com/blog/how-nat-traversal-works/ https://tailscale.com/blog/how-nat-traversal-works/
- paulcole 5y agoHow to Win Friends & Influence Routers is a classic for a reason.
- isbvhodnvemrwvn 5y agoNot the reason for OPs question...
- tootie 5y agoNetworking is probably not what you're looking for. You are probably more interested in DevOps and architecture. Topics like DNS and edge caching. Reverse proxies are typically web servers (ie nginx) or cloud services like API Gateways. Things like TCP are rarely relevant unless you're doing serious micro optimization.
- imnitishng 5y agoIDK about OP but this is exactly what I'm looking for. Do you have some good books/courses for the same?
- news_hacker 5y agoI was also interested in this, instead of all the TCP/IP resources mentioned here. You may find the Interconnect section of this book helpful: https://pragprog.com/titles/mnee2/release-it-second-edition/ https://pragprog.com/titles/mnee2/release-it-second-edition/ It covers: - DNS - Load Balancing - Demand Control - Network Routing - Discovering Services - Migratory Virtual IP Addresses
- tootie 5y agoI've never been much for following courses and really the best way to learn is practice. Working with a cloud stack like AWS is a great start. Try to setup a an app server behind a load balancer, CDN (Cloudfront) and DNS (Route53). Read up on VPCs, what a CIDR block denotes. The core functions of these kinds of appliances is actually really simple. Just routing, caching and occasionally transforming requests. The ins and outs of specific products (ie CloudFront vs Cloudflare) is going to most useful and you get that from reading product docs. That and learning to use command-line tools like curl, dig and maybe tracert if you're feeling fancy.
- inopinatus 5y agoOn the contrary, I’d say the details of TCP/IP are inseparable from the design, implementation, and practical understanding/configuration of these elements.
- jijji 5y agoTCP/IP Illustrated, Vol. 1: The Protocols by W. Richard Stevens [0] [0] https://www.amazon.com/TCP-Illustrated-Vol-Addison-Wesley-Professional/dp/0201633469 https://www.amazon.com/TCP-Illustrated-Vol-Addison-Wesley-Pr...
- deleted 5y ago[deleted]
- joethrow29292 5y agoThis, and any book by W. Richard Stevens. I also cut my teeth on Internetworking with TCP/IP by Comer. https://www.amazon.com/Internetworking-TCP-IP-One-6th/dp/013608530X https://www.amazon.com/Internetworking-TCP-IP-One-6th/dp/013...
- OminousWeapons 5y agoThis is my favorite networking book but I think it would be overkill for OP's needs. TCP/IP illustrated walks through basically every protocol in depth starting from layer 2 and it sounds like OP really just wants to understand the basics of network administration like what you would see in a CCNA exam, and even that might be excessive for their needs.
- netfortius 5y agoI was waiting for someone to post this.
- stakkur 5y agoNot a book, and I only have one (positive) data point from a coworker, but this free Udacity course tackles that subject: https://www.udacity.com/course/networking-for-web-developers--ud256 https://www.udacity.com/course/networking-for-web-developers...
- huy-nguyen 5y agoThis is an oldie but goodie: “ TCP/IP Network Administration (3rd Edition; O'Reilly Networking)” by Craig Hunt. However, I think nothing teaches networking better than making your own network devices from open source components, for example, creating routers/firewalls/access points from barebones Linux/Unix machines.
- tharkun__ 5y agoI came here looking for exactly this comment, otherwise to make it myself. Book _and_ setting it all up yourself part! To be fair, there is probably more up to date literature nowadays especially if you want to try and do it in 'condensed' format but this is how I first grasped this whole networking thing. I'm getting old, that was probably more than 20 years ago by now. I always wonder why many if not most of the devs I work with don't seem to actually understand even simple IPv4 and how their computer connects to the Internet. IP addresses, ports, firewalls, NAT, DNS, email, routing. I definitely don't know as much about this any longer as I used to, when I ran all this stuff at home/did networking admin at my company on the side but just knowing that something like STP and BGP exist and still underpin this all helps if you ask me, even if you totally forgot how BGP actually works in detail.
- orangefox 5y agoTCP/IP Guide http://www.tcpipguide.com/ http://www.tcpipguide.com/ is one of my favorites. Its free at the website and available as a book.
- Tester_rjb 5y agoTester
- deleted 5y ago[deleted]
- Tester_rjb 5y agotester
- spicyramen 5y agoI would start with Cisco CCNA it never gets old
- mattficke 5y agoThis is a little more idiosyncratic than the other recommendations, but the “Bite Size Networking” zine by Julia Evans is a really nice overview of networking tools on Linux. https://wizardzines.com/zines/bite-size-networking/ https://wizardzines.com/zines/bite-size-networking/
- nightchalk16 5y agoBen Eater Network Tutorial https://www.youtube.com/watch?v=XaGXPObx2Gs&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW https://www.youtube.com/watch?v=XaGXPObx2Gs&list=PLowKtXNTBy... tcp/ip rfc https://datatracker.ietf.org/doc/html/rfc1180 https://datatracker.ietf.org/doc/html/rfc1180 daryl's ip primer https://www.ipprimer.com/#/ https://www.ipprimer.com/#/
- rsclient 5y agoFor networking background and history, I came up with [this list](https://sunriseprogrammer.blogspot.com/2019/09/a-network-reading-list.html https://sunriseprogrammer.blogspot.com/2019/09/a-network-rea...) for some new people at work. It includes things "everyone" used to know: a little bit about internet history from the original sources, some of the most useful RFCs, and some stuff about certificates.
- giantrobot 5y agoBasic course: Networks are unreliable. Everyone's life gets worse when you ignore that fact. Thanks for coming to my TED talk.
- efortis 5y agoThis is my 2-server infrastructure (network and firewall) as it's in production. I'd start playing with it in two local VMs. https://blog.uidrafter.com/engineering/freebsd-jails-network-setup https://blog.uidrafter.com/engineering/freebsd-jails-network... As for books, Ivan Ristić's ModSecurity, although old, is full of tips for setting up reverse proxies.
- wonnage 5y agoDepending on your interests/needs, you might not find yourself actually writing network code, but dealing with it tangentially when things go weird. Programming blogs where people detail one of these weird edge cases and explain how they debugged them are super interesting and might be more relevant to your day-to-day work. Here's one I really like, you could learn a lot just reading through all the networking-related posts here: https://jvns.ca/#computer-networking https://jvns.ca/#computer-networking
- mobilio 5y agoThis book is amazing: https://designingforperformance.com https://designingforperformance.com because covers things that every designer/webdev should knows.
- rramadass 5y agoI think you are looking for a book which covers details of all the "Hardware Appliances/Software Components" which live in a network serving "Web based Applications". I don't know of any one book which will cover everything but you might find the following useful. * An Engineering Approach to Computer Networking: ATM Networks, the Internet, and the Telephone Network by S. Keshav - This is a great text on fundamentals of Networking. Nothing to do with the "Web" but everything to do with what underpins it. * Web Protocols and Practice: HTTP/1.1, Networking Protocols, Caching, and Traffic Measurement by Krishnamurthy and Rexford - Best book i have seen yet which explains the interplay between HTTP and the underlying TCP/IP protocol suite. * Load Balancing Servers, Firewalls, and Caches by Kopparapu.