[MTU 복습]

image.png

image.png

if (pIpHeader->fragOffset & htons((short)0x2000) ||
	ntohs(pIpHeader->fragOffset & (unsigned short)0xFF1F) > 0)
{
	printf("ID: %04X, Flags: %04X, Offset: %d, Protocol: 0x%02X\\n",
		ntohs(pIpHeader->id),
		ntohs(pIpHeader->fragOffset & htons((short)0xE000)),
		ntohs(pIpHeader->fragOffset & (unsigned short)0xFF1F) * 8,
		pIpHeader->protocol);

	printf("%d.%d.%d.%d -> %d.%d.%d.%d\\n",
		pIpHeader->srcIp[0], pIpHeader->srcIp[1],
		pIpHeader->srcIp[2], pIpHeader->srcIp[3],
		pIpHeader->dstIp[0], pIpHeader->dstIp[1],
		pIpHeader->dstIp[2], pIpHeader->dstIp[3]
	);

	printf("\\n");
}

if (pIpHeader->fragOffset & htons((short)0x2000) || ntohs(pIpHeader->fragOffset & (unsigned short)0xFF1F) > 0)

⇒ ntohs(pIpHeader->fragOffset & 0xE000)

⇒ ntohs(pIpHeader->fragOffset & 0x1FFF) * 8