IP.H
上传用户:zsjierui
上传日期:2007-01-05
资源大小:156k
文件大小:3k
源码类别:

网络编程

开发平台:

Visual C++

  1. /*  IP structure defination 
  2.         Written by HiHint */
  3. #define BUFFER_SIZE 16384
  4. #define READ 1
  5. #define WRITE 2
  6. #define ETHER_PROTO_IP 0x0800 /* Ethernet protocol IP */
  7. #define ETHER_PROTO_ARP 0x0806 /* Ethernet protocol ARP */
  8. #define ETHER_HEAD_LEN 14/* Ethernet head length */
  9. #define ARP_HARD_TYPE 1 /* Ethernet card*/
  10. #define ARP_PROTO_TYPE 0x0800 /* IP protocol */
  11. #define ARP_HARD_ADDR_LEN 6 /* Ethernet card address length */
  12. #define ARP_ADDR_LEN 4 /* IP protocol address length */
  13. #define ARP_OPER_ARP_REQ 1 /* Arp request */
  14. #define ARP_OPER_ARP_ANS 2 /* Arp answer */
  15. #define ARP_OPER_RARP_REQ 3 /* Rarp request */
  16. #define ARP_OPER_RARP_ANS 4 /* Rarp answer */
  17. #define ARP_PACKET_LEN 28 /* Arp packet length */
  18. #define IP_VER 4 /* IP version */
  19. #define IP_HEAD_LEN 5 /* IP head length */
  20. #define IP_SERV_TYPE 0 /* IP service type */
  21. #define IP_PROTO_TCP 6 /* TCP protocol */
  22. #define IP_PROTO_UDP 17 /* UDP protocol */
  23. #define IP_PROTO_ICMP 1 /* ICMP protocol */
  24. #define IP_PAD 0 /* IP pseudohead padding */
  25. #define IP_MF 0x4000 /* IP MF */
  26. #define IP_DF 0x2000 /* IP DF */
  27. #define IP_FLAG_MASK 0x1fff /* IP flagoffset mask */
  28. #define IP_HEAD_BYTE_LEN 20 /* IP head length in byte */
  29. #define TCP_HEAD_LEN 5 /* TCP head length */
  30. #define TCP_URG 0x20 /* TCP URG */
  31. #define TCP_ACK 0x10 /* TCP ACK */
  32. #define TCP_PSH 0x08 /* TCP PSH */
  33. #define TCP_RST 0x04 /* TCP RST */
  34. #define TCP_SYN 0x02 /* TCP SYN */
  35. #define TCP_FIN 0x01 /* TCP FIN */
  36. #define TCP_HEAD_BYTE_LEN 20 /* TCP head length in byte */
  37. #define UDP_HEAD_LEN 8 /* UDP head length */
  38. #define PSEUDO_HEAD_LEN 12 /* Pseudo head length */
  39. #define ICMP_HEAD_LEN 4 /* ICMP head length */
  40. struct EtherAddr {
  41. unsigned char AddrByte[6];
  42. };
  43. struct EtherPacketHead {
  44. struct EtherAddr DestEther;
  45. struct EtherAddr SourEther;
  46. unsigned short ServType;
  47. };
  48. struct IPAddr {
  49. unsigned char AddrByte[4];
  50. };
  51. struct IPPacketHead {
  52. BYTE VerHLen;
  53. BYTE Type;
  54. WORD TtlLen;
  55. WORD Id;
  56. WORD FlgOff;
  57. BYTE TTL;
  58. BYTE Proto;
  59. WORD ChkSum;
  60. struct IPAddr SourIP;
  61. struct IPAddr DestIP;
  62. };
  63. struct TCPPacketHead {
  64. WORD SourPort;
  65. WORD DestPort;
  66. DWORD SeqNo;
  67. DWORD AckNo;
  68. BYTE HLen;
  69. BYTE Flag;
  70. WORD WndSize;
  71. WORD ChkSum;
  72. WORD UrgPtr;
  73. };
  74. struct ICMPPacketHead {
  75. BYTE Type;
  76. BYTE Code;
  77. WORD ChkSum;
  78. };
  79. struct UDPPacketHead {
  80. WORD SourPort;
  81. WORD DestPort;
  82. WORD Len;
  83. WORD ChkSum;
  84. };
  85. struct PseudoHead {
  86. struct IPAddr SourIP;
  87. struct IPAddr DestIP;
  88. BYTE Pad;
  89. BYTE Proto;
  90. WORD Len;
  91. };
  92. struct ARPPacket {
  93.  WORD Type;
  94.  WORD Proto;
  95.  BYTE HardAddrLen;
  96.  BYTE AddrLen;
  97.  WORD Oper;
  98.  struct EtherAddr SourEther;
  99.  struct IPAddr SourIP;
  100.  struct EtherAddr DestEther;
  101.  struct IPAddr DestIP;
  102. };
  103. struct PacketTable {
  104. HANDLE hEvent;
  105. BOOL Active;
  106. OVERLAPPED Overlap;
  107. DWORD Size;
  108. BYTE Buffer[BUFFER_SIZE];
  109. DWORD Length;
  110. WORD Type;
  111. };