네트워크 트러블슈팅을 위한 필수 도구: TCPing

네트워크 문제를 진단할 때, 많은 엔지니어들이 ping.exe와 tracert.exe와 같은 기본 도구들을 활용합니다. 이 두 프로그램은 호스트의 응답 상태를 확인하는 데 매우 유용합니다. 특히 ping은 호스트나 장비들이 네트워크에서 정상적으로 동작하는지 확인하는데 사용되죠. 하지만 특정 서비스의 응답 상태를 확인하려면 다른 도구가 필요합니다.

오늘 소개할 도구는 TCP 서비스의 응답 여부를 확인할 수 있는 tcping입니다. TCPing은 단순히 호스트의 응답을 확인하는 것에 그치지 않고, 특정 포트에 대한 TCP 서비스 응답까지 확인할 수 있어 보다 세밀한 진단이 가능합니다.

TCPing의 사용 방법

tcping은 ping과 유사하게 DOS 명령어를 통해 실행됩니다. 예를 들어, 특정 IP 주소에 대해 지속적인 응답을 확인하려면 ping x.x.x.x -t 명령어를 사용합니다. 이와 비슷하게, tcping도 -t 옵션을 통해 지속적인 TCP 응답을 확인할 수 있습니다. 다만, ping과 달리 tcping에서는 -t 옵션을 IP 주소 앞에 지정합니다.

tcping -t www.google.com 443




위 명령어는 www.google.com에 대한 TCP/443 포트의 응답을 테스트합니다. 이 경우, tcping은 도메인 네임 서버(DNS)를 통해 www.google.com의 IP 주소를 자동으로 조회하고, 해당 IP의 443번 포트에 대한 응답을 요청하게 됩니다. 만약 포트가 정상적으로 열려있다면, "Port is open" 메시지를 반환하며, 그렇지 않을 경우 "No response"라는 메시지가 나타납니다.

실전 예제: HTTPS 포트 테스트

아래는 HTTPS 서비스에 자주 사용되는 TCP/443 포트를 테스트하는 예제입니다. 잘 알려진 서비스 포트에 대해 직접 테스트를 해보면 TCPing의 유용성을 확인할 수 있습니다.

사용법: tcping -t "도메인 또는 IP"  "포트"

이와 같이, 네트워크나 보안 장비, 서버 엔지니어들에게 TCPing은 필수적인 도구로 자리잡고 있습니다. 네트워크 문제를 시각적으로 확인하고, 빠르게 해결하기 위해서는 이 도구의 활용이 필수적입니다.

TCPing 다운로드 및 설치

tcping.exe는 Windows에 기본 제공되는 프로그램이 아니므로, 사용하려면 따로 다운로드 받아야 합니다. 정식 홈페이지를 통해 무료로 다운로드 받을 수 있으며, 환경변수(PATH)에 추가하여 사용하거나, 간편하게 Windows의 system32 폴더에 복사하여 사용할 수 있습니다.

다운로드 링크: TCPing 다운로드


TCP Ping 상세 명령어

--------------------------------------------------------------
tcping.exe by Eli Fulkerson
Please see http://www.elifulkerson.com/projects/ for updates.
--------------------------------------------------------------

Usage: tcping [-flags] server-address [server-port]

Usage (full): tcping [-t] [-d] [-i interval] [-n times] [-w ms] [-b n] [-r times] [-s] [-v] [-j] [-js size] [-4] [-6] [-c] [-g count] [-S source_address] [--file] [--tee filename] [-h] [-u] [--post] [--head] [--proxy-port port] [--proxy-server server] [--proxy-credentials username:password] [-f] server-address [server-port]

-t : ping continuously until stopped via control-c  
ping을 Ctrl+C로 중지할 때까지 지속적으로 보냅니다.

-n 5 : send 5 pings  
5번의 ping을 보냅니다.

-i 5 : ping every 5 seconds  
5초마다 ping을 보냅니다.

-w 0.5 : wait 0.5 seconds for a response  
응답을 기다리는 시간은 0.5초입니다.

-d : include date and time on each line  
각 줄에 날짜와 시간을 포함합니다.

