UDP nc 명령의 에코 결과를 신뢰할 수 있습니까?

UDP nc 명령의 에코 결과를 신뢰할 수 있습니까?

문맥: nc 명령을 사용하여 UDP 포트를 테스트하고 싶습니다

무슨 일이야: nc 명령은 출력에 아무것도 반환하지 않으며 입력할 때 0을 반환합니다.echo $?

어떤 명령:

nc -vzu <ip> <port>
echo $?

문제가 무엇입니까: 결과를 신뢰할 수 있는지 알고 싶습니다.echo $?

버전:

  • netcat: 0.7.1-5.ph3.x86_64(vCenter에서).
  • tcpdump-uw: 버전 4.9.1-PRE-GIT_2017_09_22

내 생각:

UDP는 패킷의 유효성을 검사하지 않는다는 것을 알고 있습니다.

대상 서버에서 시도했지만 아무 것도 수신되지 않습니다 echo "something" | nc -vu <ip> <port>.tcpdump -i vmk0 -en udp

UDP 패킷이 성공적으로 전송되었지만 목적지에 도달하지 못한 것 같습니다.

어떻게 생각하나요?

답변1

버전이나 구현에 따라 nc동작이 다를 수 있습니다. nc특정 명령을 이해하고 결과를 신뢰할 수 있는지 확인하려면 특정 명령의 특정 동작을 테스트해야 합니다 .

예를 들어 내 nc버전에서는 열려 있는 UDP 포트에 연결하려고 하면 다음과 같이 기록됩니다.

$ nc -vzu <ip> <port>; echo exit status is: $?
Connection to <ip> <port> port [udp/*] succeeded!
exit status is: 0

종료 상태를 반환합니다.0.

하지만 아무것도 수신 대기하지 않는 포트에 연결하려고 하면 종료 상태만 반환됩니다.1.

$ nc -vzu <ip> <port>; echo exit status is: $?
exit status is: 1

특정 종료 상태 nc명령의 종료 상태를 신뢰할 수 있는지 확인하려면 닫힌 UDP 포트에 연결해 보십시오. 유효한 UDP 포트 범위는 다음과 같습니다.4096-65535.

존재하다당신의 상황, 보고하신대로 연결을 시도하면UDP 포트 닫기유효한 범위 내에서 nc명령은 종료 상태를 반환합니다.0(성공) 이는 특정 버전/구현의 종료 상태를 신뢰할 수 없음을 의미합니다 nc.

관련 정보