ICMP Ping / Echo에서 반환 패킷 내용을 확인하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/321293

  •  11-07-2019
  •  | 
  •  

문제

Ping Echo를 검증 할 때 유틸리티 / 라이브러리는 종종 패킷의 체크섬 만 확인하는 것으로 보이며 실제로 보낸 페이로드가 반환 된 페이로드와 일치하는지 확인하지는 않습니다. 예를 들어, Wireshark의 ICMP 파서는 나쁜 체크섬 만 확인하는 것만으로도 루비의 모든 것입니다. 네트 루비 수표도 있습니다.

저수준 네트워크 드라이버 문제를 디버깅하고 있으며 수신 할 때 데이터가 angleg되지 않았 음을 확인해야하므로 다음과 같은 저수준 요청을 사용하여 드라이버를 테스트하고 싶습니다. ICMP 에코. 그러나 체크섬이 Echo 응답에 포함 된 데이터와 일치 할 수 있지만 Echo 응답의 데이터가 Echo 요청의 데이터와 일치하지 않기 때문에 기존의 핑 도구는 충분하지 않습니다. 따라서 둘 다 유효한 체크섬 (체크섬 코드에 오류가 없음)이 있지만 데이터 수신 부분에 오류가있어 운전자가 호스트가 발송한다고 생각하는 것을받지 못하게합니다.

Echo 페이로드를 어떻게 확인하여 내가 보낸 것과 동일했는지 확인할 수 있습니까? 내가 사용할 수있는 독립형 "편집증 핑"유틸리티가 있다면 괜찮습니다. 네트워크가 침수 될 때만 문제를 볼 수 있으므로 핑 길이와 주파수를 변경할 수 있어야합니다.

나는 루비 라이브러리 / 스 니펫 형태로 선호하지만, Windows에서 실행되도록 할 수있는 한 모든 언어 나 독립형 앱은 허용됩니다.

감사!

도움이 되었습니까?

해결책 2

@TOM : 답변 해주셔서 감사합니다. 당신은 말했습니다 :

수신기는 데이터에서 체크섬을 다시 계산하여 전송 된 것과 비교합니다.

그러나 당신은 또한 다음과 같이 말했습니다.

ICMP 체크섬에는 TCP 헤더가 포함되어 있지 않으며 ICMP 유형, 코드, 체크섬 및 데이터 필드 만 포함되어 있습니다.

ICMP 유형은 에코 요청 / 응답간에 다릅니다 (하나는 0이고 다른 하나는 8이라고 생각합니다). 따라서 정의에 따라 (실제로, Wireshark를 엿볼 경우) ICMP 체크섬은 보내기 요청과 Echo 응답 사이에 일치하지 않습니다.

내 문제는 Ping Utilities / Libraries가 무엇이든 확인했다면 (그리고 종종 그렇지 않은 경우), 체크섬이 데이터와 일치하는지 확인했다는 것입니다. 사람들이 실제로 두 페이로드가 동일했는지 확인하기 위해 Echo 's 응답으로 전송 된 데이터를 실제로 확인하는 경우는 거의없는 것 같습니다. 요청과 응답이 모두 유효한 체크섬을 가질 수 있지만 다른 페이로드와 내가 본 대부분의 핑 루틴은 그러한 조건을 확인하지 않았을 수 있습니다. 현재 장치).

내 질문을보고 응답해 주셔서 감사합니다. 대단히 감사합니다.

@모두:

내 질문에 대한 답으로, 나는 강력한 것을 사용할 수있었습니다. .NET PING 클래스는 수신 된 응답 버퍼에 대한 준비를 제공하므로 (내가 찾은 대부분의 다른 핑 라이브러리와 달리) 클래스.

다른 팁

나는 당신이 체크섬의 지점을 놓치고 있다고 생각합니다. 체크섬의 목적은 데이터가 손상되지 않은지 확인하는 것입니다. 발신자는 데이터에서 체크섬을 계산하고 데이터로 전송합니다. 수신기는 데이터에서 체크섬을 다시 계산하여 전송 된 것과 비교합니다. 일치하지 않으면 데이터가 손상되지 않거나 두 가지 중 하나가 잘못을 계산합니다. 대부분의 나쁜 체크섬은 파손 된 프로토콜 스택이 많고 물론 패킷 맨글러가 많고 체크섬을 고치지 않기 때문에 패킷이 떨어지지 않습니다. 데이터가 손상되지 않았다고 알려줍니다.

TCP 체크섬 또는 ICMP 체크섬을보고 있습니까? ICMP 체크섬에는 TCP 헤더가 포함되어 있지 않으며 ICMP 유형, 코드, 체크섬 및 데이터 필드 만 포함되어 있습니다. TCP 체크섬 고장이 반드시 ICMP 내용이 손상되지 않았다는 것을 의미하지는 않지만 TCP 헤더가 (부러진 NAT에 의해) 엉망이되었음을 의미 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top