Установка поля флагов заголовка IP

Комбинатор с фиксированной точкой (или оператор с фиксированной точкой) - это функция высшего порядка, которая вычисляет фиксированную точку других функций. Эта операция актуальна в теории языка программирования, потому что она позволяет реализовать рекурсию в форме правила перезаписи, без явной поддержки со стороны движка языка. (Википедия)

5
задан user83753 23 June 2009 в 23:33
поделиться

3 ответа

Я предполагаю, что в поле флагов фактически установлено значение 2 = b010 вместо 4 - флаги, равные 4, являются недопустимым IP-пакетом. Помните, что флаги - это 3-битное значение в IP-заголовке . Я ожидал увидеть датаграммы UDP со значением флагов 2, что означает «Не фрагментировать».

Что касается вашего вопроса, я не верю, что есть способ установить флаги IP напрямую, не используя все способ использования сырых сокетов . Я бы не стал беспокоиться об этом, поскольку у большинства приложений действительно нет веских причин напрямую гадить с заголовками IP или даже UDP / TCP.

2
ответ дан 14 December 2019 в 01:14
поделиться

Вот маршрут, который я выбрал. Я перешел по ссылке, опубликованной SashaN в комментариях к ответу Д.Шули, и немного узнал о том, почему в UDP-пакетах Linux установлен бит «не фрагментировать». Оказывается, это как-то связано с обнаружением PMTU. Короче говоря, вы можете очистить бит «Не фрагментировать» из своих UDP-пакетов в Python, используя функцию setsockopts в объекте сокета.

import socket
IP_MTU_DISCOVER   = 10
IP_PMTUDISC_DONT  =  0  # Never send DF frames.
IP_PMTUDISC_WANT  =  1  # Use per route hints.
IP_PMTUDISC_DO    =  2  # Always DF.
IP_PMTUDISC_PROBE =  3  # Ignore dst pmtu.
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("10.0.0.1", 8000))
s.send("Hello World!") # DF bit is set in this packet
s.setsockopt(socket.SOL_IP, IP_MTU_DISCOVER, IP_PMTUDISC_DONT)
s.send("Hello World!") # DF bit is cleared in this packet
6
ответ дан 14 December 2019 в 01:14
поделиться

конструкция может сработать?

1
ответ дан 14 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: