powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Уровень ip, arp, ...
35 сообщений из 35, показаны все 2 страниц
Уровень ip, arp, ...
    #34821584
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу на сабже получать отправлять сообщения. Т.е. что-то типа своего протокола на уровне ip.

Получать научился:
Код: plaintext
1.
2.
sock__ = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
recv(sock__, buf, len, MSG_DONTWAIT);

А как отправлять?
Код: plaintext
1.
::send(sock__, buf, len,  0 );
No such device or address

Пытаюсь указать адреса:
Код: plaintext
1.
2.
3.
4.
5.
    sockaddr_in sa;
    sa.sin_family = PF_PACKET;
    sa.sin_port = htons( 0 );
    sa.sin_addr.s_addr=htonl(INADDR_ANY);
    int ret=::sendto(sock__, buf, len,  0 , (sockaddr*)&sa, sizeof(sockaddr_in));
Invalid argument

Как правельно работать?
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34822010
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhХочу на сабже получать отправлять сообщения. Т.е. что-то типа своего протокола на уровне ip.
....Как правельно работать?

лучше всего посмотреть справочную литературу на данный счёт. Если под форточки - то рулит МСДН. Там даже есть примеры передачи-приёма пакетов...

в двух словах...(под форточки)
1) инициализация библиотеки сокетов
2) открытие сокета
3) ассоциация открытого сокета с типом протокола
4) приём или передача информации
5) закрытие ресурсов
6) деинициализация библиотеки сокетов

нужно сказать следующее...
1) протоколы различаются на пакетные и потоковые (это очень часто забывают программисты, при их юзанье)
2) послать свой пакет вы сможете на уровне UDP
3) уровень IP в форточках вроде закрыт
4) При реализации уровня TCP пакетов нет в природе(!) - потому как поток. Если Вы готовы заниматься всеми теми телодвижениями, что делает данный уровень - у Вас куча времени :)


с уважением
(круглый)
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34822067
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok03) уровень IP в форточках вроде закрыт


не закрыт, но несколько гемороен
надо строить пакет вручную, включая все контрольные суммы и т.п.
если что то неправильно, винда игнорирует отсылку МОЛЧА

спуфинг отсекается виндой (выше W2k) опять же молча

kolobok0
4) При реализации уровня TCP пакетов нет в природе(!) - потому как поток. Если Вы готовы заниматься всеми теми телодвижениями, что делает данный уровень - у Вас куча времени :)


Пакеты разумеется есть, но геморой неоравдан

P.S. Эээх кто бы подсказал где для винды SCTP взять
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34822288
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все разобрался. Под линухом. С виндой может еще предстотит.
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34822304
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) kolobok03) уровень IP в форточках вроде закрыт


не закрыт, но несколько гемороен
надо строить пакет вручную, включая все контрольные суммы и т.п.
если что то неправильно, винда игнорирует отсылку МОЛЧА


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

Gluk (Kazan)
спуфинг отсекается виндой (выше W2k) опять же молча


Вот из ит?
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34822309
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok04) При реализации уровня TCP пакетов нет в природе(!) - потому как поток.

Только с опытом понимаешь серьезность этой фразы... :)
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34823245
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhЭто что-то странное. Если ты сам формируешь tcp пакет, то отправлять его будешь на низком уровне перескочив как минимум tcp, а следуя многоуровневой сетевой модели, все уровни независимы друг от друга, следовательно, они не должны что-либо проверять и тем более игнорировать.


система безопасности винды рубит (при отключенном файерволе), молча
если к примеру не совпадают контрольные суммы или IP-адрес источника подделан
начиная с какого-то SP W2k мы на это напоролись когда писали эмулятор NAS-а

На канальном уровне скорее всего отослать можно, но через сырой сокет нет
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34823281
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)На канальном уровне скорее всего отослать можно, но через сырой сокет нет

Хм. Хочеться определиться. Отправляя через сырой сокет (SOCK_RAW) в линухе необходимо указывать в пакете мак-адреса и len/type protocol. Я так предположил, что это есть обрубок как раз канального уровня, а в сетевом уже идет протокол ip, тогда транспортный это уже и есть tcp, udp, icmp, ... .Все складывается.

Тогда получается, что железка предоставляет обрубок канального уровня, что и является сырым сокетом.

Я где-то не прав, или в винде по другому (конкретно - канальный уровень <> сырой сокет)?
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34823284
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh
Тогда получается, что железка предоставляет обрубок канального уровня.


абстрогируя от всяких там crc канального уровня.
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34823598
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhЯ где-то не прав, или в винде по другому (конкретно - канальный уровень <> сырой сокет)?

Вы путаете, нет в SOCK_RAW mac-адресов. Можно доверить системе построить IP-заголовок, можно построить самостоятельно. Доступа к заголовку канального уровня нет (там вообще может быть не Ethernet).
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824178
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) AkhЯ где-то не прав, или в винде по другому (конкретно - канальный уровень <> сырой сокет)?

