IP Header
0
|
|
16
|
|
version
-4
|
header
length -4
|
type of service (TOS) -8
|
total length (byte) – 16
|
identification-16
|
flags-3
|
fragment offset-13
|
time to live(TTL)-8
|
protocol-8
|
header checksum-16
|
source IP address-32
|
destination IP address-32
|
options (if any)
|
data
|
UDP Header
0
|
16
|
source port number-16
|
destination port number-16
|
UDP length-16
|
UDP checksum-16
|
data(if any)
|
TCP Header
0
|
|
16
|
|
source port number-16
|
destination port number-16
|
sequence number-32
|
acknowledgment number-32
|
header
length-4
|
reserved
-6
|
U
R
G
|
A
C
K
|
P
S
H
|
R
S
T
|
S
Y
N
|
F
I
N
|
window size-16
|
TCP checksum-16
|
urgent pointer-16
|
options (if any)
|
data (if any)
| |
/* eternet header */
struct ether_header
{
u_char dst_host[6];
u_char src_host[6];
u_short frame_type;
}ether_header;
/* IPv4 header */
typedef struct ip_header
{
u_char ver_ihl; // Version (4 bits) + Internet header length (4 bits)
u_char tos; // Type of service
u_short tlen; // Total length
u_short identification; // Identification
u_short flags_fo; //
Flags (3 bits) + Fragment offset (13 bits)
u_char ttl; // Time to live
u_char proto; // Protocol
u_short crc; // Header checksum
ip_address saddr; // Source address
ip_address daddr; // Destination address
u_int op_pad; // Option + Padding
}ip_header;
/* UDP header*/
typedef struct udp_header
{
u_short sport; // Source port
u_short dport; // Destination port
u_short len; // Datagram length
u_short crc; // Checksum
}udp_header;
// 20 bytes TCP Header
typedef struct tcp_header
{
u_short sport; // Source port
u_short dport; // Destination port
u_int seqnum; // Sequence Number
u_int acknum; // Acknowledgement number
u_char hlen; // Header length
u_char flags; // packet flags
u_short win; // Window size
u_short crc; // Header Checksum
u_short urgptr; // Urgent pointer...still don't know what this is...
}tcp_header;
[ÀÌ °Ô½Ã¹°Àº ÃÖ°í°ü¸®ÀÚ´Ô¿¡ ÀÇÇØ 2009-12-01 08:49:45 ½Ã½ºÅÛº¸¾È¿¡¼ À̵¿ µÊ]