콘텐츠
tcping 은 내가 회사에서도 잘 사용하고 있는 IP / PORT 접속 가능 여부 확인 프로그램 이다.
개발을 하다 보면 여러 방화벽을 뚫고 서버에 접속하는 등 작업을 할 일이 많은데 네트워크 관련해서 개발자도 어느 정도 필수로 갖춰 야할 기본적인 지식이다.
예를 들면 최근 내가 게시했던 버추얼박스를 통해 SAP GUI 접속 시에도 tcping 을 통해서 해당 IP 와 PORT 로 정상적인 접근이 가능한지 확인이 가능하다.
tcping 을 사용하는 이유
일반적으로 우리는 cmd 를 통해서 기본적으로 ping 명령어를 사용해 특정 IP 의 접속 가능 여부를 확인한다. 그런데 이 명령어는 특정 ‘포트’ 를 확인할 수 없다.
예를 들어 우리가 google.co.kr 도메인의 443 (https) 포트를 지정해서 open 여부를 확인 할 수 없다.
이를 대체하기 위한 윈도우 명령어가 존재하는데 Telnet 이 있다.
ping 명령어의 사용법
tcping vs Telnet
그럼 왜 telnet 을 두고 굳이 tcping 을 사용 하는 걸까? 사실, 일반적인 port 확인 상황에선 telnet 명령어를 사용해서 port open 여부를 확인해도 상관은 없다.
그런데 여기서 Telnet 의 경우 해당 포트에 연결하여 메세지를 주고 받는 네트워크 프로토콜 이다. 그냥 단순히 Open 여부를 리턴 해 주는 것이 아니라 해당 포트에 연결 되어 서로 데이터를 주고 받을 수 있는 것이다.
그러다 보니 보안 상 문제로 이 Telnet 을 방화벽을 통해 차단해 두는 경우가 있다. 최근엔 Telnet 을 차단하고 SSH 만 열어두는 경우도 많다. (둘에 대한 전문적인 지식은 이후 정리해 봐야지 👍)
tcping 은 그저 단순하게 포트를 사용할 수 있는지, 응답 시간은 어느 정도 걸리는 지를 가볍게 확인하기에 더 적합한 것이다.
tcping.exe 다운로드 및 설치
tcping 을 사용하기 위해선 다운로드 후 설치를 해야 한다. 다운로드는 다음 사이트에 접속하고 tcping.exe 를 선택하면 된다.
tcping.exe – ping over a tcp connection (elifulkerson.com)
이 파일을 다운로드 받았으면 기본 C 드라이브 기준 “C:\Windows\System32” 경로 내 옮겨주면 끝이다.
tcping 사용법
사용법은 위에서 이야기한 ping, telnet 과 같이 cmd 에 접속해서 사용한다.
먼저 시작 버튼을 누르고 cmd 를 하나 실행한 다음 다음과 같이 입력하면 된다.
tcping [검사할 IP 혹은 도메인] [포트]
예를 들면 google 의 433 포트를 검사하고 싶을 때 tcping google.co.kr 443 을 입력해 보면 된다.
포트가 정상적으로 열렸다면 Port is open 메세지를, 응답이 실패하면 No response 메세지를 출력한다. 구글의 경우 http 로 접근을 막았는지 8080 포트는 No resposne 메세지를 뱉어낸다.
tcping 의 다양한 옵션
cmd 에 아무런 조건 없이 tcping 을 입력해 보면 다양한 옵션이 제공 된다. 옵션을 한국어로 번역하면 다음과 같다.
- -t: control-c를 통해 중지될 때까지 지속적으로 핑(ping) 보내기
- -n 5: 예를 들어, 5번 핑 보내기
- -i 5: 예를 들어, 5초마다 핑 보내기
- -w 0.5: 예를 들어, 응답을 기다리는 시간을 0.5초로 설정
- -d: 각 줄에 날짜와 시간 포함
- -b 1: 비프음 활성화 (1은 다운시, 2는 업시, 3은 변경시, 4는 항상)
- -r 5: 예를 들어, 5번 핑마다 호스트 이름을 다시 조회
- -s: 성공적인 핑이 있을 경우 자동으로 종료
- -v: 버전을 출력하고 종료
- -j: 기본 롤링 평균을 사용하여 지터 포함
- -js 5: (예를 들어) 5개의 롤링 평균 크기를 가진 지터 포함.
- –tee: ‘–tee’ 다음에 지정된 파일 이름으로 출력 미러링
- –append: ‘–tee’ 파일 이름에 덧붙이기 (덮어쓰기 대신)
- -4: ipv4 선호
- -6: ipv6 선호
- -c: 상태 변경시에만 출력 줄 표시
- –file: ‘서버-주소’를 파일 이름으로 취급하고, 파일의 각 줄을 순회
- 주의: –file은 -j 및 -c와 같은 옵션과 호환되지 않음 (다른 대상을 순회하기 때문)
- 서버-포트를 선택적으로 받아들임. 예를 들어, “example.org 443″는 유효함.
- 대안으로, -p를 사용하여 파일에 있는 모든 것에 대해 명령줄에서 포트를 강제로 지정.
- -g 5: 예를 들어, 연속으로 5번 실패하면 포기
- -S X: 소스 주소 X 지정. 소스는 클라이언트 컴퓨터의 유효한 IP여야 함.
- -p X: 포트를 지정하는 대체 방법
- –fqdn: 가능한 경우 각 줄에 도메인 이름 출력
- –ansi: ANSI 색상 시퀀스 사용 (cygwin)
- –color: 윈도우 색상 시퀀스 사용
HTTP 옵션:
- -h: HTTP 모드 (서버 주소에 http:// 없이 URL 사용)
- -u: 각 줄에 대상 URL 포함
- –post: GET 대신 POST 사용 (캐싱 방지 가능)
- –head: GET 대신 HEAD 사용
- –proxy-server: 프록시 서버 지정
- –proxy-port: 프록시 포트 지정
- –proxy-credentials: ‘Proxy-Authorization: Basic’ 헤더를 사용자명:비밀번호 형식으로 지정
디버그 옵션:
- -f: tcping이 최소한 한 바이트를 보내도록 강제
- –header: 원래 인수와 날짜를 포함한 헤더 포함. –tee 사용시 암시적으로 포함됨.
- –block: ‘차단’ 소켓을 사용하여 연결. 이것은 -w가 작동하지 않게 하고 기본 타임아웃(내 경우 최대 20초)을 사용. (하지만 활성 거부 연결과 타임아웃을 구별할 수 있음)
** 서버-포트를 전달하지 않으면 기본 값은 80임.
옵션을 사용할 땐 tcping [옵션] [IP 혹은 도메인] [포트] 형태로 사용하면 된다.