아래와 같이 IP 헤더 구조체를 선언했습니다.
struct ip_header {
uint8_t version:4;
uint8_t ihl:4;
uint8_t tos;
uint16_t len;
uint16_t ident;
uint8_t flags:3;
uint16_t fragment:13;
uint8_t ttl;
uint8_t protocol;
uint16_t cksum;
uint32_t src;
uint32_t dst;
};
그리고 아래와 같이 값을 대입한 후.. 길어서 뒤에는 생략했습니다.
ip->version = 4;
ip->ihl = 5;
ip->tos = 0;
이렇게 패킷을 만들고 raw socket으로 보냈는데 제대로 동작을 안해서 tcpdump로 패킷을 찍어봤더니 바로 위 부분이 의도한대로라면 4500으로 나와야 되는데 5400으로 나오네요. (아래 dump 중 첫번째 줄 마지막 부분)