2013-03-26 3 views
-2

Я закодировал некоторую программу, которая претендует на то, чтобы установить соединение, а затем отправить пакет данных; используя raw-сокеты в linux и язык C.отправка необработанных данных с помощью сырых сокетов в linux (PSH-ACK)

К сожалению, я реализовал все в порядке, так как соединение установлено. Проблема в том, что я не могу тратить столько времени, чтобы угадать, как нужно заполнять psh-ack (пакет данных), получая ACK с сервера, а также чтобы видеть данные в выходном буфере netcat ...

так, пожалуйста, может ли кто-нибудь помочь отформатировать пакет? Я потратил так много времени, и дать вам полный журнал трафика будет легко.

Заранее спасибо. Надеюсь на предложение в раннее время ...;).

PS: если не ясно, я притворяюсь, что реализую свой собственный tcp-стек пользовательского пространства только для ускорения процессов tcp-сетей, просто для внедрения сетевого процесса в неблокирующее выполнение программы и быстрого набора результатов сетевых процессов.

Как вы, возможно, знаете, Linux-пакеты автоматически отправляют ответ на сервер, который отправил и SYN_ACK, но RST-соединение, и не удается установить соединение путем реализации стека TCP. Итак, я должен сказать, что я использую защиту grsec под названием «Защита DoS от TCP/UDP blackhole», которая не позволяет ядру Linux отправлять нежелательные ответы на «некогерентный» сетевой трафик.

Это все.

ответ

0
ip.len = tcp_data_sz + tcphdr_sz + iphdr_sz 

tcp.id = id + 1 
tcp.seq = same as ACK of three way handshake 
tcp.ack_seq = same as ACK of three way handshake 

pseudo_hdr.len = tcp_data_sz + tcphdr_sz 

tcp.check = (size: psehdr + tcphdr + tcpdata) (pad with 00's until size % 2 = 0). 

это ссылки были полезны: http://www.arcesio.net/checksum/checksumTCP.html (на испанском языке наиболее & английский отредактирован).

спасибо всем 4 просмотра.

Linuxios: спасибо за ваш замечательный комментарий, теперь я нашел свое решение по-своему. (мой метод быстрее обычного интерфейса linux :).

+0

flags: PSH & ACK. – user1189104