멀티 캐스트 및 브로드 캐스트 패킷에 대한 패킷 디코딩을 찾은 후 결정 논리를 작성하는 데 어려움을 겪고 있습니다. 0.0.0.0에 대한패킷 디코딩 - 브로드 캐스트 또는 멀티 캐스트
- 전용 케이스 또는 오히려 DST 요지 255.255 :
브로드 캐스트 : 나는 읽고 와이어 샤크를 사용하여 관찰 (그리고 소스의 일부 보았다) 것을 여기 내가 찾은 무엇에서 .255.255
- dst addr에 대한 IG 및 LG 비트가 1로 설정된 로컬 브로드 캐스트
- 패킷이 어떤 서브넷인지 알 수 없으므로 사용자 지정 서브넷으로 인해 특정 브로드 캐스트 주소를 확인할 수 없습니다.
- 나는 테스트의 최종 도착 요지는 합법적 인 브로드 캐스트 주소 (즉 추측 CIDR?)
이 충분가 될 수 있는지 확인해야할까요?
멀티 캐스트 :
- IG이 비트가 1로 설정하고, LG는 224로 향하는 0
- DST 주소 비트 셋 - 239 서브넷 (제 1 옥텟) I 가진 것을
지금까지?
/*
* Is packet destined for a multicast address?
*/
int is_multicast(CONNECTION temp)
{
char *save;
save = strtok(inet_ntoa(temp.ip_dst), ".");
int firstOct = 0;
firstOct = atoi(save);
if((temp.ether_dhost[0] == 1) &&
(temp.ether_dhost[1] == 0) &&
((firstOct >= 224) &&
(firstOct <= 239)))
{
return 1;
}
return 0;
}
/*
* Is packet destined for a broadcast address?
*/
int is_broadcast(CONNECTION temp)
{
if ((temp.ether_dhost[0] == 0xFF) &&
(temp.ether_dhost[1] == 0xFF) &&
(temp.ether_dhost[2] == 0xFF) &&
(temp.ether_dhost[3] == 0xFF) &&
(temp.ether_dhost[4] == 0xFF) &&
(temp.ether_dhost[5] == 0xFF)) {
return 1; // DHCP or ARP
} else if ((temp.ether_dhost[0] == 0xFF) &&
(temp.ether_dhost[1] == 0xFF))
&& (temp.ether_dhost[2] != 0xFF) {
return 1; // Other local broadcast
}
return 0;
}
의견이 있으십니까?
IPv4 전용 솔루션에 관심이 있습니까? 아니면 IPv6에도 관심이 있습니까? – sarnold
@sarnold 현재로서는 IPv4 솔루션 만 찾고 있습니다. 멀티 캐스트 코드로 놀고 있었는데 잠시 후에 업데이트 될 것입니다. – mcdoomington