승상의 코딩 블로그

[Linux] nc 네트워크 도구 본문

Linux (리눅스)

[Linux] nc 네트워크 도구

양승상 2024. 12. 2. 22:00
반응형

소켓 통신하는 프로그램을 만들어 왔을 때, 테스트 프로그램을 받지 못하는 경우가 종종 있다.

인터넷이 안된다면 외부에서 테스트용 프로그램을 다운받아 확인하기도 어렵다.

 

이렇게 네트워크를 기반으로 테스트해야하는 경우 리눅스의 nc 명령어를 사용해보자.

nc 는 netcat 의 약어로써 net 은 네트워크이고 cat은 리눅스 명령어 cat이다.

network 로 출력해준다는 의미로 이해하면 좋을 듯하다.

 

* nc 는 기본 패키지로 많이 제공된다. 

* cat은 concatenate 의 약어로 파일을 이어붙이는 명령어지만 파일의 내용을 출력하는데 더 활용된다.


가정

데이터를 받으면 그 데이터를 그대로 다시 응답하는 TCP 에코 서버를 테스트 한다고 하자.

TCP 에코서버의 ip 는 192.168.64.8 이고 포트는 12345 이라고 하자. 

테스트 (nc를 TCP Client로 사용)

TCP 에코 서버 실행

TCP 서버를 먼저 실행시키고 외부의 연결을 기다린다.(리스닝)

 

TCP 클라이언트(왼쪽) TCP 서버(오른쪽)

nc [접속하는 서버 ip] [접속하는 서버 Port]

nc 명령어를 입력하면 TCP 서버에 정상적으로 연결된다. (TCP 서버의 콘솔창을 확인)

 

 

Client(왼쪽)에서 {"test":12345} 를 콘솔에 직접 입력한다.

Server(오른쪽)에서 받고 응답한 데이터가 콘솔에 출력되고,

Client(왼쪽)에서도 받은 데이터를 콘솔에 출력한다. 

 

 

nc 명령어 실행후 상대편에서 받는 데이터를 적어서 보내주면 상대 프로그램을 테스트해볼 수 있다.

nc [접속하는 서버 ip] [접속하는 서버 Port] < [데이터가 적힌 파일]

파일에다가 보내는 데이터를 적어두면 '<'를 통해서 복잡하거나 반복되는 데이터 전송을 간단히 할 수 있다.

 

서버로 테스트하고 싶다면?

nc -l [접속하는 서버 ip] [접속하는 서버 Port]

-l : 외부의 연결을 리스닝하는 옵션

-v : 상세출력

반응형
Comments