2013-02-07 11 views
0

IPv4가 문제가되어서 std :: istream에서 IP 및 ICMP 헤더를 추출하려면 먼저 처음 20 바이트를 얻은 다음 헤더 길이가 제공되는지 확인하십시오 IPv4 헤더는 옵션을 추출하기 위해 20 바이트보다 큽니다. 다음 바이트는 ICMP 패킷입니다. IPv4 헤더 내부에서 전달되는 헤더 길이 값을 사용하여 IP 헤더의 예상 크기를 볼 수 있습니다.확장 헤더를 포함하여 IPv6 헤더의 정확한 크기 알아 내기

그러나 IPv6 헤더의 정확한 크기를 얻는 방법? IPv6 헤더에는 헤더 확장의 크기와 ICMP와 같은 상위 수준의 데이터가 포함 된 페이로드 값이 있습니다. ICMPv6 헤더가 std :: istream에서 어떤 위치에 시작하는지 알기 위해 헤더 확장을 포함하지만 더 높은 수준의 데이터가없는 IPv6 헤더의 크기를 알아야합니다.

감사합니다.

답변

11

IPv6 헤더의 크기는 40 바이트로 고정되어 있지만, 전송 계층 데이터 그램의 일부가 아닌 초기 IPv6 헤더를 따르는 확장이있을 수 있습니다. IPv6 헤더 뒤에 헤더 확장자가 오는 지 확인하려면 '다음 헤더'필드를 확인하십시오. 이 필드에 저장된 값은 다음 헤더가 전송 레벨 헤더 (IE TCP/UDP 헤더)인지, IP 레벨 헤더 확장 (IE ICMP)인지 또는 그 사이의 값인지를 알려줍니다. This list은 다음 헤더 필드에 대해 가능한 모든 값 목록을 제공합니다.

다음 헤더의 유형을 결정한 후에는 그에 따라 처리 할 수 ​​있습니다. 모든 확장 헤더의 첫 번째 바이트는 함께 연결될 수 있도록 '다음 헤더'필드 여야하며 확장 헤더 는 가변 길이이고 두 번째 바이트는 크기를 결정하는 데 사용할 수있는 'hdr ext 필드'여야합니다.

+0

아 감사합니다. 링크가 좋은 것입니다. 나는 ICMP 부분이 IPv6 확장 헤더로 간주되지 않는다고 생각했다. 남은 유일한 질문은 ICMP 에코 응답 IP 패킷의 경우 ICMP 헤더 옆 또는 뒤에 확장 헤더가 더있을 수 있는지 여부입니다. 또는 ICMP 헤더는 항상 처음 40 바이트 뒤에옵니다? –