آنچه در این مقاله میخوانید
- نکات مهم و حائز اهمیت در استفاده از Netcat
- سینتکس عمومی Netcat
- تفاوت بین nc، ncat و netcat-openbsd
- استفاده از Netcat برای اسکن پورت
- برقراری ارتباط دوطرفه با Netcat
- استفاده از Netcat در دیباگ بلادرنگ
- انتقال فایل با Netcat
- تفسیر عدم خروجی و Timeout (بهویژه در UDP)
- مقایسه Netcat با telnet و socat
- سوالات متداول
- جمعبندی
استفاده از Netcat برای برقراری و آزمایش اتصالات TCP و UDP در لینوکس
۱۰ دی ۱۴۰۴
لینوکس مجموعهای بزرگ از ابزارهای قدرتمند خط فرمان را بهصورت پیشفرض در اختیار کاربران قرار میدهد که در اغلب توزیعها بدون نیاز به نصب اضافی در دسترس هستند. در میان این ابزارها، Netcat بهعنوان یک ابزار شبکهای چندمنظوره (Versatile) برتر شناخته خواهد شد. ابزاری که امکان برقراری ارتباط مستقیم با سیستمهای راهدور از طریق پروتکلهای TCP و UDP را فراهم میکند.
مدیران سیستم و توسعهدهندگان میتوانند از Netcat برای طیف وسیعی از سناریوها استفاده کنند، از جمله اسکن پورتها، تست سرویسها، انتقال فایل، عیبیابی ارتباطات شبکه و دیباگ پروتکلها.
در این راهنمای جامع از لیارا، نحوه استفاده از Netcat برای برقراری و تست اتصالات TCP و UDP در سناریوهای عملی بررسی خواهیم کرد. همچنین با کاربردهای Netcat در ارسال و دریافت داده، شناسایی پورتهای باز، رفع مشکلات ارتباطی، راهاندازی چت ساده و انتقال موقت فایل آشنا خواهید شد.
سرور مجازی لینوکس با کیفیت بالا و منابع اختصاصی
✅ سرعت بالا ✅ امنیت قوی ✅ منابع اختصاصی
خرید سرور مجازی لینوکس
آنچه در ادامه خواهید خواند:
- نکات مهم و حائز اهمیت در استفاده از Netcat
- سینتکس عمومی Netcat
- تفاوت بین nc، ncat و netcat-openbsd
- استفاده از Netcat برای اسکن پورت
- برقراری ارتباط دوطرفه با Netcat
- استفاده از Netcat در دیباگ بلادرنگ
- انتقال فایل با Netcat
- تفسیر عدم خروجی و Timeout (بهویژه در UDP)
- مقایسه Netcat با telnet و socat
- سوالات متداول
- جمع بندی
نکات مهم و حائز اهمیت در استفاده از Netcat
- Netcat یک ابزار شبکهای انعطافپذیر است که امکان برقراری اتصال TCP و UDP را فراهم میکند و برای تست، دیباگ و انتقال داده کاربرد دارد.
- قابلیتهای پایه Netcat شامل اتصال به پورتها، اسکن بازهای از پورتها و ارسال داده خام است. گزینههایی مانند
-u(برای UDP)،-z(اسکن بدون انتقال داده) و-v(حالت verbose) بهطور گسترده استفاده میشوند. - Netcat میتواند هم در نقش کلاینت و هم سرور عمل کند و ارتباط دوطرفه، انتقال فایل و حتی پیادهسازی چت یا وبسرور ساده را ممکن سازد.
- نسخههای مختلف Netcat رفتار و قابلیتهای متفاوتی دارند. شناخت نسخه مورد استفاده برای جلوگیری از نتایج غیرمنتظره ضروری است.
- Netcat ابزار قدرتمندی برای دیباگ شبکه است و امکان ارسال دستی هدرهای HTTP، مشاهده بنر سرویسها و شبیهسازی رفتار کلاینت در پروتکلهایی مانند SMTP، DNS و HTTP را فراهم میکند.
- در UDP تایید تحویل داده وجود ندارد؛ بنابراین نبود خروجی لزوماً بهمعنای خطا نیست. ابزارهایی مانند tcpdump برای بررسی ترافیک توصیه میشوند.
- Netcat همیشه بهترین ابزار نیست؛ در برخی سناریوها، ابزارهایی مانند socat یا حتی telnet انتخاب مناسبتری هستند.

