protoinfo.h
资源名称:P2PCSHARP.rar [点击查看]
上传用户:zhangjjyh
上传日期:2021-11-11
资源大小:1251k
文件大小:3k
源码类别:
P2P编程
开发平台:
Objective-C
- //////////////////////////////////////////////////
- // protoinfo.h文件
- /*
- 定义协议格式
- 定义协议中使用的宏
- */
- #ifndef __PROTOINFO_H__
- #define __PROTOINFO_H__
- #define ETHERTYPE_IP 0x0800
- #define ETHERTYPE_ARP 0x0806
- typedef struct _ETHeader // 14字节的以太头
- {
- UCHAR dhost[6]; // 目的MAC地址destination mac address
- UCHAR shost[6]; // 源MAC地址source mac address
- USHORT type; // 下层协议类型,如IP(ETHERTYPE_IP)、ARP(ETHERTYPE_ARP)等
- } ETHeader, *PETHeader;
- #define ARPHRD_ETHER 1
- // ARP协议opcodes
- #define ARPOP_REQUEST 1 // ARP 请求
- #define ARPOP_REPLY 2 // ARP 响应
- typedef struct _ARPHeader // 28字节的ARP头
- {
- USHORT hrd; // 硬件地址空间,以太网中为ARPHRD_ETHER
- USHORT eth_type; // 以太网类型,ETHERTYPE_IP ??
- UCHAR maclen; // MAC地址的长度,为6
- UCHAR iplen; // IP地址的长度,为4
- USHORT opcode; // 操作代码,ARPOP_REQUEST为请求,ARPOP_REPLY为响应
- UCHAR smac[6]; // 源MAC地址
- UCHAR saddr[4]; // 源IP地址
- UCHAR dmac[6]; // 目的MAC地址
- UCHAR daddr[4]; // 目的IP地址
- } ARPHeader, *PARPHeader;
- // 协议
- #define PROTO_ICMP 1
- #define PROTO_IGMP 2
- #define PROTO_TCP 6
- #define PROTO_UDP 17
- typedef struct _IPHeader // 20字节的IP头
- {
- UCHAR iphVerLen; // 版本号和头长度(各占4位)
- UCHAR ipTOS; // 服务类型
- USHORT ipLength; // 封包总长度,即整个IP报的长度
- USHORT ipID; // 封包标识,惟一标识发送的每一个数据报
- USHORT ipFlags; // 标志
- UCHAR ipTTL; // 生存时间,就是TTL
- UCHAR ipProtocol; // 协议,可能是TCP、UDP、ICMP等
- USHORT ipChecksum; // 校验和
- ULONG ipSource; // 源IP地址
- ULONG ipDestination; // 目标IP地址
- } IPHeader, *PIPHeader;
- // 定义TCP标志
- #define TCP_FIN 0x01
- #define TCP_SYN 0x02
- #define TCP_RST 0x04
- #define TCP_PSH 0x08
- #define TCP_ACK 0x10
- #define TCP_URG 0x20
- #define TCP_ACE 0x40
- #define TCP_CWR 0x80
- typedef struct _TCPHeader // 20字节的TCP头
- {
- USHORT sourcePort; // 16位源端口号
- USHORT destinationPort; // 16位目的端口号
- ULONG sequenceNumber; // 32位序列号
- ULONG acknowledgeNumber; // 32位确认号
- UCHAR dataoffset; // 高4位表示数据偏移
- UCHAR flags; // 6位标志位
- //FIN - 0x01
- //SYN - 0x02
- //RST - 0x04
- //PUSH- 0x08
- //ACK- 0x10
- //URG- 0x20
- //ACE- 0x40
- //CWR- 0x80
- USHORT windows; // 16位窗口大小
- USHORT checksum; // 16位校验和
- USHORT urgentPointer; // 16位紧急数据偏移量
- } TCPHeader, *PTCPHeader;
- typedef struct _UDPHeader
- {
- USHORT sourcePort; // 源端口号
- USHORT destinationPort;// 目的端口号
- USHORT len; // 封包长度
- USHORT checksum; // 校验和
- } UDPHeader, *PUDPHeader;
- #endif // __PROTOINFO_H__