저는 매우 간단한 넷 필터를 작성하고 있으며, ICMPv6 유형, TCP / UDP 포트 번호 등과 같은 항목과 일치하도록 IPv6 헤더를 구문 분석하려는 위치에 도달하고 있습니다.
그래서 저는 IPv6 패킷 형식 에 대해 심도있게 읽고 있습니다. 저는 마치 ... 글쎄요 ... 실제로 제대로 읽고 있는지 확인하기 위해 계속해서 읽어야했습니다. 40 바이트 고정 헤더로 시작하고 다음 헤더 필드를 봐야한다고 생각합니다. 그런 다음 끝에 도달 할 때까지 연결 목록처럼 다음 헤더의 다음 헤더 필드를 봐야합니다. 페이로드가 있으면 따라옵니다.
문제는 고정 헤더 또는 확장 헤더에 길이 필드가 없다는 것입니다. 이 연결 목록을 끝까지 추적 할 수 있도록 확장 헤더 유형 및 크기에 대한 표가 있어야합니다.
이것은 나에게 이상하고 어쩌면 토끼 머리 모양의 디자인이라고 생각합니다. 인식 할 수없는 확장 헤더 유형을 발견하면 어떻게합니까? 어떡하죠? 나는 그것의 길이를 모른다. 패킷 통과를 허용하는 넷 필터에서 공격자가 가짜 헤더 유형을 포함하여 넷 필터를 회피 할 수 있기 때문에 패킷을 버리고 차단해야한다고 생각합니다. 그러나 이는 프로토콜이 확장 된 경우 새 확장을 사용하려면 지금까지 작성된 모든 IPv6 헤더 구문 분석 소프트웨어를 동시에 업데이트해야 함을 의미합니다.
그렇다면 사용중인 확장을 모르는 경우 IPv6 헤더를 어떻게 구문 분석 할 수 있습니까? 길이를 모르기 때문에 알 수없는 확장의 헤더를 건너 뛰려면 어떻게해야합니까?