سینتکس عمومی Netcat
بهصورت پیشفرض، Netcat یک اتصال TCP به میزبان مقصد برقرار میکند.
netcat [options] host port
این دستور مشابه عملکرد دستور قدیمی telnet در لینوکس است، با این تفاوت که ارتباط کاملاً رمزنگارینشده است.
برای ارسال بستههای UDP بهجای TCP، میتوان از گزینه -u استفاده کرد:
netcat -u host port
همچنین امکان مشخصکردن بازهای از پورتها وجود دارد:
netcat host startport-endport
این حالت معمولا همراه با گزینههای اضافی استفاده میشود.
در بسیاری از سیستمها، دستور nc یک لینک نمادین به یکی از نسخههای Netcat مانند netcat-openbsd یا ncat است؛ بنابراین اگرچه نامها مشابه هستند، رفتار آنها ممکن است متفاوت باشد.
تفاوت بین nc، ncat و netcat-openbsd
نسخه پیشفرض Netcat در اغلب توزیعهای مبتنی بر Debian مانند Ubuntu است. این نسخه فعالانه نگهداری میشود و قابلیتهایی مانند موارد زیر را دارد:
- تعیین timeout با
-w - اسکن بدون ارسال داده با
-z - غیرفعالسازی DNS با
-n - پشتیبانی از UDP با
-u - پشتیبانی از IPv6 با
-6
این نسخه پرکاربردترین پیادهسازی Netcat در مستندات لینوکس است.
نصب:
sudo apt install netcat-openbsd
nc
دستور nc خود یک ابزار مستقل نیست، بلکه معمولاً به یکی از نسخههای Netcat اشاره میکند. برای بررسی نسخه واقعی:
which nc
ls -l $(which nc)
ncat
ابزاری بازنویسیشده توسط پروژه Nmap است و در توزیعهای Red Hat محور (مانند CentOS و RHEL) بهصورت پیشفرض استفاده میشود. ویژگیهای شاخص آن:
- پشتیبانی از SSL/TLS
- قابلیت broker
- پشتیبانی از پراکسی HTTP
- امکانات پیشرفته برای ورودی و خروجی
مثال:
ncat --ssl -l 4444
برخی گزینهها در ncat ممکن است رفتار متفاوتی داشته باشند یا غیرفعال شده باشند.

استفاده از Netcat برای اسکن پورت
Netcat میتواند برای اسکن ساده پورتها استفاده شود، هرچند ابزار تخصصیتری مانند nmap مناسبتر هستند.
netcat -z -v domain.com 1-1000
برای افزایش سرعت اسکن با IP و بدون DNS:
netcat -z -n -v 198.51.100.0 1-1000
فیلتر خروجی:
netcat -z -n -v 198.51.100.0 1-1000 2>&1 | grep succeeded
برقراری ارتباط دوطرفه با Netcat
راهاندازی Listener:
netcat -l 4444
اتصال از سمت کلاینت:
netcat domain.com 4444
پس از برقراری اتصال، ارتباط کاملاً دوطرفه خواهد بود.
استفاده از Netcat در دیباگ بلادرنگ
روشهای زیر را با دقت انجام دهید تا خروجی مورد نظر خود را ببینید.
مشاهده بنر سرویسها
nc mail.example.com 25
ارسال دستی درخواست HTTP
printf "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80

