그래서 나는 다음과 같은 소켓이있어 :설정 '다음 헤더'바이트
sock = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.getprotobyname("icmp"))
과를 내가 RFC4443에 따라 적절하게 구성 ICMP6 ECHO 요청과를 보낼 때 128 및 코드 0 (유효성이 검사 된 체크섬)을 사용하면 패킷이 잘못 되었기 때문에 패킷이 대상 스택에 의해 삭제됩니다. 이는 IPv6 헤더의 '다음 헤더'바이트가 RFC (ICMP의 경우 #) 당 1로 설정되기 때문입니다.
두 가지 : 1. 나는 socket.getprotobyname을 알고는 ("ICMP")의 IPv4와 소켓 ICMP 호환하게 (? 오른쪽) ... 2. 와이어 샤크에서 IPv6로 패킷하지만 ICMP하지 된 ICMPv6 등의 프로토콜을 읽고 ...
어느 쪽이든 protocolbyname ("icmpv6")을 사용하는 소켓을 설정하십시오. (누군가가 적절한 문자열을 알지 못하는 한 ... 분명하지 않습니다 ... "ICMP6" "ICMPV6"를 시도했지만 아마도 몇 가지 시도가 있습니다. 내가 할 수있는 밑줄로).
OR I 손으로 패킷을 구성하는 58
최후로 상기 패킷을 전송하기 전에 "다음 헤더"바이트를 변경.
누구나 아이디어가 있으십니까? 나는 분명히 파이썬에서 가장 경험이 많지 않다.
안녕하세요, 감사합니다. 당신 말이 맞습니다. 나는 분명히 근시안적이었습니다. 매우 감사. – jeffery
+1, q와 a 모두. 이것은 정확한 icmpv6 문자열 이름을 찾고 있었기 때문에 나 또한 도움이되었습니다. OP가 자신의 문제를 해결하면 대답을 수락해야합니다. – fayyazkl