powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Уровень ip, arp, ...
25 сообщений из 35, страница 1 из 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
25 сообщений из 35, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Уровень ip, arp, ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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