我是一个中级爱好程序员,知道一些 C++ 和其他编程语言,现在我正在尝试使用原始套接字而不是 C++ 中的熟套接字,但是当我查看示例和其他人的源代码时(用于学习目的,而不是窃取)我可以看到他们都知道如何为网络层制作标头,例如他们编写了这样的 ip 标头结构:
struct IP_HEADER
{
BYTE ver_ihl; // Version (4 bits) and Internet Header Length (4 bits)
BYTE type; // Type of Service (8 bits)
WORD length; // Total size of packet (header + data)(16 bits)
WORD packet_id; // (16 bits)
WORD flags_foff; // Flags (3 bits) and Fragment Offset (13 bits)
BYTE time_to_live; // (8 bits)
BYTE protocol; // (8 bits)
WORD hdr_chksum; // Header check sum (16 bits)
DWORD source_ip; // Source Address (32 bits)
DWORD destination_ip; // Destination Address (32 bits)
} IPHEADER;
但是他们怎么知道他们应该在版本上使用 BYTE 呢?我知道这是 ip headers 版本,它告诉你它是 ipv4 还是 ipv6 等。但是我怎么知道我应该使用 BYTE 还是 WORD 或任何其他变量?
让事情变得简单:我试图了解如何自己制作像上面那样的结构,让我们说另一种标题?