Netlink برای انتقال اطلاعات متفرقه شبکه بین فرآیند فضای هسته (Core) و فضای کاربر طراحی و استفاده میشود. برنامههای شبکه مانند خانواده iproute2 و برنامههای کاربردی مورد استفاده برای پیکربندی درایورهای بی سیم مبتنی بر mac80211، از نت لینک شبکه برای ارتباط با هسته لینوکس از فضای کاربر استفاده میکنند. Netlink یک رابط استاندارد مبتنی بر سوکت برای فرآیندهای فضای کاربر و یک API سمت کور برای استفاده داخلی توسط ماژولهای کور فراهم میکند. در اصل، نت لینک شبکه از خانواده سوکت AF_NETLINK استفاده میکند. Netlink به گونهای طراحی شده است که جانشین انعطاف پذیرتری برای ioctl باشد. RFC 3549 پروتکل را به طور کامل شرح میدهد.
Netlink توسط الکسی کوزنتسوف به عنوان یک گزینه انعطاف پذیرتر برای روش ارتباطی پیچیده با ioctl که برای تنظیم و بدست آوردن گزینههای سوکت خارجی استفاده میشود، ایجاد شد. هسته لینوکس همچنان از ioctl برای سازگاری پشتیبانی میشود. Netlink برای اولین بار در سری 2.0 هسته لینوکس ارائه شد که به عنوان یک دستگاه کاراکتر پیاده سازی شده است. تا سال 2013، این رابط منسوخ شده است، اما هنوز هم یک روش ارتباطی ioctl را تشکیل میدهد.
کتابخانه اصلی شامل اصول اساسی مورد نیاز برای برقراری ارتباط از طریق سوکتهای netlink است. این سرویس با اتصال و قطع اتصال سوکتها، ارسال و دریافت دادهها، ساخت و تجزیه پیامها، یک ماشین حالت دریافت سفارشی را فراهم میکند و یک چارچوب نوع داده انتزاعی را نیز تهیه میکند که اجرای پروتکلهای netlink را براساس شی where اضافه میکند، جایی که اشیا اضافه میشوند، حذف میشوند. یا با استفاده از یک پروتکل مبتنی بر netlink اصلاح میشود.
سازوکار سوکت Netlink بهتر است در بخش برنامه نویسی سوکت قرار گیرد. با این حال، مکانیسم Netlink یک مکانیسم سوکت است که برای مکالمه با کور استفاده میشود. Netlink Socket مکانیسمی برای بازیابی و ارسال دادهها بین فضای کاربر و فضای هسته است. سوکت Netlink آدرس خانوادگی خود را دارد: AF_NETLINK.
سوکت Netlink برای استاندارد سازی دسترسی به ماژولهای کور مختلف از برنامههای فضای کاربر ارائه شده است. قبل از در دسترس بودن سوکتهای Netlink - دسترسی به فضای هسته از طریق تماسهای مختلف IOCTL، تماسهای سیستمی انجام میشد. این امر منجر به وابستگی به انتشار و ویژگیهای مختلف هسته شد. معرفی سوکتهای Netlink به برنامههای فضای کاربر اجازه میدهد تا هسته را به روشی استانداردتر جستجو کنند. روشهای قبلی دسترسی به فضای هسته هنوز در دسترس هستند اما با این وجود، سوکتهای netlink فرم جدیدتر و استانداردتری برای دسترسی به هسته لینوکس هستند.
به دلیل پیچیدگی توسعه و نگهداری هسته، فقط ضروریترین و مهمترین عملکرد کد در هسته قرار میگیرد. موارد دیگر، مانند GUI، کد مدیریت و کنترل، معمولاً به عنوان برنامههای فضای کاربر برنامه ریزی میشوند. این عمل تقسیم اجرای برخی ویژگیها بین هسته و فضای کاربر کاملاً در لینوکس رایج هستند. حال سوال این است که کد هسته و کد فضای کاربر چگونه میتوانند با یکدیگر ارتباط برقرار کنند؟
پاسخ؛ روشهای مختلف IPC است که بین هسته و فضای کاربر وجود دارد، مانند تماس سیستم، ioctl، سیستم فایل پرونده یا سوکت netlink. این بخش در مورد سوکت نت لینک شبکه بحث میکند و مزایای آن را به عنوان یک IPC نشان میدهد.
سوکت Netlink یک IPC ویژه است که برای انتقال اطلاعات بین هسته و فرآیندهای فضای کاربر استفاده میشود. این یک اتصال ارتباطی دو طرفه بین این دو از طریق API های سوکت استاندارد برای فرآیندهای فضای کاربر و یک API هسته ویژه برای ماژولهای هسته را فراهم میکند. سوکت Netlink در مقایسه با AF_INET مورد استفاده توسط سوکت TCP / IP از خانواده آدرس AF_NETLINK استفاده میکند. هر ویژگی سوکت netlink نوع پروتکل خاص خود را در پرونده اصلی هسته شامل / linux / netlink.h تعریف میکند.
زیر زیر مجموعهای از ویژگیها و انواع پروتکل آنها است که در حال حاضر توسط سوکت netlink پشتیبانی میشود:
چرا در ویژگیهای بالا به جای تماسهای سیستمی، ioctls یا سیستم فایل پرونده proc از netlink برای ارتباط بین دنیای کاربر و هسته استفاده میشود؟ اضافه کردن تماسهای سیستمی، ioctls یا پروندههای proc برای ویژگیهای جدید یک کار غیراصولی است. ما خطر آلوده شدن کور و آسیب رساندن به ثبات سیستم را داریم. سوکت Netlink ساده است؛ فقط یک ثابت، نوع پروتکل، باید به netlink.h اضافه شود. سپس، ماژول هسته و برنامه میتوانند بلافاصله با استفاده از API های سبک سوکت کار کنند.