Как проверить, что IP-заголовок или TCP / UDP заголовок находятся в соединении? - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть брандмауэр для обнаружения всех соединений. Когда у меня есть соединение от A до B, мы получаем много пакетов, отправляемых между A и B. И если мы делаем соединение от B к A, мы также получаем результат, такой же, как A-> B.

Я не знаю, как проверить, является ли каждый пакет тем соединением, которое было создано А или В.

Я захватил заголовок IP, заголовок TCP / UDP, но я не знаю, в каком поле это можно проверить.

1 Ответ

0 голосов
/ 05 декабря 2011

Поле порядкового номера - это то, что вам нужно.

struct tcphdr {
    unsigned short  th_sport;   /* source port */
    unsigned short  th_dport;   /* destination port */
    tcp_seq th_seq;         /* sequence number */
    tcp_seq th_ack;         /* acknowledgement number */
...
};
    packet A -> B

    A [th_seq=1] -> B
    B [th_seq=2, th_ack=1] -> A
    A [th_seq=3, th_ack=2] -> B
...