TCP/IP নেটওয়ার্কে সমস্যা ডায়াগনোজ করার জন্য Windows-এ অনেক টুল রয়েছে (ping, telnet, pathping, ইত্যাদি)। কিন্তু সব টুল রিমোট সার্ভারে খোলা নেটওয়ার্ক পোর্টের স্ট্যাটাস চেক বা স্ক্যান করার সুবিধা দেয় না। Portqry.exe ইউটিলিটি TCP/UDP পোর্টের রেসপন্স চেক করার সুবিধাজনক টুল যা বিভিন্ন নেটওয়ার্ক সার্ভিস এবং ফায়ারওয়াল সংক্রান্ত সমস্যা ডায়াগনোজ করতে সাহায্য করে। অধিকাংশ সময় Portqry ইউটিলিটি telnet কমান্ডের আরও ফাংশনাল রিপ্লেসমেন্ট হিসেবে ব্যবহৃত হয়, এবং telnet-এর সাথে ভিন্নভাবে এটি ওপেন UDP পোর্টও চেক করতে দেয়।
PortQry দিয়ে ওপেন UDP/TCP পোর্ট স্ক্যান করা
Windows Server 2003-এর জন্য PortQry-এর প্রথম ভার্সন নতুন OS ভার্সনে (Windows Server 2008 এবং নতুন) সঠিকভাবে কাজ করে না, তাই ইউটিলিটির দ্বিতীয় ভার্সন, PortQryV2, রিলিজ করা হয়েছিল। আজকাল আপনাকে এই ভার্সনটি ব্যবহার করতে হবে (আপনি PortQryV2 এখান থেকে ডাউনলোড করতে পারেন)।
Windows 10-এ Chocolatey প্যাকেজ ম্যানেজার দিয়ে PortQry ইনস্টল করা যায়:
choco install portqry
PortQryV2.exe আর্কাইভ ডাউনলোড ও এক্সট্রাক্ট করুন। কমান্ড প্রম্পট চালু করে ইউটিলিটির ডিরেক্টরিতে যান, উদাহরণস্বরূপ:
cd c:\tools\PortQryV2

উদাহরণস্বরূপ, একটি ক্লায়েন্ট থেকে DNS সার্ভারের উপলব্ধতা চেক করতে, এর ৫৩ TCP এবং UDP পোর্ট খোলা কিনা চেক করতে হবে। পোর্ট চেক কমান্ডের সিনট্যাক্স নিচের মতো:
PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]
- -n সার্ভারের নাম বা IP অ্যাড্রেস, যার উপলব্ধতা আপনি চেক করছেন;
- -e চেক করার পোর্ট নম্বর (১ থেকে ৬৫৫৩৫);
- -r চেক করার পোর্ট রেঞ্জ (উদাহরণস্বরূপ, ১:৮০);
- -p চেক করার জন্য ব্যবহৃত প্রোটোকল। এটি TCP, UDP বা BOTH হতে পারে (ডিফল্ট TCP)।
নোট. Test-NetConnection PowerShell কমান্ডলেট শুধু TCP পোর্টের উপলব্ধতা চেক করতে পারে, কিন্তু PortQry ইউটিলিটি TCP এবং UDP দুটো প্রোটোকল সাপোর্ট করে।
আমাদের উদাহরণে কমান্ডটি হবে:
PortQry.exe –n 10.0.25.6 -p both -e 53

