The Ethernet header structure is shown in the illustration below:
以太网头部14 bytes
Destination | Source | Len | Data unit + pad | FCS |
(6 bytes) | (6 bytes) | (2) | (46-1500 bytes) | (4 bytes) |
Ethernet header structure |
The IP header structure is as follows:
IP头部20 bytes
4 |
8 |
16 |
32 bits |
||||
Ver. | IHL | Type of service | Total length | ||||
Identification | Flags | Fragment offset | |||||
Time to live | Protocol | Header checksum | |||||
Source address | |||||||
Destination address | |||||||
Option + Padding | |||||||
Data | |||||||
IP header structure |
The TCP header structure is as follows:
TCP头部20 bytes
16 |
32 bits |
|||||||
Source port | Destination port | |||||||
Sequence number | ||||||||
Acknowledgement number | ||||||||
Offset | Resrvd | U | A | P | R | S | F | Window |
Checksum | Urgent pointer | |||||||
Option + Padding | ||||||||
Data | ||||||||
TCP header structure |
The UDP header structure is shown as follows:
UDP头部8 bytes
16 |
32 bits |
Source port | Destination port |
Length | Checksum |
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/
作者:阿凡卢
出处:http://www.cnblogs.com/luxiaoxun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
http://www.cnblogs.com/luxiaoxun/archive/2012/08/08/2628627.html
时间: 2024-10-06 07:24:15