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

struct timer_list timer; /* This is the sock cleanup timer. */

struct timeval stamp;

/* Identd and reporting IO signals */

struct socket *socket;

/* RPC and TUX layer private data */

void *user_data;

/* Callbacks */

void (*state_change)(struct sock *sk);

void (*data_ready)(struct sock *sk,int bytes);

void (*write_space)(struct sock *sk);

void (*error_report)(struct sock *sk);

int (*backlog_rcv) (struct sock *sk,

struct sk_buff *skb);

void (*destruct)(struct sock *sk);

};

Эта структура очень широко используется и имеет много hacksзависящих от конфигурации как видим для каждого протокола здесь найдется местечко

Сокеты проходят через процесс маршрутизации только один раз для каждого маршрута. Они содержат указатель на маршрут structsock- >dst_cache* и вызывают ip_route_connect (net/route.h) для нахождения маршрута информация записывается в dst_cacheи сокет дальше использует её не повторяя операции поиска маршрута пока не случится что-то необычное в этом и есть смысл connect

Установление соединения

Рассмотрим стандартный пример

/* lookuphost */

server = gethostbyname(SERVER_NAME);

/* get socket */

sockfd = socket(AF_INET, SOCK_STREAM, 0);

/* set up address */

address.sin_family = AF_INET;

address.sin_port = htons(PORT_NUM);

memcpy(&address.sin_addr,server->h_addr,server->h_length);

/* connect to server */

connect(sockfd, &address, sizeof(address));

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