다음과 같은 경우에도 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
?
답변
사용할 수있는 넷캣에는 수십 가지 버전이 있지만 다음과 같은 이유 때문일 수 있습니다.
- 에 2 개의 항목이
localhost
있습니다/etc/hosts
. 하나는 IPv4 용이고 다른 하나는 IPv6 용입니다. - 데몬은 하나의 프로토콜 (예 : IPv4)에서만 수신 대기합니다.
- 클라이언트는 먼저 데몬이 수신하지 않는 프로토콜을 통해 연결 한 다음 현재 사용중인 프로토콜을 시도합니다.
예를 들면 다음과 같습니다.
$ 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