انتقال فایل با Netcat
گیرنده:
nc -l 4444 > received_file
فرستنده:
nc domain.com 4444 < original_file
انتقال دایرکتوری با tar
گیرنده:
nc -l 4444 | tar xzvf -
فرستنده:
tar -czf - * | nc domain.com 4444
راهاندازی وبسرور ساده با Netcat
(echo -e “HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n”; cat index.html) | nc -l 8888
نسخه دائمی:
while true; do printf ‘HTTP/1.1 200 OK\n\n%s’ “$(cat index.html)” | nc -l 8888; done
این روش صرفاً برای تست است و برای محیط واقعی توصیه نمیشود.
تفسیر عدم خروجی و Timeout (بهویژه در UDP)
- TCP بدون خروجی معمولاً بهمعنای انتظار سرویس برای ورودی است
- UDP ذاتاً بدون تأیید تحویل است
- برای بررسی UDP از ابزارهایی مانند
tcpdumpاستفاده کنید
مقایسه Netcat با telnet و socat
| ویژگی | Telnet | Netcat | Socat |
|---|---|---|---|
| TCP | دارد | دارد | دارد |
| UDP | ندارد | دارد | دارد |
| SSL | ندارد | محدود | دارد |
| انعطافپذیری | کم | متوسط | بسیار بالا |
سوالات متداول
در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جوابهای کوتاه اما مفیدی دادهایم که با استفاده از آن میتوانید به سوال خود پاسخ صحیحی را بدهید.
Netcat چیست و چه کاربردی دارد؟
Netcat یک ابزار خط فرمان شبکهای است که برای برقراری ارتباط مستقیم بین سیستمها از طریق پروتکلهای TCP و UDP استفاده میشود. این ابزار در سناریوهایی مانند تست سرویسها، اسکن پورت، انتقال فایل، دیباگ ارتباطات شبکه و شبیه سازی رفتار کلاینت کاربرد بسیاری را دارد.
تفاوت Netcat با telnet چیست؟
هر دو ابزار برای برقراری اتصال TCP خواهند بود، اما Netcat بسیار منعطف تر است و برای قابلیتهایی مانند پشتیابی از UDP، انتقال فایل، اسکن پورت و استفاده در نقش سرور را نیز ارائه میدهد. talent بیشتر برای تست ساده سرویسها استفاده میشود و امکانات آن محدودتر خواهد بود.
آیا Netcat از پروتکل UDP پشتیبانی میکند؟
بله، Netcat از پروتکل UDP پشتیبانی میکند و با استفاده از گزینه -u میتوان بستههای UDP ارسال یا دریافت کرد. با این حال، به دلیل ماهیت UDP، عدم دریافت پاسخ لزوماً بهمعنای وجود خطا در ارتباط نیست.
چرا هنگام استفاده از UDP در Netcat خروجی دریافت نمیکنم؟
پروتکل UDP فاقد مکانیزم تأیید تحویل داده است. در نتیجه، در بسیاری از موارد هیچ پاسخ یا خروجیای نمایش داده نمیشود. برای بررسی صحت ارسال یا دریافت دادههای UDP، استفاده از ابزارهایی مانند tcpdump یا wireshark توصیه میشود.
تفاوت بین nc، ncat و netcat-openbsd چیست؟
- nc معمولاً یک لینک نمادین است که به یکی از نسخههای Netcat اشاره میکند.
- netcat-openbsd نسخه پیشفرض در اغلب توزیعهای مبتنی بر Debian مانند Ubuntu است و پایدارترین پیادهسازی Netcat محسوب میشود.
- ncat نسخه توسعهیافته توسط پروژه Nmap است که قابلیتهای پیشرفتهتری مانند پشتیبانی از SSL/TLS و پراکسی را ارائه میدهد.
شناخت نسخه مورد استفاده برای جلوگیری از رفتارهای غیرمنتظره بسیار مهم است.
Netcat برای اسکن پورتها مناسب است؟
Netcat میتواند برای اسکن ساده پورتها استفاده شود، اما ابزارهای تخصصیتری مانند nmap دقت، سرعت و امکانات بسیار بیشتری در اختیار قرار میدهند. Netcat بیشتر برای بررسی سریع یا تست دستی مناسب است.

جمعبندی
Netcat ابزاری قدرتمند و انعطافپذیر برای تعامل سطح پایین با شبکه است که در تست، دیباگ، انتقال داده و بررسی سرویسها نقش مهمی ایفا میکند. اگرچه برای محیطهای تولیدی و امن توصیه نمیشود، اما همچنان یکی از ابزارهای ضروری هر مدیر سیستم و توسعهدهنده محسوب میشود.