TCPIP协议头定义

本文详细介绍了TCP/IP协议中的以太网、IP、TCP、UDP及ARP等头部结构,包括各个字段的含义和作用,如IP首部的TTL、TCP首部的序列号和确认号等。
#pragma once

#pragma pack(push,1)
struct ether_header //以太网V2头
{  
    unsigned char   ether_dhost[6];  
    unsigned char   ether_shost[6];  
    unsigned short  ether_type;
};

struct ip_header //定义IP首部
{ 
	unsigned char	h_lenver; //4位首部长度+4位IP版本号 
	unsigned char	tos; //8位服务类型TOS 
	unsigned short	total_len; //16位总长度(字节) 
	unsigned short	ident; //16位标识 
	unsigned short	frag_and_flags; //3位标志位 
	unsigned char	ttl; //8位生存时间 TTL 
	unsigned char proto; //8位协议 (TCP, UDP 或其他) 
	unsigned short	checksum; //16位IP首部校验和 
	unsigned int	sourceIP; //32位源IP地址 
	unsigned int	destIP; //32位目的IP地址 
};

struct tcp_header
{
	unsigned short	source_port; //发送端端口号,16位
	unsigned short	dest_port;  //接收端端口号,16位
	unsigned char	sequence_no[4]; //32位,标示消息端的数据位于全体数据块的某一字节的数字
	unsigned char	ack_no[4];   //32位,确认号,标示接收端对于发送端接收到数据块数值
	unsigned char	dataoffset;			// 高4位表示数据偏移
	unsigned char	flags;				// 6位标志位
	unsigned char	window[2];   //窗口16位
	unsigned char	checksum[2];  //校验码,16位
	unsigned char	urgen_pointer[2]; //16位,紧急数据指针
	//unsigned char options[3];  //选祥和填充,32位
};

struct udp_header
{
    unsigned short  sourcePort;           // 16位源端口号   | Source port
    unsigned short  destinationPort;      // 16位目的端口号 | Destination port     
    unsigned short  len;                  // 16位封包长度   | Sequence Number
    unsigned short  checksum;             // 16位校验和     | Acknowledgement number
};

/* ARP报文包 */
struct ArpPackage {
	unsigned short	Hardware_Type;		/* 硬件类型			*/
	unsigned short	Protocol_Type;		/* 协议类型			*/
	unsigned char	Hardware_Length;	/* 硬件地址长度		*/
	unsigned char	Protocol_Length;	/* 协议长度			*/
	unsigned short	Operation_Type;		/* 操作类型(请求1|响应2|RARP请求:3|RARP响应:4) */
	unsigned char	Sender_Mac[6];		/* 发送方的硬件地址	*/
	unsigned long	Sender_IP;			/* 发送方IP地址		*/
	unsigned char	Recipient_Mac[6];	/* 接收方硬件地址		*/
	unsigned long	Recipient_IP;		/* 接收方IP地址		*/
};
#pragma pack(pop)

#pragma pack(push,1)

typedef struct _DnsHeader
{
	unsigned short id;
	unsigned short flags;
	unsigned short quests;
	unsigned short answers;
	unsigned short author;
	unsigned short addition;
}DnsHeader,*PDnsHeader;

typedef struct _DnsQuery
{
	char *name;//查询的域名,这是一个大小在0到63之间的字符串;
	unsigned short type;//查询类型,大约有20个不同的类型
	unsigned short classes;//查询类,通常是A类既查询IP地址。
}DnsQuery,*PDnsQuery;

typedef struct _DnsResponse
{
	//unsigned short name;
	unsigned short type;
	unsigned short clases;
	unsigned int ttl;
	unsigned short length;
	unsigned int adr;
}DnsResponse,*PDnsResponse;
#pragma pack(pop)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值