The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как самому создать Не-IP протокол?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как самому создать Не-IP протокол?"
Сообщение от Vasja Искать по авторуВ закладки on 24-Авг-01, 18:31  (MSK)
Ув. ALL!!!
Подскажите, если кто знает.
Весь транспорт в солярисе сделан для TCP/IP???
А есть ли для Х400 ?
А как сделать свой софт сетевого, ну хотябы транспортного уровня. Иначе говоря, как выкинуть драйвера на время, как ядро обмануть.

И как ваще делать драйвера (платформа спарк)
Хоть ссылку или название книжки, плз.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Как самому создать Не-IP протокол?"
Сообщение от XMan Искать по авторуВ закладки on 24-Авг-01, 21:20  (MSK)
По идее, тебе нужно сделать сокет PF_PACKET с типом SOCK_RAW. Смотри доку на функцию socket.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Как самому создать Не-IP протокол?"
Сообщение от Vasja Искать по авторуВ закладки on 27-Авг-01, 10:20  (MSK)
Функция socket() подразумевает работу либо по TCP, либо по UDP - иначе говоря, использует протокол сетевого уровня IP. А мне он мешает, этот айпи.
Как его подменить на системном уровне?
Короче, мне надо написать свой драйвер для уровня выше Eithernet-карты. А как это сделать в Солярисе-SPARC ????
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Как самому создать Не-IP протокол?"
Сообщение от XMan Искать по авторуВ закладки on 27-Авг-01, 17:16  (MSK)
>Функция socket() подразумевает работу либо по
>TCP, либо по UDP -
>иначе говоря, использует протокол сетевого
>уровня IP. А мне он
>мешает, этот айпи.

Ничего подобного. Функция socket просто создает сокет и привязывает его к заданному уровню. Вот и все :))

Куски "man 2 socket":

int socket(int domain, int type, int protocol);
Socket создает конечную точку соединения и возвращает ее описатель.
...
PF_PACKET - Низкоуровневый пакетный интерфейс
...
SOCK_RAW - Обеспечивает доступ к низкоуровневому сетевому протоколу.
...

SOCK_PACKET - это устаревший тип сокета, позволявший получать необработанные пакеты прямо от драйвера устройства. Используйте вместо него packet(7).
...
-------
Куски из "man 7 packet":

packet, PF_PACKET - пакетный интерфейс уровня устройств.
...
packet_socket = socket(PF_PACKET, int socket_type, int protocol);
...
socket_type равен либо SOCK_RAW  для raw-пакетов (включая заголовок установки соединения), либо SOCK_DGRAM для подготовленных пакетов без заголовка уровня соединения. Информация заголовка уровня соединения в общем формате предоставлена в sockaddr_ll. protocol  - номер протокола в соответствии с IEEE 802.3 в сетевом порядке байтов. Список возможных протоколов приведен в файле <linux/if_ether.h>  Если protocol содержит значение htons(ETH_P_ALL), то программой будут приниматься все протоколы. Все входящие пакеты этого типа протокола будут передаваться пакетному сокету до того, как они будут переданы протоколам, реализованным в ядре.
...
Пакеты SOCK_RAW передаются драйверу устройства и принимаются от него без всяких изменений данных пакета. При получении пакета адрес обрабатывается и передается в стандартной структуре адреса sockaddr_ll. При передаче пакета буфер пользователя должен содержать заголовок физического уровня. Пакет передается без изменений драйверу сетевого интерфейса, указанному в адресе назначения. Hекоторые драйверы устройств всегда добавляют к заголовку и другие заголовки. SOCK_RAW похож, но не совместим с устаревшим SOCK_PACKET для Linux 2.0.
-------

Я не думаю, что в солярке этот API будет сильно отличаться от QNX, Linux или BSD систем.

