Що відбувається з підключеннями TCP, коли я виймаю кабель Ethernet?


42

Для з'єднання TCP, коли я виймаю кабель і підключаюсь знову через 30-40 секунд, немає проблем зі втратою пакету. Але коли час підключення більше, ніж кілька хвилин, всі пакети втрачаються. Я знаю, що він працює з запущеним таймером повторної передачі, але я хочу знати, що саме відбувається, коли мережевий кабель відключений від мережі.


9
"що саме йде", дуже важко відповісти. У ці дні ОС може робити «розумні» речі, як-от виявити, що кабель вилучений. Видалення маршрутів до цієї мережі з таблиці маршрутів. Активізація нових маршрутів за допомогою бездротового зв'язку .... Все це перешкоджає простому універсальному поясненню.
Геннес

5
Ви шукали у відрізку для своїх відсутніх пакетів?
Даніель Р Хікс

4
Одне, що може статися напевно, - це те, що ваші поточні комунікації перериваються посеред середини
ereOn

Це залежить від ОС та її конфігурації. Для MS Windows спробуйте перейти в Google windows mediasense.
Забой Кампула

Відповіді:


60

За визначенням у шаруватої моделі як OSI або TCP / IP кожен шар працює незалежним і не знає нижчих шарів.

Коли ви виймаєте кабель, це фізичний зрив ( шар 1 ), тому майже негайно Ethernet ( шар 2 ) виявляє втрату сигналу (якщо ви знаходитесь у Windows, ви побачите, що дуже страшна спливаюча інформаційна мережа відключена )

IP ( шар 3 ) і TCP ( шар 4 ) цього не помітять, тому вони намагатимуться продовжувати працювати.

TCP не перерве встановлене TCP-з'єднання протягом певного періоду часу, оскільки, коли TCP надсилає дані, він очікує на відповідь ACK, і якщо він не надходить протягом певного періоду часу, він повторно передає дані.

TCP повторно передасть дані, передаючи їх в IP, хто передасть їх в Ethernet, хто не може їх надіслати і просто відкине.

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

Підключіть кабель до того, як це станеться, і все продовжуватиметься. Саме це робить TCP надійним і в той же час вразливим для DDos-атак.

Якщо в ОС є більше одного інтерфейсу (наприклад, ethernet і wi-fi), можливо, коли Ethernet знизиться, він спробує через wifi. Це залежить від налаштування маршрутизації, але загалом " TCP не буде про це знати ".

Основна структура DDoS-атак така: тисячі клієнтів відкривають кожен TCP-з'єднання кожні кілька секунд до сервера, а потім відмовляються від з'єднання. Кожне з’єднання TCP тривалий час залишається відкритим на сервері (витрачає цінні активи як порти TCP, виділяється пам'ять, пропускна здатність тощо), засмічуючи ресурси сервера для відвідування законних користувачів.


7
Ось що говорить модель, але я вважаю, що реальні ОС виявляють деякі збої і вбивають з'єднання негайно. Це просто корисна річ.
usr

8
@usr Чому було б корисно вбити кожне з'єднання лише тому, що хтось живить циклічний перемикач Ethernet, до якого підключений мій ПК?
CVn

9
@usr Відключення мережевої картки через адміністративні інтерфейси ОС - це зовсім інша операція порівняно з фізичним відключенням кабелю або іншим чином розривом зв'язку фізичного рівня. Будь ласка, не плутайте їх.
CVn

7
Крім того, якщо ви фактично не надсилаєте будь-які дані TCP під час відключення кабелю, він ніколи не помітить. Ось чому вам потрібно продовжувати надсилати постійні повідомлення - програми, які слухають лише коли-небудь, ніколи не дізнаються, чи зв’язок "вмирає". З позитивного боку це також означає, що якщо жодна з сторін не намагалася надіслати що-небудь під час відключення кабелю, з'єднання буде спрацьовувати нормально після підключення кабелю назад. TCP використовується набагато інакше, ніж це було розроблено :) Пам'ятайте експеримент TCP-over-Pigeon-mail :))
Луаан

11
@usr Це дійсно поганий вибір впровадження не дотримуватися стандартів. TCP-з'єднання можуть пережити тимчасові відключення мережі. Він призначений для цього. Насправді, раніше ви могли перезавантажити комп'ютер і все ще мати TCP-з'єднання, але це не завжди було практично. Ваше припущення про те, що всі хочуть відключитися, коли кабель прорветься, є помилковим, і не так, як системи були розроблені.
Бред
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.