of packet */
unsigned int truesize;/* Buffer size */
unsigned char * head;/* Head of buffer */
unsigned char * data;/* Data head pointer */
unsigned char * tail;/* Tail pointer */p> unsigned char * end;/* End pointer */p> void (* destructor) (struct sk_buff *)/* Destruct function */
# ifdef CONFIG_NETFILTER
/* Can be used for communication between hooks. */p> unsigned long nfmark;
/* Cache info */
__u32 nfcache;
/* Associated connection, if any */
struct nf_ct_info * nfct;
# ifdef CONFIG_NETFILTER_DEBUG
unsigned int nf_debug;
# endif
# endif/* CONFIG_NETFILTER */
# if defined (CONFIG_HIPPI)
union {
__u32 ifield;
} private;
# endif
# ifdef CONFIG_NET_SCHED
__u32 tc_index;/* traffic control index */
# endif
};
там ж міститься маса корисних функцій для роботи з sk_buff. всі протоколи використовують ету структуру додаючи заголовки свого рівня
Маршрутизація p> Рівень IP використовує 3 структури для маршрутизації FIB де зберігаються всі маршрути routing cache де знаходяться найбільш часто використовувані neibour table список комп'ютерів фізично з'єднаних з даними
FIB містить 32 зони по одній на кожен біт ip адреси кожна зона містить точки входу для хостів і мереж які задайтся даної маскою підмережі 255.0.0.0 має 8 значущих біт і тому у восьмий зоні 255.255.255.0 в 24 зоні
файл/proc/net/route містить FIB
routing cache хеш-таблиця яка містить до 256 ланцюжків маршрутів якщо відповідний маршрут не знайдене в кеші то він додається туди з FIB застарілі записи після закінчення деякого часу видаляються вміст кеша можна побачити в/proc/net/rt_cache
Ініціалізація мережі
головні налаштування мережі в дистрибутиві RedHat (Mandrake) лежать в/etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0 і тд ... p> вміст моїх файлів (не в virtual mashine редхате а на нормальній машині Mandrake-8.2 де відповідно немає ніяких мережевих карт)
/etc/sysconfig/network
NETWORKING = yes
FORWARD_IPV4 = false
HOSTNAME = freeland.linux
DOMAINNAME = linux
/etc/sysconfig/network-scripts/ifcfg-lo p> DEVICE = lo
IPADDR = 127.0.0.1
NETMASK = 255.0.0.0
NETWORK = 127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST = 127.255.255.255
ONBOOT = yes
NAME = loopback
Дуже корисною програмою є ifconfig синтаксис якій детально розглянуто в мануалі
[20:16] [pts1]/etc/sysconfig/network-scripts [Root]
# ifconfig
lo Link encap: Local Loopback
inet addr: 127.0.0.1 Mask: 255.0.0.0
UP LOOPBACK RUNNING MTU: 16436 Metric: 1
RX packets: 3242 err...