
The header contains "meta" data about the packet and its data. Each packet has an essential structure made up of two components: the Header and the Data. Messages over IP are often communicated in "packets", which are small bundles of information (2^16 bytes). It is the basic protocol that instructs us on how almost all communication across internet networks must be implemented. Think of this as the fundamental layer of protocols. You may have heard of the most common network protocols of the internet era - things like HTTP, TCP/IP etc. An example of a network is our beloved world wide web. Thus, network protocols are protocols that govern how machines and software communicate over a given network. But the communication also needs some rules, structure, and agreed-upon procedures. A kind of "official procedure" or "official way something must be done".įor people to connect to machines and code that communicate with each other, they need a network over which such communication can take place. It means a system of rules and regulations that govern something. "Protocols" is a fancy word that has a meaning in English totally independent of computer science. Let's get started! Section 1: Networks and Protocols Section 10: Polling, Streaming, Sockets.

Section 2: Storage, Latency & Throughput.Section 1: Networks & Protocols (IP, DNS, HTTP, TCP etc).And I've designed this guide to be chunked down into pieces that are easy to do spaced repetition with. I've found spaced learning and repetition to be incredibly valuable tools to learn and retain information. I've broken this guide into bite-sized chunks by topic and so I recommend you bookmark it. I've listed some of my favourite resources at the very bottom of this article. But if you're a junior or mid-level developer, this should give you a strong foundation.įrom there, you can dig deeper with other resources. This is not an exhaustive treatment, since System Design is a vast topic. It covers the essential software system design concepts you need to reason your way through distributed systems, and it helped me get into Google as an engineer, after more than 15 years of being a corporate lawyer.

I wrote this in-depth guide when preparing for my FAANG software engineering interviews. You may have heard the terms "Architecture" or "System Design." These come up a lot during developer job interviews – especially at big tech companies.