Еще вопросы есть ? Или просто нету доки ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Как самому создать Не-IP протокол?"
Сообщение от Vasja Искать по авторуВ закладки on 29-Авг-01, 15:53  (MSK)
Ясно, идея ясна. Ибо в /usr/include/sys/socket.h
PF_PACKET не определен:
------------- кусок оттуда ------------
/*
* Address families.
*/
#define AF_UNSPEC       0               /* unspecified */
#define AF_UNIX         1               /* local to host (pipes, portals) */
#define AF_INET         2               /* internetwork: UDP, TCP, etc. */
#define AF_IMPLINK      3               /* arpanet imp addresses */
#define AF_PUP          4               /* pup protocols: e.g. BSP */
#define AF_CHAOS        5               /* mit CHAOS protocols */
#define AF_NS           6               /* XEROX NS protocols */
#define AF_NBS          7               /* nbs protocols */
#define AF_ECMA         8               /* european computer manufacturers */
#define AF_DATAKIT      9               /* datakit protocols */
#define AF_CCITT        10              /* CCITT protocols, X.25 etc */
#define AF_SNA          11              /* IBM SNA */
#define AF_DECnet       12              /* DECnet */
#define AF_DLI          13              /* Direct data link interface */
#define AF_LAT          14              /* LAT */
#define AF_HYLINK       15              /* NSC Hyperchannel */
#define AF_APPLETALK    16              /* Apple Talk */
#define AF_NIT          17              /* Network Interface Tap */
#define AF_802          18              /* IEEE 802.2, also ISO 8802 */
#define AF_OSI          19              /* umbrella for all families used */
#define AF_X25          20              /* CCITT X.25 in particular */
#define AF_OSINET       21              /* AFI = 47, IDI = 4 */
#define AF_GOSIP        22              /* U.S. Government OSI */
#define AF_IPX          23              /* Novell Internet Protocol */
#define AF_ROUTE        24              /* Internal Routing Protocol */
#define AF_LINK         25              /* Link-layer interface */

#define AF_MAX          25

/*
* Structure used by kernel to store most
* addresses.
struct sockaddr {
        sa_family_t     sa_family;      /* address family */
        char            sa_data[14];    /* up to 14 bytes of direct address */
};

/*
* Protocol families, same as address families for now.
*/
#define PF_UNSPEC       AF_UNSPEC
#define PF_UNIX         AF_UNIX
#define PF_INET         AF_INET
#define PF_IMPLINK      AF_IMPLINK
#define PF_PUP          AF_PUP
#define PF_CHAOS        AF_CHAOS
#define PF_NS           AF_NS
#define PF_NBS          AF_NBS
#define PF_ECMA         AF_ECMA
#define PF_DATAKIT      AF_DATAKIT
#define PF_CCITT        AF_CCITT
#define PF_SNA          AF_SNA
#define PF_DECnet       AF_DECnet
#define PF_DLI          AF_DLI
#define PF_LAT          AF_LAT
#define PF_HYLINK       AF_HYLINK
#define PF_APPLETALK    AF_APPLETALK
#define PF_NIT          AF_NIT
#define PF_802          AF_802
#define PF_OSI          AF_OSI
#define PF_X25          AF_X25
#define PF_OSINET       AF_OSINET
#define PF_GOSIP        AF_GOSIP
#define PF_IPX          AF_IPX
#define PF_ROUTE        AF_ROUTE
#define PF_LINK         AF_LINK

#define PF_MAX          AF_MAX
-------------------------------------
и эта штука не "кривая", в начале есть SUNовский и  АТТшные копирайты.
Буду методом тыка исследовать...

ЗЫ: а манов у меня этих на самом деле нету ((

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Как самому создать Не-IP протокол?"
Сообщение от XMan Искать по авторуВ закладки on 29-Авг-01, 17:49  (MSK)
А разве не подходит это:
#define AF_LINK 25 /* Link-layer interface */

или это:
#define AF_802 18 /* IEEE 802.2, also ISO 8802 */

и возможно еще вот это:
#define AF_UNSPEC 0 /* unspecified */

?

Хотя, мне так кажется, что AF_LINK ближе всех к PF_PACKET.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Ъръ ёрьюьС ёючфрРЭ Эх-IP яПюРюъюы?"
Сообщение от Cheshir emailИскать по авторуВ закладки on 24-Авг-01, 21:23  (MSK)
A che, ishodnikov kakih-nit tam netu?
Hrenovastenko esli netu....
I vsegda smotru ishodniki...
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру