window platform에서 datalink layer조작이 가능할까요?
현재 리눅스에서 사용중이던 네트워크 프로그램을 윈도우에서 돌려야 되서
대응되는 함수나 사용법을 찾고 있습니다.
타켓에 ip주소가 아닌 mac어드레스를 이용해 접근하려고 합니다.
본래 리눅스에서는 다음과 같이 구현하였습니다.
int gSockFD;
struct sockaddr_ll gSockAdr;
gSockFD = socket(PF_INET,SOCK_RAW,htons(ETH_P_ALL));
gSockAdr.sll_family = PF_PACKET;
gSockAdr.sll_protocol = htons(0x88a4);
gSockAdr.sll_ifindex = index;
gSockAdr.sll_hatype = ARPHRD_ETHER;
gSockAdr.sll_pkttype = PACKET_OTHERHOST;
gSockAdr.sll_halen = ETH_ALEN;
gSockAdr.sll_addr[0] = gDestMac[0];
gSockAdr.sll_addr[1] = gDestMac[1];
gSockAdr.sll_addr[2] = gDestMac[2];
gSockAdr.sll_addr[3] = gDestMac[3];
gSockAdr.sll_addr[4] = gDestMac[4];
gSockAdr.sll_addr[5] = gDestMac[5];
이 방법을 이용해 별도의 아이피주소 지정없이 패킷을 전송할수가 있었는데,
윈도우에서 winsock2.h 를 이용해서 똑같이 구현하고자 하는데 지원을 하지
않는것 같아서 여기에 글올려봅니다.
많은 조언 남겨주시면 정말 감사하겠습니다.
댓글 달기