Network

[Network] nc, telnet, /dev/tcp, socat 비교표 및 예시

IT-PAPA 2024. 5. 1. 06:20
728x90
반응형

리눅스에서 nc (Netcat), telnet, /dev/tcp, socat를 사용하여 통신 테스트를 할 때의 차이점을 비교표로 정리해 드리겠습니다. 아래 표는 각 도구의 주요 특징과 사용 시 고려해야 할 점들을 요약한 것입니다:


도구 설명 장점 단점 사용 사례
nc (Netcat) 다양한 네트워크 연결을 위한 유틸리티로, TCP와 UDP 프로토콜 모두 지원합니다. - 8비트 클린 연결
- 다양한 프로토콜 지원
- 스크립트와의 파이프 연결 가능
- 일부 시스템에서 기본적으로 설치되어 있지 않을 수 있음 - 데이터 전송
- 포트 스캐닝
- 서버 시뮬레이션
telnet 원격 호스트에 연결하기 위한 프로토콜 및 클라이언트입니다. - 널리 사용됨
- 인터랙티브한 사용이 가능
- 보안이 취약함
- 일부 데이터 전송에 부적합
- ASCII 기반 프로토콜 테스트
- 원격 관리
/dev/tcp 쉘 내장 기능으로, TCP 연결을 위한 가상 파일 시스템을 제공합니다. - 별도의 프로그램 설치 필요 없음
- 간단한 테스트에 적합
- 모든 쉘에서 지원되지 않음
- 기능이 제한적
- 간단한 연결 테스트
- 쉘 스크립트 내 사용
socat 더욱 강력한 nc의 대안으로, 다양한 데이터 전송과 포워딩 옵션을 제공합니다. - 양방향 데이터 파이프라인
- 다양한 주소 유형 지원
- 사용법이 복잡할 수 있음 - 포트 리스닝 및 연결
- 파일 및 프로세스 I/O
- 프록시 브리징

nc는 텍스트와 바이너리 데이터 모두를 전송할 수 있으며, telnet은 주로 텍스트 기반 프로토콜에 사용됩니다.

/dev/tcp는 쉘 스크립트 내에서 간단한 연결 테스트에 유용하지만, 모든 시스템에서 지원되지 않을 수 있습니다.

socat는 nc의 기능을 확장한 도구로, 더 많은 기능과 유연성을 제공합니다

  1. Netcat (nc):
    • 포트 스캐닝:
      nc -z -v 10.10.8.8 20-80
      
      이 명령은 10.10.8.8 호스트의 20부터 80까지의 포트를 스캔합니다. -z 옵션은 연결을 시도하지 않고 열린 포트만 확인하며, -v 옵션은 자세한 정보를 제공합니다.
    • 서버 소프트웨어 버전 확인:
      echo "EXIT" | nc 10.10.8.8 22
      
      이 명령은 10.10.8.8 호스트의 SSH 포트 22로 “EXIT” 명령을 보내 서버 소프트웨어 버전을 확인합니다.
  2. Telnet:
    • 접속 테스:
      telnet localhost 8080
      
      이 명령은 로컬호스트의 8080 포트로 접속하여 인터랙티브하게 통신합니다.
  3. /dev/tcp:
    • 간단한 연결 테스트:
      cat < /dev/tcp/google.com/80
      
      이 명령은 Google.com의 80번 포트로 연결을 시도합니다.
  4. Socat:
    • TCP 포트 포워딩:
      socat -v tcp-listen:8080 system:cat
      
      이 명령은 8080 포트로 들어오는 연결을 받아서 입력을 그대로 출력하는 Echo 서버를 생성합니다.
    • TCP 클라이언트로 파일 전송:
      # 수신 측에서 실행
      socat -v tcp-listen:5555 system:cat > received_file.txt
      # 송신 측에서 실행
      cat file_to_send.txt | socat -v tcp-connect:localhost:5555
      
      이 명령은 파일을 송신 측에서 수신 측으로 전송합니다.
    • TCP/Unix 도메인 프록시 생성:
      # 서버 생성
      socat -v tcp-listen:8080 fork system:cat
      # 클라이언트 생성
      socat STDIN unix-connect:proxysocket
      
      이 명령은 TCP와 Unix 도메인 소켓을 변환하는 프록시를 만듭니다.
728x90
반응형
LIST