Якщо ви блокуєте всі вхідні з'єднання, як ви все ще можете користуватися Інтернетом?


22

Якщо ваш провайдер або брандмауер блокує всі вхідні з'єднання, як веб-сервери все ще можуть надсилати вам дані у ваш браузер? Ви надсилаєте запит (вихідний), а сервер надсилає дані (вхідні). Якщо ви блокуєте всі вхідні, як веб-сервер може відповісти?

А як щодо потокового відео та багатокористувацьких ігор, де він використовує UDP? UDP не пов’язаний, тому встановлення з’єднання не встановлено, тож як брандмауер або провайдер попрацюють з цим?


2
Блокувати всі вхідні телефонні дзвінки / Переадресувати всі вхідні телефонні дзвінки на голосову пошту? Це не заважає вам телефонувати до когось.
WernerCD

Відповіді:


43

"Вхідний блок" означає, що вхідні нові з'єднання заблоковані, але встановлений трафік дозволений. Тож якщо дозволені вихідні нові зв’язки , то вхідна половина розмови в порядку.

Брандмауер керує цим шляхом відстеження стану з'єднань (такий брандмауер часто називають "стаціонарним брандмауером"). Він бачить вихідний TCP SYN і дозволяє це. Він бачить вхідний SYN / ACK і може переконатися, що він відповідає вихідному SYN, який він побачив, і пропускає це через тощо. Якщо це дозволить тристоронній рукостискання (наприклад, це дозволено відповідно до правил брандмауера), це дозволить розмову. І коли він побачить кінець цієї розмови (FINs або RST), це з'єднання вимкне зі списку пакетів, які можна дозволити.

UDP робиться аналогічно, хоча він включає брандмауер, запам'ятовуючи достатньо, щоб зробити вигляд, що UDP має з'єднання або сеанс (що UDP не має).


1
Для UDP, оскільки фактичного з'єднання немає, брандмауер зазвичай відстежує IP-адресу призначення та порт вихідних пакетів UDP, і якщо є вхідний пакет з тим самим IP та портом, що і джерело, він вважатиме, що це відповідь, і нехай це буде в.
WhiteWinterWolf

17

@gowenfawr має зображення на високому рівні вниз. Однак я подумав, що я додам деякі подробиці щодо того, як виконується "відповідність" для відстеження з'єднання, оскільки це може здатися магією для непосвячених.

Кожне TCP-з'єднання має номер порту кожної сторони. Як знає більшість фахівців, HTTP-сервери працюють на порту 80. Коли ваш браузер підключиться до веб-сервера, він попросить операційну систему створити "локальний" номер порту, який буде чимось випадковим, як 29672, який не використовується жодним іншим TCP-з'єднання з цього комп’ютера (і ОС може це зробити, оскільки він знає про всі активні TCP-з'єднання). Тоді початковий пакет налаштування TCP буде надісланий з ip (IP_YOURS) та номером порту 29672 вашого пристрою на ip (IP_WEBSERVER) веб-сервера та номер порту 80. У цей момент загрозливий брандмауер скаже «ага, майбутні пакети з порту IP_WEBSERVER 80, перехід на порт 29672 IP_YOURS, не є новими підключеннями, вони є відповідями на існуюче з'єднання, і їх потрібно дозволити ". Державні брандмауэры підтримують стіл,


3
Це здебільшого правильно, але, як пара другорядних точок, номери портів зупиняються на 65535 (це 16-бітні непідписані номери), і, крім часу очікування, пакети із встановленими прапорами FIN або RST можуть також сигналізувати про те, що TCP з'єднання закрито.
Рейраб

@reirab О, так, так, номер порту не вдається. Закриття Wrt, звичайно, можна було б перевірити прапорці TCP, але, враховуючи можливі втрати пакетів і повторну передачу близьких послідовностей, є досить складним, що я вважаю, що більшість брандмауерів просто замінюють найменш використовуваний останній запис таблиці, а не зберігають слід точно відстежувати.

@atsby Ви завжди можете редагувати свою публікацію та замінювати номери портів чимось більш підходящим?

Все це - чудова інформація. Просто хотів додати одне до портів, обговорених вище коментарями. Вони називаються «ефемерними портами», і їх діапазон визначається ядром, характерним для кожної ОС. В Linux ви можете отримати їх за "cat / proc / sys / net / ipv4 / ip_local_port_range" --- діапазон за замовчуванням "32768 до 61000"
Arul Selvan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.