Компьютерные сети
Что это такое
Сеть — это набор машин, которые договорились, как передавать друг другу небольшие куски данных. Куски эти называются пакетами, схемой адресации служит IP, два главных способа передать поток таких кусков — TCP и UDP, а вести на одной машине много разговоров сразу позволяет порт. Имя в адрес превращает система имён DNS, и происходит это до того, как начнётся всё перечисленное.
Почему это важно
Каждый запрос вашей программы покидает процесс и пересекает этот слой — и именно здесь обычно и прячется задержка. Эндпоинт может быть эффективен в каждой строке своего кода и всё равно занимать 400 миллисекунд, потому что ждёт четыре круговых обхода. Знание слоя подсказывает, какое число атаковать: соединение, поиск имени или полезную нагрузку, — и вдобавок делает словарь честным: «тайм-аут» здесь означает конкретную вещь, а «в соединении отказано» — другую, и исправления у них разные.
Что в этом треке
- Пакеты, TCP/IP и порты (01-cs-fundamentals/03-computer-networks/01-packets-tcp-ip-and-ports) — что на самом деле путешествует, как над ненадёжными пакетами строится надёжный поток и как порты разделяют разговоры.
- DNS и путь запроса (01-cs-fundamentals/03-computer-networks/02-dns-and-the-path-of-a-request) — разрешение имени, его кэширование и подсчёт круговых обходов до первого байта ответа.
Предварительные требования
Нет.
Что читать дальше
- Основы сетей (HTTP / DNS / TLS) (06-cloud-devops/10-networking-fundamentals-http-dns-tls) — прикладные протоколы поверх этих пакетов, до которых эта запись намеренно не доходит.
- Операционные системы (01-cs-fundamentals/15-operating-systems) — сокет здесь оказывается файловым дескриптором, поэтому этот слой встречается с тем на системном вызове.
- Конкурентность и асинхронное программирование (01-cs-fundamentals/05-concurrency-async-programming) — почему ожидание сети — классический случай для неблокирующего кода.