Реализация сети в операционной системе Linux
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: виды рефератов, банк курсовых работ бесплатно
| Добавил(а) на сайт: Ада.
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата
hh_cache -указатель на аппаратный кэш
sk_buff_head arp_queuq -очередь arp пакетов
есть local -в ней находятся свои интерфейсы
и main в ней наверное всё остальное
Forwarding Information Database
struct fib_table в include/net/ip_fib.h
содержит указатели на различные функции
tb_stamp
tb_id -255 для local и 254 для main
td_data -hash fib таблица
struct fn_hash -net/ipv4/fib_hash.c
struct fn_zone *fn_zones[33] -указатели на зоны
struct fn_zone *fn_zone_list указатель на первую не пустую зону
struct fn_zone содержит информацию про зону и маршруты для неё
struct fib_node ** fz_hash -указывает на кэш записей этой зоны
int fz_nent количество записей
int fx_divisor числу бакетов для зоны (в основном 16 кроме зоны 0000
loopback девайса)
int fz_order индекс зоны в родительской fn_hash
struct fib_node -содержит информацию по девайсу в fib_info(include/net/ip_fib.h)
метрику ,протокол и т.д
Routing Cache
Это наиболее быстрый способ нахождения маршрута Когда ip нужен маршрут ,то он определяет ячейку в хэше,которая указывает на цепочку маршрутов и идёт по этой цепочке пока не найдет нужный маршруты имеют таймеры и частоту использования ,наиболее частые перемещаются в начало.
struct rtable -звено в цепочке
содержит адреса отправителя и получателя
входящий интерфейс
адрес соседа или шлюза
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,
Рекомендуем скачать другие рефераты по теме: реферати, скачать дипломную работу.
Категории:
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата