ping 세션의 tcpdump에는 다음 두 줄이 표시됩니다.
IP gateway.comp.com > somehost.comp.com: ICMP redirect 10.8.0.10 to host othergateway.comp.com, length 68
IP gateway.comp.com > somehost.comp.com: ICMP 10.8.0.10 protocol 1 port 21475 unreachable, length 68
첫 번째 메시지를 이해했습니다. 단지 10.8.0.10으로 가는 패킷으로 somehost
메인을 귀찮게 하지 말고 .gateway
othergateway
그러나 두 번째 메시지는 무엇을 의미합니까? 17ms 후에 나오며 관련이 있는 것 같습니다. protocol 1 port XXX
이 맥락에서 무엇입니까 ? 도달할 수 없는 것이 정확히 무엇입니까? ICMP(=프로토콜 1)에는 포트가 없습니다. 그렇다면 이는 무엇을 의미합니까?
답변1
이것은 아마도ICMP 제어 메시지 유형 3(대상에 연결할 수 없음) 코드 3(포트에 연결할 수 없음)
이는 대상에 해당 TCP 또는 UDP 포트와 연결된 서버 프로세스가 없음을 의미합니다.
"UDP의 한 가지 규칙은 UDP 데이터그램을 수신하고 대상 포트가 일부 프로세스가 사용 중인 포트와 일치하지 않으면 UDP는 연결할 수 없는 ICMP 포트로 응답한다는 것입니다."- 에서TCP/IP 그림, 스티븐스.
왜 UDP인가? 이 ping
명령은 일반적으로 ICMP 에코 요청을 사용하여 구현되지만 일부 플랫폼에서는 일부 도구가 다른 프로토콜을 사용할 수 있습니다. 예를 들면 다음과 같습니다.nmap -sU
답변2
protocol 1 port XXX
이 맥락에서 무엇입니까 ?
프로토콜 번호 1은 ICMP입니다. ICMP는 포트를 사용하지 않지만 port
단순화를 위해 여기서 언급된 16비트 식별자를 사용합니다 . (아마도 프로그래머가 구별하는 데 어려움을 겪을 수도 있고, 그렇지 않으면 사용자가 레이블로 인해 더 혼란스러워질 수도 있습니다 identifier
.)
식별자 필드는 또한 NAT 라우터가 응답을 원래 NAT 세션에 매핑하는 데 사용되며 물론 로컬 IP 스택 자체에서 에코 응답을 요청을 시작한 프로세스로 다시 라우팅하는 데 사용됩니다. 이는 전송 계층 포트 번호와 매우 유사합니다. .