Подделанные пакеты сброса TCP

Я пытаюсь лучше понять дебаты о нейтралитете в сети. Некоторые обвиняют интернет-провайдеров в отправке пакетов RST конечным хостам для блокирования трафика BitTorrent. Что именно это означает?

У меня есть базовое понимание HTTP и TCP/IP (я программист), но администрирование сервера - это то, в чем я определенно не эксперт. Спасибо.

2 ответа

Решение

В пакете TCP есть несколько флагов (SYN, ACK, PSH, RST и FIN). Обычно они используются как часть настройки и разрушения обычных TCP-соединений. Один из флагов (RST) используется, когда возникла проблема с соединением, и один конец должен ненормально прервать соединение. Когда другой конец получает соединение RST, он немедленно разрывает соединение. Это то, что происходит, когда вы получаете сообщение об ошибке "Сброс соединения по одноранговой сети".

Это означает, что вы можете закрыть любое TCP-соединение, если вы можете вставить RST-пакет в TCP-поток. Однако, чтобы сделать это, вы должны иметь возможность либо перехватить действительный пакет, либо угадать различные счетчики, используемые для отслеживания отдельных TCP-соединений.

Протокол TCP управляется конечным автоматом, реализованным в сетевом стеке операционной системы. Будучи программистом, концепция FSM должна быть, по крайней мере, несколько знакомой.

Подделка пакета TCP RST (то есть дейтаграммы IP с поддельным IP-адресом источника, показывающего, что он поступает с удаленного сервера, содержит сегмент TCP с установленным битом RST и соответствующими номерами SEQ/ACK) - это то, что любой на маршруте от клиента к серверу может сделать так, чтобы соединение TCP было закрыто принимающей операционной системой. Клиент получает пакет, и конечный автомат "сбрасывает" соединение, закрывая его и предотвращая дальнейшую передачу данных.

Подделанный пакет неотличим от "реального" TCP-пакета RST, поступающего с этого удаленного хоста. Без использования протокола, обеспечивающего аутентификацию (IPSEC AH или аналог), вы ничего не сможете сделать, чтобы помешать какой-либо промежуточной стороне создавать такие поддельные пакеты.

Некоторые интернет-провайдеры (предположительно?) Подделывают такие пакеты TCP RST, чтобы предотвратить "чрезмерное" использование своих "каналов" в Интернет пользователями таких приложений, как Bittorrent. Они используют различные аппаратные / программные средства для выполнения "глубокой проверки пакетов" (см. http://en.wikipedia.org/wiki/Sandvine для примера одного поставщика такого "решения") для обнаружения таких потоков трафика.

Есть много политики вокруг дебатов "сетевого нейтралитета", большая часть которых выходит далеко за рамки обсуждения Server Fault. В глубине души, я думаю, это просто еще одно проявление битв Netheads против Bellheads, которые бушуют годами.

Другие вопросы по тегам