Portqry তিনটি সম্ভাব্য পোর্ট স্টেট রিটার্ন করে:
- Listening — মানে পোর্ট খোলা আছে (কানেকশন এক্সেপ্ট করছে), এতে থেকে রেসপন্স পাওয়া গেছে;
- Not Listening — দেখাচ্ছে টার্গেট সিস্টেমে স্পেসিফাইড পোর্টে কানেকশন এক্সেপ্ট করার কোনো প্রসেস (সার্ভিস) নেই। UDP পোর্ট চেক করার সময় PortQry ICMP রেসপন্স “Destination Unreachable – Port Unreachable” পেয়েছে, অথবা TCP প্যাকেট Reset ফ্ল্যাগসহ পেয়েছে;
- Filtered — মানে PortQry স্পেসিফাইড পোর্ট থেকে কোনো রেসপন্স পায়নি বা রেসপন্স ফিল্টার হয়েছে। অর্থাৎ, এই পোর্ট টার্গেট সিস্টেমে লিসেন করছে না বা ফায়ারওয়াল/সিস্টেম সেটিংস দ্বারা এক্সেস রেস্ট্রিক্টেড। ডিফল্টভাবে TCP পোর্ট ৩বার পোল করা হয়, UDP ১বার।
আমাদের উদাহরণে, DNS সার্ভার ক্লায়েন্ট থেকে TCP এবং UDP দুটো পোর্ট দিয়ে উপলব্ধ।
TCP port 53 (domain service): LISTENING UDP port 53 (domain service): LISTENING
-o অ্যাট্রিবিউট ব্যবহার করে পোর্টের সিকোয়েন্স নির্দিষ্ট করে তাদের উপলব্ধতা চেক করা যায়:
portqry -n 10.0.25.6 -p tcp -o 21,110,143
পরবর্তী কমান্ড চেনা TCP/IP পোর্ট নম্বরের রেঞ্জ স্ক্যান করে এবং কানেকশন এক্সেপ্ট करनेवाले পোর্টের তালিকা রিটার্ন করে (TCP Port Scanner হিসেবে কাজ করে):
portqry -n 10.0.25.6 -r 1:1024 | find ": LISTENING"
ওপেন পোর্ট স্ক্যানের রেজাল্ট টেক্সট ফাইলে সেভ করা যায়:
portqry -n 10.0.25.6 -p tcp -r 20:500 -l scan_port_log.txt
Portqry ইউটিলিটির ইন্টারেক্টিভ মোড রয়েছে:
portqry –i
এখন PortQry Interactive Mode প্রম্পটে আপনি রিমোট কম্পিউটারের নাম এবং পোর্ট নম্বর নির্দিষ্ট করতে পারেন:
node srv-lic
set port=80
স্পেসিফাইড সার্ভারে পোর্ট চেক করতে q দবায় Enter চাপুন।

-wport এবং -wpid আর্গুমেন্ট ব্যবহার করে আপনি স্পেসিফাইড পোর্টের স্ট্যাটাস (wport), বা স্পেসিফাইড প্রসেসের সাথে জড়িত সব পোর্ট (wpid) লোকাল হস্টে মনিটর করতে পারেন।
উদাহরণস্বরূপ, নিচের কমান্ড নির্দিষ্ট লোকাল পোর্টের রেসপন্স ১০ মিনিট মনিটর করবে (উদাহরণস্বরূপ, RDP পোর্ট ৩৩৮৯), এবং যদি এর স্ট্যাটাস পরিবর্তন হয়, অ্যাডমিনকে নোটিফাই করবে (বিস্তারিত লগ LogFile.txt-এ থাকবে)। পোর্ট মনিটরিং বন্ধ করতে Ctrl-C চাপুন:
portqry -wport 3389 -wt 600 –l LogFile.txt -y -v
লোকাল কম্পিউটারে খোলা পোর্ট এবং এক্টিভ TCP/UDP কানেকশন সম্পর্কে তথ্য পাওয়া যায়:
portqry.exe -local
PortQry-এ এডভান্সড নেটওয়ার্ক সার্ভিসের ওপেন পোর্ট স্ট্যাটাস
PortQry-এ কিছু নেটওয়ার্ক সার্ভিসের বিল্ট-ইন সাপোর্ট রয়েছে। এগুলো হলো LDAP, Remote Procedure Calls (RPC), ইমেইল প্রোটোকল SMTP/POP3/IMAP4, SNMP, FTP/TFTP, NetBIOS Name Service, L2TP, ইত্যাদি। পোর্ট উপলব্ধতা চেক করার পাশাপাশি, টুলটি প্রোটোকোল-স্পেসিফিক রিকোয়েস্ট করে সার্ভিসের স্ট্যাটাস পায়।
উদাহরণস্বরূপ, নিচের কমান্ড ব্যবহার করে RPC এন্ডপয়েন্ট মッパর সার্ভিস (TCP/135) এর উপলব্ধতা চেক করা যায় এবং কম্পিউটারে রেজিস্টার্ড RPC এন্ডপয়েন্টের নামের তালিকা পাওয়া যায় (তাদের নাম, UUID, যেগুলোর সাথে বাউন্ডেড, এবং যেগুলোর সাথে সম্পর্কিত অ্যাপ্লিকেশন সহ)।
portqry -n 10.0.25.6 -p tcp -e 135
TCP port 135 (epmap service): LISTENING Using ephemeral source port Querying Endpoint Mapper Database… Server’s response: UUID: d95afe72-a6d5-4259-822e-2c84da1ddb0d ncacn_ip_tcp:10.0.25.6 [49152] UUID: 8975497f-93f3-4376-9c9c-fd2277495c27 Frs2 Service ncacn_ip_tcp:10.0.25.6 [5722] UUID: 6b5bd21e-528c-422c-af8c-a4079be4a448 Remote Fw APIs ncacn_ip_tcp:10.0.25.6 [63006] UUID: 12345678-1234-abcd-ef22-0123456789ab IPSec Policy agent endpoint ncacn_ip_tcp:10.0.25.6 [63006] UUID: 367abb81-9844-35f1-ad32-912345001003 ncacn_ip_tcp:10.0.25.6 [63002] UUID: 50cda2a3-574d-40b3-1d66-ee4aaa33a076 ncacn_ip_tcp:10.0.25.6 [56020] …….. UUID: 3c4428c5-f0ab-448b-bda1-6ce01eb0a6d5 DHCP Client LRPC Endpoint ncacn_ip_tcp:10.0.25.6 [49153] Total endpoints found: 61 ==== End of RPC Endpoint Mapper query response ==== portqry.exe -n 10.0.25.6 -e 135 -p TCP exits with return code 0x00000000.
অথবা Microsoft SQL Server-এ চলমান SQL Server Browser সার্ভিসের উপলব্ধতা এবং রেসপন্স চেক করা যায়:
PortQry.exe -n rome-sql01 -e 1434 -p UDP
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED Sending SQL Server query to UDP port 1434... Server's response: ServerName ROME-SQL01 InstanceName MSSQLSERVER IsClustered No Version 15.0.2000.5 tcp 53200 ServerName ROME-SQL01 InstanceName DBINVENT IsClustered No Version 15.0.2000.5 tcp 1433 ==== End of SQL Server query response ==== UDP port 1434 is LISTENING
আপনি দেখতে পাচ্ছেন, PortQry টুল শুধু ১৪৩৪/UDP পোর্টের উপলব্ধতা নয়, SQL সার্ভারের ভার্সন এবং SQL সার্ভারে চলমান ইনস্ট্যান্সের নাম এবং তাদের TCP পোর্টও দেখিয়েছে। প্রথম DBINVENT ইনস্ট্যান্স ডিফল্ট পোর্ট TCP/1433-এ লিসেন করছে, এবং দ্বিতীয় MSSQLSERVER RPC রেঞ্জ থেকে ফিক্সড TCP/53200 পোর্ট ব্যবহার করছে।

