نرم افزار گنو/لینوکس

Nc چاقوی سوئیسیTCP/IP

نوشته شده توسط اروند طباطبایی

ساده‌ترین الگوی کاربرد nc الگوی زیر است:

$ nc host port

 

با اجرای یک دستور با الگوی بالا، nc سعی می‌کند تا یک اتصال TCP روی پورت و مقصد مشخص شده ایجاد کند. پس از آن ورودی استاندارد شما(stdin) در این کانکشن به سوی مقصد فرستاده شده و هر جوابی که سرور مقصد بدهد را در خروجی استاندارد (stdout) می ریزد. این عملیات همین‌طور ادامه پیدا می‌کند تا یکی از طرفین اتصال کانکشن را تخریب کند.دقت کنید که این عملیات با بیشتر برنامه‌ها که با ارسال EOF (نشانگر پایان ورودی که معمولاً با Ctrl+D ارسال می شود) کارشان را تمام می‌کنند فرق دارد.
Nc یا netcat می‌تواند با باز کردن یکی از پورت های سیستم و با قبول کردن کانکشن ها روی آن پورت در نقش یک سرور کوچک هم کار کند. پس برای nc چندان فرقی نمی‌کند که در نقش یک سرور انجام وظیفه کند یا در جایگاه یک کلاینت. این برنامه در هر صورت به یک مقصد اطلاعات ارسال می‌کند و اگر جوابی وجود داشت آن را دریافت می کند. زمان بسته شدن اتصال هم می‌تواند طوری تنظیم شود که اگر پس از مدت زمانی اطلاعاتی رد و بدل نشد کانکشن بسته شود.
از nc به عنوان چاقوی سوئیسی TCP/IP نام بردیم اما این برنامه روی پروتکل UDP هم می‌تواند کار کند. از UDP معمولاً وقتی استقاده می‌شود که درستی و کامل بودن اطلاعات نسبت به سریع رسیدن اطلاعات ارزش کمتری دارد، مثلاً بازی‌های آنلاین معمولاً از این پروتکل استفاده می کنند. شاید بیشتر کار های ما روی TCP باشد اما به هر حال ساپورت این برنامه از UDP یک امتیاز محسوب می شود.
چند مثال:
با جرای دستور زیر می‌تواند به پورت ۴۲ هاست host.example.com متصل شوید و پورتی که مقصدتان به آن جواب خواهد داد پورت ۳۱۳۳۷ خواهد بود. اگرپنج ثانیه دیتایی رد و بدل نشود اتصال از بین می رود.

$ nc -p 31337 -w 5 host.example.com 42

 

دستور زیر به مقصد پورت ۵۳ هاست host.example.com یک اتصال UDP ایجاد می کند.

$ nc -u host.example.com 53

 

دستور زیر یک فایل Unix Domain Socket به آدرس داده شده می‌سازد و روی آن گوش می‌کند.

$ nc -lU /var/tmp/dsocket

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه