Linux / 명령어 / nc - TCP·UDP 연결과 포트 점검

nc(Netcat)는 TCP·UDP 연결을 열거나 수신해 데이터를 주고받는 범용 도구입니다. 허가된 호스트의 포트 접근 여부를 빠르게 확인할 때도 사용합니다.

nc 명령어란?

Linux 배포판에는 OpenBSD netcat, Nmap Ncat 등 서로 다른 구현이 nc라는 이름으로 설치될 수 있습니다. -z는 데이터를 보내지 않고 연결 가능 여부를 확인하고, -v는 진단 메시지를 표시합니다. 일부 옵션과 수신 모드 문법은 구현마다 다릅니다.

기본 문법

nc [옵션] 호스트 포트

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man nc으로 현재 시스템의 설명을 확인하세요.

사용 예제

로컬 SSH 포트 점검

자신의 컴퓨터의 TCP 22번 포트가 연결을 받는지 확인합니다.

nc -vz 127.0.0.1 22

연결 시간 제한

응답 없는 로컬 포트에서 오래 기다리지 않도록 제한합니다.

nc -w 3 -vz 127.0.0.1 80

직접 연결

자신의 컴퓨터의 서비스가 보내는 데이터를 관찰합니다. Ctrl+C로 종료합니다.

nc -v 127.0.0.1 22

포트 연결 검사 결과 해석

nc -vz는 데이터를 주고받지 않고 TCP 포트 연결 가능 여부를 간단히 확인할 수 있습니다. 옵션 지원과 출력 문구는 netcat 구현에 따라 다릅니다.

nc -vz example.com 443

연결에 성공했을 때 가능한 출력 예시:

Connection to example.com 443 port [tcp/https] succeeded!

연결 성공은 해당 포트가 TCP 연결을 받았다는 뜻일 뿐 TLS 인증서나 HTTP 응답이 정상이라는 뜻은 아닙니다. 타임아웃이면 방화벽·경로·서버 대기 상태를, 즉시 거부되면 대상에서 연결을 받지 않는지 살펴보세요. 허가받은 대상에만 검사 패킷을 보내세요.

주요 옵션과 형식

옵션·형식 설명
-z 데이터 전송 없이 연결 가능 여부를 점검합니다.
-v 진단 출력을 자세히 표시합니다.
-w 초 연결·입출력 시간 제한을 설정합니다. 구현별 의미가 다를 수 있습니다.
-u UDP 모드로 사용합니다.
-l 연결을 기다리는 수신 모드입니다. 구현별 문법을 확인합니다.

사용할 때 주의할 점

포트가 열렸다는 것은 애플리케이션이 정상 동작하거나 인증이 안전하다는 보장이 아닙니다. UDP의 -z 결과는 응답이 없어 해석이 특히 어렵습니다. 외부 호스트 점검은 소유자 허가를 받은 범위에서만 하세요. nc -h로 현재 구현의 옵션을 확인합니다.

자주 묻는 질문

nc와 ncat은 같은 도구인가요?

둘 다 Netcat 계열이지만 구현이 다를 수 있습니다. 설치된 패키지와 nc -h 출력을 확인해 옵션을 구분하세요.

공식 문서

옵션의 정확한 동작과 구현별 차이는 nc 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / pgrep - 조건에 맞는 프로세스 ID 검색

Linux / 명령어 / pgrep - 조건에 맞는 프로세스 ID 검색

Linux pgrep 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / uptime - 시스템 가동 시간과 부하 확인

Linux / 명령어 / uptime - 시스템 가동 시간과 부하 확인

Linux uptime 명령어의 가동 시간과 1분·5분·15분 평균 부하를 읽는 방법을 설명합니다. CPU 개수, I/O 대기와 함께 부하를 진단하는 순서도 정리합니다.

Linux / 명령어 / diff - 텍스트 파일과 디렉터리 차이 비교

Linux / 명령어 / diff - 텍스트 파일과 디렉터리 차이 비교

Linux diff 명령어로 텍스트 파일과 디렉터리의 차이를 비교하는 방법을 설명합니다. unified 형식, 재귀 비교, 공백 무시와 종료 상태를 정리합니다.

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux tail 명령어로 파일의 마지막 행과 바이트를 확인하고 새로 추가되는 로그를 추적하는 방법을 설명합니다. -n, -f, -F 차이와 로그 로테이션, 필터링 및 여러 파일 모니터링 예제를 정리합니다.

Linux / 명령어 / pkill - 이름으로 프로세스에 시그널 보내기

Linux / 명령어 / pkill - 이름으로 프로세스에 시그널 보내기

Linux pkill 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux rmdir 명령어로 빈 디렉터리와 비어 있는 상위 경로를 안전하게 삭제하는 방법을 설명합니다. rm -r과의 차이, 실패 원인과 스크립트 사용법도 알아봅니다.

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux mktemp 명령어로 예측하기 어려운 이름의 임시 파일과 디렉터리를 안전하게 만드는 방법을 설명합니다. 템플릿, TMPDIR, trap을 이용한 정리와 -u 옵션의 위험도 알아봅니다.

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux ssh-keygen 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / mount - 파일 시스템 연결 상태 확인과 마운트

Linux / 명령어 / mount - 파일 시스템 연결 상태 확인과 마운트

Linux mount 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / head - 파일 앞부분의 줄과 바이트 출력

Linux / 명령어 / head - 파일 앞부분의 줄과 바이트 출력

Linux head 명령어로 파일의 처음 몇 줄이나 바이트를 출력하는 방법을 설명합니다. 여러 파일, 음수 개수, 파이프 활용과 바이너리 데이터 주의점도 정리합니다.