C/C++ 网络编程: 各类协议数据结构
来源:互联网 发布:淘宝零食店铺知乎 编辑:程序博客网 时间:2024/06/01 13:53
宏定义
- 一些宏定义
#define EPT_IP 0x0800 /* type: IP */#define EPT_ARP 0x0806 /* type: ARP */#define EPT_RARP 0x8035 /* type: RARP */#define ARP_HARDWARE 0x0001 /* Dummy type for 802.3 frames */#define ARP_REQUEST 0x0001 /* ARP request */#define ARP_REPLY 0x0002 /* ARP reply */
定义以太网首部
typedef struct ehhdr { unsigned char eh_dst[6]; /* destination ethernet addrress */ unsigned char eh_src[6]; /* source ethernet addresss */ unsigned short eh_type; /* ethernet pachet type */}EHHDR, *PEHHDR;
定义以太网arp字段
typedef struct arphdr{ //arp首部 unsigned short arp_hrd; /* format of hardware address */ unsigned short arp_pro; /* format of protocol address */ unsigned char arp_hln; /* length of hardware address */ unsigned char arp_pln; /* length of protocol address */ unsigned short arp_op; /* ARP/RARP operation */ unsigned char arp_sha[6]; /* sender hardware address */ unsigned long arp_spa; /* sender protocol address */ unsigned char arp_tha[6]; /* target hardware address */ unsigned long arp_tpa; /* target protocol address */}ARPHDR, *PARPHDR;
定义整个arp报文包,总长度42字节
typedef struct arpPacket{ EHHDR ehhdr; ARPHDR arphdr;} ARPPACKET, *PARPPACKET;
定义ip报头数据结构
typedef struct _iphdr{ byte ver_len; //版本4位,头长度4位,报头长度以32位为一个单位 byte type; //类型8位 byte length[2]; //总长度,16位,指出报文的以字节为单位的总长度 //报文长度不能超过65536个字节,否则认为报文遭到破坏 byte id[2]; //报文标示,用于多于一个报文16位 byte flag_offset[2];//标志,3位 数据块偏移13位 byte time; //生存时间,8位 byte protocol; //协议,8位 byte crc_val[2]; //头校验和,16位 byte src_addr[4]; //源地址,32位 byte tar_addr[4]; //目标地址,32位 byte options[4]; //选项和填充,32位}IP_HEADER;
定义TCP报头
typedef struct _tcphdr{ byte source_port[2]; //发送端端口号,16位 byte dest_port[2]; //接收端端口号,16位 byte sequence_no[4]; //32位,标示消息端的数据位于全体数据块的某一字节的数字 byte ack_no[4]; //32位,确认号,标示接收端对于发送端接收到数据块数值 byte offset_reser_con[2];//数据偏移4位,预留6位,控制位6为 byte window[2]; //窗口16位 byte checksum[2]; //校验码,16位 byte urgen_pointer[2]; //16位,紧急数据指针 byte options[3]; //选祥和填充,32位}TCP_HEADER;
定义伪首部
struct{ unsigned long saddr; //源地址 unsigned long daddr; //目的地址 char mbz; //置空 char ptcl; //协议类型 unsigned short tcpl; //TCP长度}psd_header;
0 0
- C/C++ 网络编程: 各类协议数据结构
- [Linux C编程]网络协议
- [C#]网络编程 HTTP协议详解
- C TCP协议的网络编程
- 网络编程:C/S协议解码失败怎么办
- [C#]网络编程系列专题二:HTTP协议详解
- [C#]网络编程系列专题二:HTTP协议详解
- [C#]网络编程系列专题二:HTTP协议详解
- C#网络编程初探
- C#网络编程初探
- C#网络编程
- C#网络编程初探
- C#网络编程初探
- C/C++网络编程
- C#网络编程初探
- c 网络编程
- Linux c 网络编程
- c语言网络编程
- ubuntu系统安装nvm node npm cordova
- 常用adb命令
- Android内存泄漏原因及解决方法
- oh my zsh + tmux安装
- Android TypedArray源码详解
- C/C++ 网络编程: 各类协议数据结构
- onload js函数不执行的原因分析及解决方法
- Spring 4.0 StandaloneMockMvcBuilder java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfi
- Junit4测试报错:java.lang.IllegalStateException: Failed to load ApplicationContext
- php 时间处理常用函数
- Hbase入门
- 6步学会VS封装DLL
- keil4升级到keil5出现..\USER\stm32f10x.h(298): error: #67: expected a "}"错误
- ios NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)