리눅스의 nc(netcat)와 윈도우에서 많이 쓰던 telnet은 둘 다 “포트 열려 있는지 찍어보는 용도”로 함께 언급되지만, 태생과 기능 범위가 꽤 다르다. 용도 정리 관점에서 보면 nc는 범용 네트워크 유틸리티고, telnet은 원래 “원격 터미널 프로토콜 클라이언트”에 가깝다.
기본 성격 차이
-
nc: TCP/UDP 소켓에 붙어서 표준입출력을 그대로 데이터 스트림으로 흘려보내는 범용 네트워크 도구다. -
telnet: 원격 호스트에 텍스트 터미널 세션을 제공하는 프로토콜 및 클라이언트로, 전통적인 원격 로그인 용도에서 출발했다.
nc는 “툴킷”에 가까워 각종 테스트·파일 전송·포트 스캔까지 다루고, telnet은 주로 텍스트 기반 서비스(예: 텔넷 서버, 일부 ASCII 프로토콜)와 상호작용하는 클라이언트라는 점이 핵심 차이다.
지원 프로토콜과 데이터 특성
-
nc-
TCP와 UDP를 모두 지원한다.
-
8비트 클린(binary-safe)이어서 바이너리 데이터 전송에도 적합하다.
-
-
telnet-
거의 항상 TCP만 사용하며, 원래는 텔넷 프로토콜(TCP 23)을 전제로 설계되었다.
-
주 용도는 텍스트 기반 프로토콜/터미널이라 ASCII 위주의 상호작용에 최적화되어 있다.
-
결론적으로, 바이너리 파일, 커스텀 프로토콜까지 다루려면 nc, 단순 텍스트 기반 응답·터미널 인터랙션만 보면 telnet 정도로 구분할 수 있다.
주요 용도 차이
-
nc대표 용도-
포트 오픈 확인 및 간단한 포트 스캔(예:
nc -zv host 20-80). -
임의 포트에 리슨해서 간단한 TCP/UDP 서버·에코 서버 구현.
-
파일 전송, 배너 그랩, 간단한 프로토콜 테스트 등 스크립트와 연동한 자동화 테스트.
-
-
telnet대표 용도-
텔넷 서버(또는 텍스트 기반 서비스)에 인터랙티브 터미널로 접속.
-
특정 IP/포트로 접속해 애플리케이션이 살아 있는지, 텍스트 요청/응답이 오가는지 간단히 확인.
-
윈도우 현업에서는 포트 체크용으로 telnet host port를 쓰다가, 요즘은 PowerShell의 Test-NetConnection 등으로 대체하는 흐름이 많고, 리눅스/유닉스 쪽은 nc가 더 일반적인 선택이다.
설치와 기본 제공 여부
-
리눅스
nc-
배포판에 따라 기본 포함되기도 하고, 패키지 매니저로 별도 설치하기도 한다.
-
여러 구현(nc, ncat, netcat-openbsd 등)이 있어 옵션 차이가 일부 존재한다.
-
-
윈도우
telnet-
예전에는 기본 활성 상태였지만, 보안 문제로 Windows 7 이후부터는 “Windows 기능 켜기/끄기”에서 별도로 켜야 한다.
-
nc를 윈도우에서 쓰려면 별도의 바이너리(nc.exe등)를 설치해야 한다는 점도 실무에서 차이로 작용한다.
-
즉, 리눅스에서는 nc가 비교적 손쉬운 표준 도구이고, 윈도우는 여전히 기본은 telnet + PowerShell 계열 명령을 쓰는 식이다.
보안·현업 관점 요약

-
telnet-
평문으로 인증 정보·데이터가 그대로 흘러, 보안상 원격 로그인 용도로는 사실상 퇴출 상태이며 SSH로 대체되었다.
-
지금은 “포트 열려 있나 간단히 찍어 보는 비권장 도구” 정도의 위치에 가깝다.
-
-
nc-
자체 암호화는 없지만, 아예 원격 로그인 솔루션이라기보다 “네트워크 I/O 도구”라 역할이 다르다.
-
스크립트/자동화와 궁합이 좋아 DevOps·네트워크 디버깅에서 표준 유틸로 쓰인다.
-
정리하면, 같은 “포트 테스트”에 쓰더라도 리눅스에서는 범용 네트워크 툴인 nc를, 윈도우에서는 역사적으로 텍스트 터미널 클라이언트였던 telnet을 많이 써 왔고, 기능 범위·보안·프로토콜 지원 면에서 nc 쪽이 훨씬 유연한 도구라고 보면 된다.