получить доступ и изменить зарезервированные биты в заголовке tcp - PullRequest
2 голосов
/ 09 ноября 2010

в rfc793, раздел 3.1, заголовок TCP-заголовка имеет 6 зарезервированных битов, которые уменьшены до 4 зарезервированных битов при rfc3168 .Как я могу получить доступ и изменить эти биты в Linux или с программой или даже как я могу написать программу для этой цели?

1 Ответ

2 голосов
/ 10 ноября 2010

Стандартный API сокетов не позволяет приложениям напрямую изменять отдельные флаги в заголовке TCP.

Я могу придумать пару возможных подходов к этому:

  • Напишите сетевое устройство TUN / TAP, которое выполняет необходимые изменения заголовка для пакетов, проходящих через него, прежде чем пересылать их на реальное сетевое устройство.Ядро настроено на отправку всех исходящих пакетов через ваше устройство TUN / TAP.

  • Используйте сокет PF_PACKET для создания и отправки полностью пользовательских пакетов TCP из пространства пользователя.Вы будете нести ответственность за реализацию всех IP и TCP самостоятельно, включая такие вещи, как повторная сборка фрагмента IP.Я не рекомендую этого, если только вы не хотите запустить несколько пакетов, а не установить полное TCP-соединение.

  • Создайте модуль netfilter (iptables), который реализует флаг TCPцель изменения.Вы можете сделать это довольно легко, основываясь на существующем модуле ipt_ECN.c, который содержит всего 146 строк.

...