![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Структура IP,TCP и ICMP [D7, WinXP]
-=Demon=- © (2004-04-08 19:39:00)Всем привет. Народ если не сложно покажите как выглядет структура IP,TCP и ICMP. И как их склеивать для отправки.
-=Demon=- (2004-04-11 12:12:00) [1]Народ вот структуры которые есть у меня:
IPHeader =record
VerLen :byte; // версия и длина заголовка
TOS :byte; // тип сервиса
Len :Word; // длина всего пакета
ID :Word; // Идентификация
Flags :Word; // флаги и смещения
TTL :byte; // время жизни пакета
Proto :byte; // протокол
XSum :Word; // контрольная сумма
IPSrc :DWord; // IP-адрес отправителя
IPDst :DWord; // IP-адрес назначения
end;
PIcmp=^Icmp;
Icmp = record
icmp_type:Byte; //Тип
icmp_code:Byte; //Код
icmp_cksum:Word;//СRС до 1
icmp_id:Word;//Дескриптор
icmp_seq:Word;//Последовательность
icmp_data: DWORD;//Данные
end;
TCPHeader =record
SrcPort :Word;
DstPort :Word;
SeqNum :DWord;
AckNum :DWord;
DataOffs_Reserv_Cntrl :Word;
Wnd :Word;
XSum :Word;
end;
Они правельно описаны или нет. Если нет, укажите пожалуйста, где ошибка.
-==- (2004-04-11 12:11:00) [2]Народ вот структуры которые есть у меня:
IPHeader =record
VerLen :byte; // версия и длина заголовка
TOS :byte; // тип сервиса
Len :Word; // длина всего пакета
ID :Word; // Идентификация
Flags :Word; // флаги и смещения
TTL :byte; // время жизни пакета
Proto :byte; // протокол
XSum :Word; // контрольная сумма
IPSrc :DWord; // IP-адрес отправителя
IPDst :DWord; // IP-адрес назначения
end;
PIcmp=^Icmp;
Icmp = record
icmp_type:Byte; //Тип
icmp_code:Byte; //Код
icmp_cksum:Word;//СRС до 1
icmp_id:Word;//Дескриптор
icmp_seq:Word;//Последовательность
icmp_data: DWORD;//Данные
end;
TCPHeader =record
SrcPort :Word;
DstPort :Word;
SeqNum :DWord;
AckNum :DWord;
DataOffs_Reserv_Cntrl :Word;
Wnd :Word;
XSum :Word;
end;
Они правельно описаны или нет. Если нет, укажите пожалуйста, где ошибка.
-==- (2004-04-11 03:24:00) [3].
-=Demon=- (2004-04-10 02:30:00) [4]Если можно покажите програмно как это делается.(Как склеивание так и сами описание структур). Хотя не, как склеивается я понял, покажите описание самих стуктур как TCP,ICMP и UDP так и IP. Заранее всем благодарен.
Smithson (2004-04-09 18:17:00) [5]Как склеивать - элементарно. В любом описании IP указывается, что за заголовком следует поле "данные", длинна которого указана в заголовке. Вот в эти данные и помещаешь TCP-пакет. Или ICMP. А вообще воткни снифер и послушай себя часок, а потом посмотри, что он там накопил. Будет база для анализа из реальных (= работающих) пакетов.
-=Demon=- (2004-04-09 18:13:00) [6]
> В смысле, ты хочешь руками пакет собирать?
> Или еще что-то?
Да. И мне надо описание структур Как TCP так ICMP и UDP. Втом смысле что какие поля имеют какие типы данных. И Как склеивать IP заголовок и TCP пакет. И сколько Бит данных обычно отводиться под информацию.
Verg (2004-04-09 13:04:00) [7]Струтура сетевого пакета
+----------------------+
! Заголовок (*Header) !
+----------------------+
! Данные !
+----------------------+
Пример структуры TCP/IP пакета:
+----------------+
! Заголовок IP !
+----------------+
! Заголовок TCP !
+----------------+
! Данные !
+----------------+
Заголовок в общем случае переменной длины, данные тоже.
Из-за этого, например, никогда не найти структуру (record, struct), описывающий заголовок TCP/IP. Только раздельно -
заголовок TCP, заголовок IP.
В структурах, описывающих заголовки пакетов того или иного протокола, описывают фиксированную часть заголовка. На Паскале при этом надо писать packed record, чтобы исключить несоответствие из-за "выравнивания" полей при компиляции.
Rouse_ (2004-04-09 12:30:00) [8]В смысле, ты хочешь руками пакет собирать?
Или еще что-то?
-=Demon=- (2004-04-09 12:21:00) [9]Не я конечно благодарен за такую помощь:-))))
Но нельзя ли поподробнее...
Если честно меня волнует то как в этих структурах выделяется место под данные.
Под словом структура я имею ввиду:
type
IPHeader =record
VerLen :byte; // версия и длина заголовка
TOS :byte; // тип сервиса
Len :Word; // длина всего пакета
ID :Word; // Идентификация
Flags :Word; // флаги и смещения
TTL :byte; // время жизни пакета
Proto :byte; // протокол
XSum :Word; // контрольная сумма
IPSrc :DWord; // IP-адрес отправителя
IPDst :DWord; // IP-адрес назначения
end;
А как выделяется место под информацию, и как склеить для отправки Например IP(заголовок) и (TCP-Пакет) я не знаю.
Пожалуйста помогите.....
Verg (2004-04-08 22:02:00) [10]RFC791 - IP
RFC792 - ICMP
RFC793 - TCP
RFC768 - UDP