اولین فرایندی که تقریبا همه مدیران شبکه برای چک کردن یک ارتباط اینترنتی و یا شبکه داخلی انجام می دهند، استفاده از دستور ping است . از آنجایی که بسیاری از وب سایت ها و یا سرور های ارائه دهنده سرویس در اینترنت از خدمات Cloud و CDN استفاده نمی کنند
، بالاجبار در اکثر مواقع برای جلوگیری از حملات اینترنتی در فایروال های خود پاسخگویی به بسته های ICMP را مصدود نموده اند، لذا روش مناسب وسریع دیگری برای چک کردن بستر ارتباطی تقریبا وجود ندارد .این مشکل در زمان استفاده از دستور Trace هم کم و بیش مشاهده می شود چرا که این دستور نیز مانند فرایند PING از بسته های ICMP برای فرایند Trace استفاده میکند .در این پست قصد داریم ابزاری جایگزین دستور PING در ویندوز معرفی کنیم ،این نرم افزار ساده متن باز را که با ارسال بسته بر روی پورتهای مختلف پروتروکل TCP این مشکل را برطرف میکند معرفی کنیم .
ابزار TCPING
این نرم افزار ساده و سبک که از طریق لینک زیر در دسترس است ، به راحتی در سیستم عامل های ویندوزی قابل استفاده می باشد . با اجرای این نرم افزار در محیط Command-promt ویندوز می توانید به جای استفاده از دستور PING از دستور TCPing استفاده کنید . این ابزار با ارسال پکت های TCP بر روی پورت های خاص به سمت IP مورد نظر فرایند PING به وسیله پرتو کول ICMP را شبیه سازی می کند.
به صورت پیش فرض چنانچه آدرس مشخصی را TCPING کنیم بسته هایی را بروی پورت ۸۰ و در صورت عدم پاسخ برروی پورت ۸۰۸۰ ارسال میکند . در واقع ما با علم به اینکه وب سرویسی در IP مقصد پاسخگوی درخواستهای دریافتی برروی پورت ۸۰ می باشد از پکت ها ی TCP برای آزمون برقراری ارتباط استفاده می کنیم
در زیر مثالی ساده از مقایسه این ابزار با دستور Ping را مشاهده می کنید

NAME
tcping - simulate "ping" over tcp by establishing a connection to network hosts.
Measures the time for your system to [SYN], receive the target's [SYN][ACK] and send [ACK]. Note that the travel time for
the last ACK is not included - only the time it takes to be put on the wire a the sending end.
SYNOPSIS
tcping [-tdsvf46] [-i interval] [-n times] [-w interval] [-b n] [-r times][-j depth] [--tee filename] [-f] destination [port]
DESCRIPTION
tcping measures the time it takes to perform a TCP 3-way handshake (SYN, SYN/ACK, ACK) between itself and a remote host.
The travel time of the outgoing final ACK is not included, only the (minimal) amount of time it has taken to drop it on
the wire at the near end. This allows the travel time of the (SYN, SYN/ACK) to approximate the travel time of the
ICMP (request, response) equivalent.
OPTIONS
-۴ Prefer using IPv4
-۶ Prefer using IPv6
-t ping continuously until stopped via control-c
-n count
send _count_ pings and then stop. Default 4.
-i interval
Wait _interval_ seconds between pings. Default 1. Decimals permitted.
-w interval
Wait _interval_ seconds for a response. Default 2. Decimals permitted.
-d include date and time on every output line
-f Force sending at least one byte in addition to making the connection.
-g count
Give up after _count_ failed pings.
-b type
Enable audible beeps.
'-b 1' will beep "on down". If a host was up, but now its not, beep.
'-b 2' will beep "on up". If a host was down, but now its up, beep.
'-b 3' will beep "on change". If a host was one way, but now its the other, beep.
'-b 4' will beep "always".
-c only show output on a changed state
-r count
Every _count_ pings, we will perform a new DNS lookup for the host in case it changed.
-s Exit immediately upon a success.
-v Print version and exit.
-S source_address
Use _source_address_ as the tcp client's source address. Must be a valid IP address on the client system.
-j Calculate jitter. Jitter is defined as the difference between the last response time and the historical average.
-js depth
Calculate jitter, as with -j but with an optional _depth_ argument specified. If _depth_ is specified tcping will
use the prior _depth_ values to calculate a rolling average.
--tee _filename_
Duplicate output to the _filename_ specified. Windows can still not be depended upon to have a useful command line
environment. Don't tease me, *nix guys.
--file
Treat the "destination" option as a filename. That file becomes a source of destinations, looped through on a
line by line basis. Some options don't work in this mode and statistics will not be kept.
destination
A DNS name, an IP address, or (in "http" mode) a URL.
Do not specify the protocol ("http://") in "http" mode. Also do not specify server port via ":port" syntax.
For instance: "tcping http://www.elifulkerson.com:8080/index.html" would fail
Use the style: "tcping www.elifulkerson.com/index.html 8080" instead.
port
A numeric TCP port, 1-65535. If not specified, defaults to 80.
--header
include a header with the command line arguments and timestamp. Header is implied if using --tee.
--block
use a "blocking" socket to connect. This prevents -w from working, uses the default timeout of around 20 seconds,
and might break other expected behavior. However, it can detect an actively refused connection vs a timeout.
HTTP MODE OPTIONS
-h Use "http" mode. In http mode we will attempt to GET the specified document and return additional values including
the document's size, http response code, kbit/s.
-u In "http" mode, include the target URL on each output line.
--post Use POST instead of GET in http mode.
--head Use HEAD instead of GET in http mode.
--get Shorthand to invoke "http" mode for consistency's sake.
--proxy-server _proxyserver_
Connect to _proxyserver_ to request the url rather than the server indicated in the url itself.
--proxy-port _port_
Specify the numeric TCP port of the proxy server. Defaults to 3128.
--proxy-credentials username:password
Specify a username:password pair which is sent as a 'Proxy-Authorization: Basic' header.
RETURN VALUE
tcping returns 0 if all pings are successful, 1 if zero pings are successful and 2 for mixed outcome.
BUGS/REQUESTS
Please report bugs and feature requests to the author via contact information on http://www.elifulkerson.com
AVAILABILITY
tcping is available at http://www.elifulkerson.com/projects/tcping.php



