🤔 Network: В чем разница между 127.0.0.1 и 0.0.0.0?
Классический вопрос на собеседовании и частая ошибка в конфигах Nginx/Docker. Оба адреса относятся к "этому компьютеру", но работают они принципиально по-разному.
1. 127.0.0.1 (Localhost)
Суть: Loopback-интерфейс.
Как работает: Трафик никогда не покидает хост. Он даже не доходит до сетевой карты.
Кейс: Вы запускаете базу данных и хотите, чтобы к ней мог подключиться только ваш локальный бэкенд.
Конфиг: bind-address = 127.0.0.1
2. 0.0.0.0 (Wildcard)
Суть: "Все доступные интерфейсы".
Как работает: Сервис начинает слушать на всех IP-адресах, которые есть у сервера (и на локальном 127.0.0.1, и на внешнем Ethernet/Wi-Fi).
Кейс: Вы запускаете веб-сервер, который должен быть доступен из интернета.
Конфиг: listen 0.0.0.0:80
☠️ Где ошибаются: Если вы в Docker или базе данных напишете 0.0.0.0 вместо 127.0.0.1, вы можете случайно открыть порт для всего интернета (если фаервол не настроен). Правило архитектора: Всегда биндите сервисы на 127.0.0.1, если нет явной причины пускать мир внутрь.
#network #security #theory #bestpractice #interview
Классический вопрос на собеседовании и частая ошибка в конфигах Nginx/Docker. Оба адреса относятся к "этому компьютеру", но работают они принципиально по-разному.
1. 127.0.0.1 (Localhost)
Суть: Loopback-интерфейс.
Как работает: Трафик никогда не покидает хост. Он даже не доходит до сетевой карты.
Кейс: Вы запускаете базу данных и хотите, чтобы к ней мог подключиться только ваш локальный бэкенд.
Конфиг: bind-address = 127.0.0.1
2. 0.0.0.0 (Wildcard)
Суть: "Все доступные интерфейсы".
Как работает: Сервис начинает слушать на всех IP-адресах, которые есть у сервера (и на локальном 127.0.0.1, и на внешнем Ethernet/Wi-Fi).
Кейс: Вы запускаете веб-сервер, который должен быть доступен из интернета.
Конфиг: listen 0.0.0.0:80
☠️ Где ошибаются: Если вы в Docker или базе данных напишете 0.0.0.0 вместо 127.0.0.1, вы можете случайно открыть порт для всего интернета (если фаервол не настроен). Правило архитектора: Всегда биндите сервисы на 127.0.0.1, если нет явной причины пускать мир внутрь.
#network #security #theory #bestpractice #interview
🤯 Load Average: Почему 1.0 — это не всегда 100% CPU?
Мы видим в htop параметр Load Average: 4.0 (на 4 ядрах). Новички думают: "Ага, процессор загружен на 100%!". Сеньоры знают: "Не факт. Возможно, это диск умирает".
В чем подвох: В Linux в расчет Load Average (LA) попадают процессы в двух состояниях:
R (Running/Runnable): Реально считают на CPU или стоят в очереди к нему.
D (Uninterruptible Sleep): Ждут ввода-вывода (Disk I/O, Network NFS).
Аналогия с кассой:
Состояние R: Очередь людей к кассе. Кассир (CPU) работает на износ.
Состояние 😧 Кассир свободен, но покупатель ушел взвешивать бананы и не возвращается. Очередь стоит и ждет его. CPU простаивает (iowait), но LA растет!
Как отличить? Смотрите в vmstat 1.
Колонка r (run): Высокая? Проблема в CPU (код).
Колонка b (blocked): Высокая? Проблема в Диске/IO.
Не меняйте процессор, если у вас тормозит жесткий диск.
#linux #kernel #loadaverage #performance #theory #interview
Мы видим в htop параметр Load Average: 4.0 (на 4 ядрах). Новички думают: "Ага, процессор загружен на 100%!". Сеньоры знают: "Не факт. Возможно, это диск умирает".
В чем подвох: В Linux в расчет Load Average (LA) попадают процессы в двух состояниях:
R (Running/Runnable): Реально считают на CPU или стоят в очереди к нему.
D (Uninterruptible Sleep): Ждут ввода-вывода (Disk I/O, Network NFS).
Аналогия с кассой:
Состояние R: Очередь людей к кассе. Кассир (CPU) работает на износ.
Состояние 😧 Кассир свободен, но покупатель ушел взвешивать бананы и не возвращается. Очередь стоит и ждет его. CPU простаивает (iowait), но LA растет!
Как отличить? Смотрите в vmstat 1.
Колонка r (run): Высокая? Проблема в CPU (код).
Колонка b (blocked): Высокая? Проблема в Диске/IO.
Не меняйте процессор, если у вас тормозит жесткий диск.
#linux #kernel #loadaverage #performance #theory #interview
🤝 Network: TCP 3-Way Handshake (База)
Мы говорим "установил соединение". А что происходит под капотом? Любое TCP-соединение (SSH, HTTP, RDP) начинается с Тройного рукопожатия. Если вы не понимаете этот процесс, вы не сможете траблшутить фаерволы.
Три шага:
1. SYN (Synchronize): Клиент шлет пакет серверу. "Привет, хочу поговорить. Мой номер очереди 100."
* Если здесь потеря — сервер недоступен или порт закрыт.
2. SYN-ACK (Synchronize-Acknowledge): Сервер отвечает. "Привет, слышу тебя (ACK 101). Давай говорить, мой номер 500 (SYN)."
* Если здесь потеря — сервер перегружен или блокирует обратный трафик.
3. ACK (Acknowledge): Клиент подтверждает. "Ок, твой номер 500 принял (ACK 501). Погнали передавать данные!"
Почему это важно: DDoS атака SYN Flood работает именно здесь: атакующий шлет миллионы
#network #tcp #theory #handshake #security #interview #basics
Мы говорим "установил соединение". А что происходит под капотом? Любое TCP-соединение (SSH, HTTP, RDP) начинается с Тройного рукопожатия. Если вы не понимаете этот процесс, вы не сможете траблшутить фаерволы.
Три шага:
1. SYN (Synchronize): Клиент шлет пакет серверу. "Привет, хочу поговорить. Мой номер очереди 100."
* Если здесь потеря — сервер недоступен или порт закрыт.
2. SYN-ACK (Synchronize-Acknowledge): Сервер отвечает. "Привет, слышу тебя (ACK 101). Давай говорить, мой номер 500 (SYN)."
* Если здесь потеря — сервер перегружен или блокирует обратный трафик.
3. ACK (Acknowledge): Клиент подтверждает. "Ок, твой номер 500 принял (ACK 501). Погнали передавать данные!"
Почему это важно: DDoS атака SYN Flood работает именно здесь: атакующий шлет миллионы
SYN , сервер ждет, отвечает SYN-ACK , но ACK в ответ не получает. Память сервера забивается "полуоткрытыми" соединениями, и он умирает.#network #tcp #theory #handshake #security #interview #basics
❤1
🔗 Symlink vs Hard Link: В чем реальная разница?
Мы все постоянно пишем
В Linux файл — это не имя. Файл — это набор данных на диске, у которого есть номер (Inode). А "Имя файла" — это просто указатель на этот номер.
Разница на пальцах:
1. Hard Link (ln file link): Это второе имя для того же самого Inode.
* Если удалить оригинальный файл — ссылка продолжит работать (данные не удалятся, пока на них указывает хоть одно имя).
* Ограничение: Нельзя делать на папки и между разными дисками.
2. Soft (Symbolic) Link (ln -s file link): Это новый файл, внутри которого написан путь к оригиналу.
* Если удалить оригинал — ссылка станет "битой" (указывает в пустоту).
* Плюс: Работает везде, даже между разными файловыми системами.
Как проверить: Команда
#linux #inodes #filesystem #theory #basics #interview
Мы все постоянно пишем
ln -s , создавая символические ссылки (Symlink). Но есть еще "Жесткие ссылки" (Hard Links). В чем соль? В Inode.В Linux файл — это не имя. Файл — это набор данных на диске, у которого есть номер (Inode). А "Имя файла" — это просто указатель на этот номер.
Разница на пальцах:
1. Hard Link (ln file link): Это второе имя для того же самого Inode.
* Если удалить оригинальный файл — ссылка продолжит работать (данные не удалятся, пока на них указывает хоть одно имя).
* Ограничение: Нельзя делать на папки и между разными дисками.
2. Soft (Symbolic) Link (ln -s file link): Это новый файл, внутри которого написан путь к оригиналу.
* Если удалить оригинал — ссылка станет "битой" (указывает в пустоту).
* Плюс: Работает везде, даже между разными файловыми системами.
Как проверить: Команда
ls -li покажет номер Inode в первом столбце. У хард-линков он одинаковый.#linux #inodes #filesystem #theory #basics #interview