[unix] 이 netcat 출력은 무엇을 의미합니까?

다음과 같은 경우에도 nc -v 명령을 실행할 때 포트 2628에서 실행되는 dictd 서비스가있는 로컬로 실행중인 VM에 텔넷으로 연결하고 싶습니다.

$ nc -v localhost 2628
nc: connectx to localhost port 2628 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 63929
    dst 127.0.0.1 port 2628
    rank info not available
    TCP aux info available

Connection to localhost port 2628 [tcp/dict] succeeded!

연결이 거부 된 후 나중에 연결에 성공한 이유는 무엇입니까? 이것은 무엇을 의미하며 내가 할 때 내 연결을 수락하지 않는 이유는 무엇입니까 telnet localhost 2628?



답변

사용할 수있는 넷캣에는 수십 가지 버전이 있지만 다음과 같은 이유 때문일 수 있습니다.

  1. 에 2 개의 항목이 localhost있습니다 /etc/hosts. 하나는 IPv4 용이고 다른 하나는 IPv6 용입니다.
  2. 데몬은 하나의 프로토콜 (예 : IPv4)에서만 수신 대기합니다.
  3. 클라이언트는 먼저 데몬이 수신하지 않는 프로토콜을 통해 연결 한 다음 현재 사용중인 프로토콜을 시도합니다.

예를 들면 다음과 같습니다.

$ grep localhost /etc/hosts
127.0.0.1 localhost
::1 localhost

$ nc -4 -l -p 9000 -s 127.0.0.1
nc: listening on 127.0.0.1 9000 ...


$ nc localhost 9000
nc: cannot connect to localhost (::1) 9000 [9000]: Connection refused
nc: localhost (127.0.0.1) 9000 [9000] open
nc: using stream socket


답변