Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Структура 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо