سوکت دامنه یونیکس

از ویکی‌پدیا، دانشنامهٔ آزاد

سوکت دامنه یونیکس (به انگلیسی: Unix domain socket) یا سوکت IPC (به انگلیسی: IPC socket) یک نوع درگاه مخابراتی داده است که از طریق آن می‌توان برای منتقل کردن داده‌ها بین دو فرایند که هر دو بر روی یک سیستم‌عامل میزبان اجرا می‌شوند، استفاده کرد. در حالی که سوکت‌های دامنه یونیکس از نظر کاربرد به لوله‌های نام‌دار شباهت دارند، آنها را می‌توان به صورت SOCK_STREAM یا SOCK_SEQPACKET و همینطور SOCK_DGRAM ایجاد کرد، در حالی که لوله‌های نام‌دار تنها یک جریان داده ساده هستند. فرایندهایی که از سوکت‌های دامنه یونیکس استفاده می‌کنند، نیازی نیست که جد یکسانی داشته باشند. رابط‌های مرتبط با کار کردن با سوکت‌های دامنه یونیکس عمدتاً همان رابط‌های سوکت‌های برکلی هستند، اما از یک پروتکل زیرساختی در آنها استفاده نمی‌شود. سوکت‌های دامنه یونیکس نسبت به سوکت‌های عادی سربار کمتری دارند، آنها نیازی به بررسی کردن چک‌سام ندارند، سربار مدیریت پروتکل ندارند، سربار ناشی از مدیریت شماره ترتیب بسته‌ها، و فرستادن بسته ACK را هم ندارند. سوکت‌های دامنه یونیکس در استاندارد پازیکس گنجانده شده‌اند و از سیستم‌عامل‌های سازگار با این استاندارد انتظار می‌رود که از آنها پشتیبانی کند.

سوکت‌های دامنه یونیکس از فایل‌سیستم به عنوان فضای نام آدرس‌دهی خود استفاده می‌کنند. پروسه‌ها از طریق i-nodeها به این سوکت‌ها دسترسی دارند. به این ترتیب دو پروسه می‌توانند یک سوکت یکسان را باز کرده و به مبادله داده‌ها بپردازند. با این حال، این ارتباط تماماً در هسته سیستم‌عامل انجام می‌شود.

از جمله کاربردهای رایج سوکت‌های دامنه یونیکس، علاوه بر ارسال کردن داده‌ها، ارسال کردن توصیف‌گرهای پرونده با استفاده از فراخوان‌های سیستمی sendmsg و recvmsg است. به این ترتیب، پروسه ارسال‌کننده با ارسال کردن یک توصیف‌گر به یک پروسه دریافت‌کننده، می‌تواند به او اجازه دسترسی به توصیف‌گری را بدهد که متعلق به خودش نیست و در حالت عادی به آن دسترسی ندارد. از این قابلیت می‌توان برای پیاده‌سازی کردن Capability-based security استفاده کرد. برای مثال، آنتی‌ویروس Clam می‌تواند با استفاده از این قابلیت به صورت یک دیمن با اختیارات محدود اجرا شود، اما همزمان قادر باشد هر فایلی که برای او از طریق سوکت‌های دامنه یونیکس ارسال می‌شود را اسکن کند.

در برخی از سیستم‌ها، pipeها با استفاده از سوکت‌های دامنه یونیکس پیاده‌سازی می‌شوند. فراخوان socketpair یک جفت سوکت دامنه یونیکس برمی‌گرداند که از هر دو هم می‌توان برای خواندن و هم نوشتن استفاده کرد.

منابع[ویرایش]

Wikipedia contributors. Unix domain socket. Wikipedia, The Free Encyclopedia. January 31, 2015, 02:26 UTC. Available at: http://en.wikipedia.org/w/index.php?title=Unix_domain_socket&oldid=644931346. Accessed February 19, 2015.