Курсовая работа: Реализация сети в операционной системе Linux

содержит адреса отправителя и получателя

входящий интерфейс

адрес соседа или шлюза

struct dst_entry

содержит спецефические для данного маршрута данные и функции

struct dev -понятно

pmtu максимальная длина пакета для данного маршрута

int (*input)(struct sk_buff) -указатель на функцию приема для данного маршрута

часто ето tcp_rcv

int (*output)(struct sk_buff) указатель на функцию отсылки (dev_queue_xmit)

также разнообразные статистические данные и опции

Таким образом нами было проведено исследование сетевой архитектуры операционной системы Линух на примере реализации стека протоколов tcp-ip версии 4 в ядре 2.4.7

Приложение

После длительных теоретических изысканий применим их на практике

Нашей целью будет создание удобного пользовательского интерфейса для указания в пакете подставного ip адреса(адреса которого нет у никакого нашего интерфейса) Я не буду показывать ,то как адреса выставляются в ядре. Замечу только то что, из сокета семейства AF_INET и типа SOCK_RAW пакет с не своим адресом отправить вроде бы можно (в ядре 2.2 ,насчет 2.4 неуверен -может там есть какие-то проверки). страницы мана говорят про опцию IP_HDRINCL .Их можно отправлять также через тип SOCK_PACKET. Но для всего этого знать код ядра не очень необходимо. Поэтому мы пойдём други путём.

Наиболее легкий путь(?) сделать это через интерфейс setsockopt. После внимательного изучения кода функции sys_setsockopt -net/socket.c находим строки if ((sock = sockfd_lookup(fd, &err))!=NULL)

{

if (level == SOL_SOCKET)

err=sock_setsockopt(sock,level,optname,optval,optlen);

else

err=sock->ops->setsockopt(sock, level, optname, optval,optlen);

sockfd_put(sock);

}

return err;

}

значитнамнадоискатьфункцию setsockopt вкодедляреализациидлятипа sock_raw этофайл net/ipv4/raw.c смотрим static int raw_setsockopt(struct sock *sk, int level, int optname,

char *optval, int optlen)

{

if (level != SOL_RAW)

К-во Просмотров: 1531
Бесплатно скачать Курсовая работа: Реализация сети в операционной системе Linux