Ethernet IP TCP UDP 协议头部格式
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/


浙公网安备 33010602011771号