-b 1 : enable beeps (1 for on-down, 2 for on-up, 3 for on-change, 4 for always)  
경고음을 활성화합니다 (1은 연결 끊김 시, 2는 연결 활성 시, 3은 상태 변경 시, 4는 항상).

-r 5 : relookup the hostname every 5 pings  
5번의 ping마다 호스트 이름을 다시 조회합니다.

-s : automatically exit on a successful ping  
성공적인 ping 시 자동으로 종료합니다.

-v : print version and exit  
버전을 출력한 후 종료합니다.

-j : include jitter, using default rolling average  
기본 롤링 평균을 사용하여 지터를 포함합니다.

-js 5 : include jitter, with a rolling average size of 5  
롤링 평균 크기를 5로 설정하여 지터를 포함합니다.

--tee : mirror output to a filename specified after '--tee'  
'--tee' 이후 지정된 파일 이름으로 출력을 반영합니다.

--append : Append to the --tee filename rather than overwriting it  
기존 파일을 덮어쓰지 않고 '--tee' 파일 이름에 추가합니다.

-4 : prefer ipv4  
IPv4를 선호합니다.

-6 : prefer ipv6  
IPv6를 선호합니다.

-c : only show an output line on changed state  
상태 변경 시에만 출력 줄을 표시합니다.

--file : treat the "server-address" as a filename instead, loop through file line by line  
"server-address"를 파일 이름으로 취급하며, 파일의 각 줄을 순환합니다.

-g 5 : give up if we fail 5 times in a row  
연속 5번 실패하면 중지합니다.

-S _X_ : Specify source address _X_. Source must be a valid IP for the client computer.  
소스 주소 _X_를 지정합니다. 소스는 클라이언트 컴퓨터의 유효한 IP여야 합니다.

-p _X_ : Alternate method to specify port  
포트를 지정하는 다른 방법입니다.

--fqdn : Print domain name on each line if available  
사용 가능하면 각 줄에 도메인 이름을 출력합니다.

--ansi : Use ANSI color sequences (cygwin)  
ANSI 색상 시퀀스를 사용합니다 (cygwin).

--color : Use Windows color sequences  
Windows 색상 시퀀스를 사용합니다.

**HTTP Options:**

-h : HTTP mode (use url without http:// for server-address)  
HTTP 모드 (server-address에 http:// 없이 URL을 사용합니다).

-u : include target URL on each line  
각 줄에 대상 URL을 포함합니다.

--post : use POST rather than GET (may avoid caching)  
GET 대신 POST를 사용합니다 (캐싱을 피할 수 있습니다).

--head : use HEAD rather than GET  
GET 대신 HEAD를 사용합니다.

--proxy-server : specify a proxy server  
프록시 서버를 지정합니다.

--proxy-port : specify a proxy port  
프록시 포트를 지정합니다.

--proxy-credentials : specify 'Proxy-Authorization: Basic' header in format username:password  
'Proxy-Authorization: Basic' 헤더를 username:password 형식으로 지정합니다.

**Debug Options:**

-f : force tcping to send at least one byte  
최소한 1바이트를 전송하도록 tcping을 강제합니다.

--header : include a header with original args and date. Implied if using --tee.  
원래의 인수와 날짜를 포함하는 헤더를 추가합니다. --tee를 사용할 경우 자동으로 포함됩니다.

--block : use a 'blocking' socket to connect. This prevents -w from working and uses the default timeout (as long as 20 seconds in my case). However, it can detect an actively refused connection vs a timeout.  
'blocking' 소켓을 사용하여 연결합니다. 이는 -w 옵션의 작동을 방해하며 기본 타임아웃을 사용합니다(최대 20초). 그러나 이 방법으로는 연결 거부와 타임아웃을 구분할 수 있습니다.

If you don't pass server-port, it defaults to 80.  
서버 포트를 지정하지 않으면 기본값은 80입니다.

UDP 응답 확인: UDPing

참고로, UDP 응답 확인을 위한 udping이라는 프로그램도 있습니다. UDP 프로토콜은 TCP와 다르게 연결을 확립하지 않고 데이터를 전송하기 때문에, 네트워크 환경에 따라 udping도 유용할 수 있습니다. udping은 상대적으로 덜 사용되지만, 특정 상황에서 그 유용성을 테스트해볼 만한 도구입니다.

댓글 쓰기

다음 이전