Вы путаете, нет в SOCK_RAW mac-адресов. Можно доверить системе построить IP-заголовок, можно построить самостоятельно. Доступа к заголовку канального уровня нет (там вообще может быть не Ethernet).

Правильно ли я понял, что SOCK_RAW в винде это пакет на 3-м и 4-м уровне (сетевой, транспортный)? Пакет на канальном уровне отправляется/получается другими спосабами?
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824256
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAW - Сетевой уровень (IP-пакет)

Канальный уровень (так-же как и в *nix) средствами PCap (в Windows - WinPCap)
Вообще WinSock - цельнодраный BSD-стек мохнатых годов с некоторыми "улучшениями" от Microsoft
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824424
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)RAW - Сетевой уровень (IP-пакет)

Канальный уровень (так-же как и в *nix) средствами PCap (в Windows - WinPCap)
Вообще WinSock - цельнодраный BSD-стек мохнатых годов с некоторыми "улучшениями" от Microsoft

PCap в линухах работает через SOCK_RAW, пример которого я привел в первом посте. Именно поэтому RAW я и причислил к канальному уровню. Какой RAW тогда имеется ввиду под сетевым уровнем?
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824448
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhPCap в линухах работает через SOCK_RAW

Вот по этому пункту терзают смутные сомнения
RAW - уровень IP-пакетов. Не верите мне, посмотрите у Стивенса
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824521
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) AkhPCap в линухах работает через SOCK_RAW

Вот по этому пункту терзают смутные сомнения
RAW - уровень IP-пакетов. Не верите мне, посмотрите у Стивенса

Кто такой Стивенсен не знаю, возможно не совпадает терминалогия, но есть исходники pcap:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
/* ===== Functions to interface to the newer kernels ================== */

/*
 *  Try to open a packet socket using the new kernel interface.
 *  Returns 0 on failure.
 *  FIXME: 0 uses to mean success (Sebastian)
 */
live_open_new(pcap_t *handle, char *device, int promisc,
              int to_ms, char *ebuf)
{
#ifdef HAVE_PF_PACKET_SOCKETS
        int                     sock_fd = - 1 , device_id, mtu, arptype;
        struct packet_mreq      mr;

        /* One shot loop used for error handling - bail out with break */

        do {
                /*
                 * Open a socket with protocol family packet. If a device is
                 * given we try to open it in raw mode otherwise we use
                 * the cooked interface.
                 */
                sock_fd = device ?
                        socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
                      : socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL));



Насколько я понял (не пробовал) SOCK_DGRAM в PF_PACKET как раз и есть сетевой (IP) уровень. Тот RAW про который ты ведешь речь? :)
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824523
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, нашел в исходниках :)

* If PF_PACKET is defined, we can use {SOCK_RAW,SOCK_DGRAM}/PF_PACKET
* sockets rather than SOCK_PACKET sockets.

Это не тот же RAW, что PF_INET
Для ARP нужен именно канальный уровень, согласен
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824531
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhТот RAW про который ты ведешь речь? :)

Я вел речь про PF_INET/SOCK_RAW :)
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824536
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исчо:

автор

PACKET(7) Linux Programmer’s Manual PACKET(7)



НАЗВАНИЕ
packet, PF_PACKET - пакетный интерфейс уровня устройств.

...
socket_type равен либо SOCK_RAW для raw-пакетов (включая заголовок уст
ановки соединения), либо SOCK_DGRAM для подготовленных пакетов без заг
оловка уровня соединения.
[root@pdserv libpcap]#
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824548
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) AkhТот RAW про который ты ведешь речь? :)

Я вел речь про PF_INET/SOCK_RAW :)

Вот об этом надо было пораньше поговорить. ;)

Понаделали этих доменов. Не понятно зачем...
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824560
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhПонаделали этих доменов. Не понятно зачем...

Чтобы отделять канальный уровень от сетевого :)
Но согласен, некоторая путаница имеет место быть
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824797
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) AkhПонаделали этих доменов. Не понятно зачем...

Чтобы отделять канальный уровень от сетевого :)
Но согласен, некоторая путаница имеет место быть

Так, понятно. Спасибо.
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824926
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh kolobok04) При реализации уровня TCP пакетов нет в природе(!) - потому как поток.

Только с опытом понимаешь серьезность этой фразы... :)

угумс...
когда пользователи, тьху программисты - вопрошают, а почему пакеты приходят в TCP частями? то становиться для них открытием что юзать TCP уровень нуна не как отдеьно стоящие пакеты а как поток...

хотя что я Вас гружу...
читайте лучше спецификацию на данный уровень...интерфейс с юзвером там определён...

удачи Вам
(круглый)
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824956
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)...не закрыт, но несколько гемороен...

хз...под форточками такой задачи не стояло..это на мк стэк реализовывать пришлось с дефрагментацией IP слоя и прочей мурнёй...а под форточками - хз...Вам виднее...

kolobok04) При реализации уровня TCP пакетов нет в природе(!) - потому как поток. Если Вы готовы заниматься всеми теми телодвижениями, что делает данный уровень - у Вас куча времени :)
Пакеты разумеется есть, но геморой неоравдан...[/quot]

