Tarmoq protokollari
Tarmoq protokollari bo'limi individual tarmoq protokollarini (masalan, TCP, UDP va boshqalar) belgilaydi. Ular kunning boshida Linux / net / ipv4 / af_inet.c da inet_init funktsiyasida ishga tushiriladi (chunki TCP va UDP inet protokoli oilasiga tegishli). Inet_init funktsiyasi proto_register funksiyasi yordamida o'rnatilgan protokollarning har birini qayd qiladi. Bu funksiya linux / net / core / sock.c da aniqlangan va protokolni faol ro'yxatga qo'shishdan tashqari, agar kerak bo'lsa, u bir yoki bir nechta slabli keshlarni ajratishi mumkin.
Linux / net / ipv4 / dagi tcp_ipv4.c, udp.c va raw.c fayllaridagi protokol tuzilishi orqali individual protokollar o'zlarini qanday aniqlay olishlarini ko'rishingiz mumkin. Ushbu protokol tuzilmalarining har biri inetsw_array turiga va protokoli sifatida xaritaga joylashtirilgan bo'lib, ular o'z ishlariga o'rnatilgan protokollarni tayinlaydi. Inetsw_array ning tuzilishi va uning aloqalari 3 -rasmda ko'rsatilgan. Ushbu massivdagi har bir protokol kunning boshida inet_init dan inet_register_protosw qo'ng'iroq qilib inetsw da ishga tushiriladi. Inet_init funktsiyasi, shuningdek, ARP, ICMP, IP modullari, TCP va UDP modullari kabi har xil kirish modullarini ishga tushiradi.
Shakl 3. Internet
Soket va protokolning o'zaro bog'liqligi
Eslatib o'tamiz, soket yaratilganda, u turi va protokolini belgilaydi, masalan, my_sock = soket (AF_INET, SOCK_STREAM, 0). AF_INET, SOCK_STREAM (bu erda inetsw_array -da ko'rsatilgan) deb belgilangan soketli Internet -manzillar oilasini belgilaydi.
Soketlar uchun ma'lumotlarning harakatlanishi soket bufer (sk_buff) deb nomlangan asosiy tuzilma yordamida amalga oshiriladi. Sk_buffda paketli ma'lumotlar va protokollar to'plamining bir necha qatlamlarini o'z ichiga olgan holat ma'lumotlari mavjud. Yuborilgan yoki qabul qilingan har bir paket sk_buffda ko'rsatilgan. Sk_buff tuzilishi linux / include / linux / skbuff.h da aniqlangan va 4 -rasmda ko'rsatilgan.
Shakl 4. Soket buferi va uning boshqa tuzilmalarga ulanishi
Ko'rib turganingizdek, ma'lum bir ulanish uchun bir nechta sk_buff tuzilmalarini bir -biriga bog'lab qo'yish mumkin. Ularning har biri paket yuborilgan yoki qabul qilingan qurilma tuzilishini (net_device) aniqlaydi. Har bir paket sk_buff -da ko'rsatilganligi sababli, paket sarlavhalari ko'rsatkichlar to'plami (th, iph va mac uchun Media Access Control (MAC) sarlavhasi uchun qulay tarzda belgilanadi). qo'llab -quvvatlash funktsiyalari sk_buff yaratish, yo'q qilish, klonlash va buyurtma qilish funktsiyalari mavjud.
Soket tamponlari ma'lum bir rozetka uchun bir -biri bilan aloqa o'rnatishga mo'ljallangan va ko'p miqdordagi ma'lumotlarni o'z ichiga oladi, shu jumladan protokol sarlavhalariga havolalar, vaqt tamg'alari (paket yuborilgan yoki qabul qilinganda) va mos keladigan qurilma.
Do'stlaringiz bilan baham: |