http://www.cnblogs.com/luxiaoxun/archive/2012/08/08/2628627.html
The Ethernet header structure is shown in the illustration below:
以太网头部14 bytes
|
|
|
|
|
|
|
|
|
|
|
|
|
Ethernet header structure
| ||||
The IP header structure is as follows:
IP头部20 bytes
|
4
|
8
|
16
|
32 bits
| ||||
|
|
|
| Total length | ||||
|
|
| Fragment offset | |||||
|
| Protocol |
| |||||
|
| |||||||
|
| |||||||
|
| |||||||
|
| |||||||
|
IP header structure
| |||||||
The TCP header structure is as follows:
TCP头部20 bytes
|
16
|
32 bits
| |||||||
|
| Destination port | |||||||
|
| ||||||||
|
| ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
| |||||||
|
| ||||||||
|
| ||||||||
|
TCP header structure
| ||||||||
The UDP header structure is shown as follows:
UDP头部8 bytes
|
16
|
32 bits
|
|
|
|
|
|
|
|
Data | |
|
UDP header structure
| |
一些协议头部的定义:
struct ip { #if BYTE_ORDER == LITTLE_ENDIAN u_char ip_hl:4, /* header length */ ip_v:4; /* version */ #endif #if BYTE_ORDER == BIG_ENDIAN u_char ip_v:4, /* version */ ip_hl:4; /* header length */ #endif u_char ip_tos; /* type of service */ short ip_len; /* total length */ u_short ip_id; /* identification */ short ip_off; /* fragment offset field */ u_char ip_ttl; /* time to live */ u_char ip_p; /* protocol */ u_short ip_sum; /* checksum */ struct in_addr ip_src,ip_dst; /* source and dest address */ }; struct udphdr { u_short uh_sport; /* source port */ u_short uh_dport; /* destination port */ short uh_ulen; /* udp length */ u_short uh_sum; /* udp checksum */ }; struct tcphdr { u_short th_sport; /* source port */ u_short th_dport; /* destination port */ tcp_seq th_seq; /* sequence number */ tcp_seq th_ack; /* acknowledgement number */ #if BYTE_ORDER == LITTLE_ENDIAN u_char th_x2:4, /* (unused) */ th_off:4; /* data offset */ #endif #if BYTE_ORDER == BIG_ENDIAN u_char th_off:4, /* data offset */ th_x2:4; /* (unused) */ #endif u_char th_flags; u_short th_win; /* window */ u_short th_sum; /* checksum */ u_short th_urp; /* urgent pointer */ };
更多网络协议格式细节参考:http://www.protocols.com/pbook/

本文详细介绍了以太网、IP、TCP及UDP等网络协议头部结构,并提供了对应的C语言结构体定义,帮助读者深入理解各层协议的工作原理。

3030

被折叠的 条评论
为什么被折叠?