я имел ввиду юзанье TCP со стороны программиста..увы пакетов там нет...наверное это для Вас будет америка - но лучше я Вас направлю к описанию данного протокола..увы - это одна из самых распространённых ошибок программеров - предпологать что инфа Вам приходит теми пачками(пакетами) что Вы отсылали на передатчике..до поры до времени - это так...но стоит измениться ситуации в сети, или временным настройкам станций или маршрутиризаторов - алес капут

удачи Вам
(круглый)
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34824973
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0 Akh kolobok04) При реализации уровня TCP пакетов нет в природе(!) - потому как поток.

Только с опытом понимаешь серьезность этой фразы... :)

угумс...
когда пользователи, тьху программисты - вопрошают, а почему пакеты приходят в TCP частями? то становиться для них открытием что юзать TCP уровень нуна не как отдеьно стоящие пакеты а как поток...


У меня был случай, когда, наоборот, несколько пакетов в один сливались.

kolobok0
хотя что я Вас гружу...
читайте лучше спецификацию на данный уровень...интерфейс с юзвером там определён...


Это то, как раз, я знаю.
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34825024
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0я имел ввиду юзанье TCP со стороны программиста..увы пакетов там нет...наверное это для Вас будет америка - но лучше я Вас направлю к описанию данного протокола

пакеты ЕСТЬ см. Figure 3
Как иначе порты то сканить ???
программеры они эта ... разные бывають :)
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34827805
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)...пакеты ЕСТЬ см. Figure 3
Как иначе порты то сканить ???
программеры они эта ... разные бывають :)

ню-ню...
рекомендую внимательней прочитаь раздел
User/TCP Interface

TCP НЕ гарантирует квантованость информации(!) т.е. он может объеденять или разрывать кусок данных посылаемой стороной, в зависимости от ситуации в сети...
Или по другому - длина принятых данных может быть меньше или равна посылаемой, на определённый момент времени.

например Вы посылаете два кусочка по 10000 байт...
при передачи второго кусочка последнии 1000 байт не прошли за тайм аут ожидания - получите 19000 байт, а не 10000 как Вы можете предпологать...Т.е. это труба...запихали в неё данные - они вылезли в таком же порядке на приёмной стороне, а вот размер их кванта - может быть по 100 байт к примеру (условно)...Зависит от многих факторов...

теперь как программить...(если требуется квантовано принимать)...
смотрим флажок на приёме и время ожидания..далее дело техники..

удачи Вам
(круглый)
ЗЫ
Не обижайтесь - это типичная ошибка при юзанье TCP слоя
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34828044
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0
Не обижайтесь - это типичная ошибка при юзанье TCP слоя

Если вы внимательно почитаете то что я писал, то не найдете там тех глупостей, которые мне стараетесь преписать. Я НИЧЕГО не писал про User Interface, мне плевать склеиваются там данные или расклеиваются. Я говорю про другой слой, в нем пакеты ЕСТЬ, на этих пакетах ПОСТРОЕН TCP-протокол.

P.S. Что за мания такая считать окружающих глупее себя ???
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34828071
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, конкретно Akh и пакетные и потоковые как мертвому прирпарка ;o)
Ему канальный уровнень нужон
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34854243
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собстна сабж теперь надо сделать под фортачки. PF_PACKET в винде отстутсвует, во всяком случае, такого идентификатора он не понимает. Пробовал AF_UNSPEC, SOCK_RAW, AF_UNSPEC, - при recv говорит, что не правельные параметры (походу ждет bind). У кого нибудь есть мысли на счет "как победить"?
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34854285
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinPCap попробувать
На канальном отсылать пакеты не приходилось
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34854292
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinSock канальный уровень точно не поддерживает
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34854332
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На нем можно только получать. Во всяком случае так работает PCap линуховый.

Поищу исходники, посмотрю как он получает. Потом попробую так же отправить. Фенксь.
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34854363
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри доку перед тем как лезть в исходники
по моему виндовый и отправлять тоже умеет
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34854442
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Посмотри доку перед тем как лезть в исходники
по моему виндовый и отправлять тоже умеет

Ну, если не врет, то умеет.
winPCap
WinPcap is the industry-standard tool for link-layer network access in Windows environments: it allows applications to capture and transmit network packets bypassing the protocol stack , and has additional useful features, including kernel-level packet filtering, a network statistics engine and support for remote packet capture.


Где-то слышал, что WinPCap делает свой драйвер и только через него прокидывает пакеты. Складывается впечатление, что по другому с виндой ничего не сделаешь... . Может я не прав, но на то похоже...
...
Рейтинг: 0 / 0
Уровень ip, arp, ...
    #34854471
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhГде-то слышал, что WinPCap делает свой драйвер и только через него прокидывает пакеты. Складывается впечатление, что по другому с виндой ничего не сделаешь... . Может я не прав, но на то похоже...

ты прав
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Уровень ip, arp, ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]