Отправка http-пакета с использованием sharppcap или packetdotnet

По причинам, связанным с тестированием, я пытаюсь сгенерировать http-пакет с другим IP-адресом источника и отправить его по назначению.

Я собираюсь использовать sharppcap или packetdotnet.

Нашли хорошие образцы здесь:

http://www.tamirgal.com/blog/post/SendTcpSynExamplecs.aspx

и здесь:

http://pcapdotnet.codeplex.com/wikipage?title=Pcap.Net%20Tutorial%20-%20Sending%20Packets

Но я новичок в этой области, и мне нужна помощь:

  1. Что я должен сделать перед отправкой http пакета? сделать TCP-рукопожатие или что? Можете ли вы опубликовать примеры о вызове URL с помощью глагола post, отправив пакет http?

  2. Для выполнения некоторых стресс-тестов мне нужно изменить исходный IP-адрес, и ответ получателя для меня не важен. Так что меняя
    адрес источника достаточно? как насчет контрольной суммы и других свойств?

Любой образец или ссылка будут полезны.

2 ответа

Решение

Вам нужно будет установить tcp-соединение с сервером, прежде чем вы сможете отправлять полученный http-пакет. Это небольшая работа по созданию из уровня ip того, что вам может понадобиться для такого рода тестирования.

Хотя есть инструменты, которые будут генерировать http сессии для вас. Обычно их также можно настроить для открытия определенного количества одновременных http-сессий, если вы пытаетесь это сделать, когда упоминаете об изменении исходного IP-адреса. Это может сделать что-то вроде http://code.google.com/p/httperf/ или http://httpd.apache.org/docs/2.2/programs/ab.html.

Делать, как вы описываете, невозможно, как указал Крис Морган в своем ответе. Причины таковы:

  • Протокол HTTP (для практических целей - всегда) работает по TCP-соединению
  • TCP-соединение должно выполнить рукопожатие (3-пакетный взаимный обмен - клиент-> сервер-> клиент-> сервер), прежде чем фактические данные могут начать течь
  • Из-за рукопожатия замена IP-адреса источника HTTP невозможна - для установления соединения вам необходимо предоставить действительный IP-адрес (или вы не получите второй пакет и не сможете отправить третий требуемый пакет)
  • Исходный IP-адрес будет взят из установленных свойств соединения, поэтому подделать его после установления соединения также невозможно.

Существует целый ряд особых случаев, в которых это частично возможно (X-Forwarded-For и аналогичные заголовки в HTTP-запросе), но это необходимо исследовать для каждого отдельного приложения.

Итак, вкратце: то, что вы запрашиваете, невозможно (за исключением некоторых очень особых случаев), вы можете прочитать больше об установлении TCP-соединения в этой статье Wiki

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