ডিভাইসে SNMP পোর্ট পোল করতে কমিউনিটি নাম নির্দিষ্ট করে:
portqry -n rome-sql1 -cn !snmp_trap! -e 161 -p udp
SMTP সার্ভারে TCP/25 পোর্ট চেক করার সময় আপনি সার্ভিস SMTP ব্যানার পেতে পারেন:
portqry -n mx.woshub.com -p tcp -e 25
PortQuery GUI ভার্সন
আদ্যে PortQry একমাত্র কনসোল (CLI) টুল ছিল। কমান্ড প্রম্পট ব্যবহার করতে না চাইলে ইউজারদের সুবিধার্থে Microsoft একটি সিম্পল গ্রাফিক্যাল ইন্টারফেস ডেভেলপ করেছিল Portqry-এর জন্য – PortQueryUI। আপনি অফিসিয়াল Microsoft ডাউনলোড ওয়েবসাইট থেকে PortQueryUI ডাউনলোড করতে পারেন।
বস্তুত:, PortQueryUI portqry-এর একটি গ্রাফিক্যাল অ্যাড-অন যা কমান্ড জেনারেট করে এবং রেজাল্ট গ্রাফিক্যাল উইন্ডোতে দেখায়।
এছাড়া PortQueryUI-তে জনপ্রিয় Microsoft সার্ভিসের উপলব্ধতা চেক করার জন্য বেশ কিছু প্রিডিফাইন্ড কোয়েরি সেট রয়েছে:
- Domain and trusts (Active Directory ডোমেন কন্ট্রোলারের ADDS সার্ভিস চেক)
- Exchange Server
- SQL Server
- Networking
- IP Sec
- Web Server
- Net Meeting
মনে হয় PortQueryUI-এর জন্য কোনো 스페শাল কমেন্ট দরকার নয়। স্ক্রিনশট দেখলে বুঝতে পারবেন। DNS name বা IP address দিন রিমোট সার্ভারের, একটি প্রিডিফাইন্ড সার্ভিস সিলেক্ট করুন (Query predefined service), বা ম্যানুয়ালি পোর্ট নম্বর দিন পোর্ট চেক করার জন্য (Manually input query ports) এবং Query বাটনে ক্লিক করুন।

PortQueryUI-তে সম্ভাব্য রিটার্ন কোড (স্ক্রিনশটে হাইলাইট করা):
- 0 (0x00000000) – কানেকশন সফলভাবে স্থাপন হয়েছে এবং পোর্ট উপলব্ধ;
- 1 (0x00000001) – স্পেসিফাইড পোর্ট অনুপলব্ধ বা ফিল্টারড;
- 2 (0x00000002 – UDP কানেকশন উপলব্ধতা চেক করার সময় নরমাল রিটার্ন কোড, কারণ ACK রেসপন্স রিটার্ন হয় না।