• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            aurain
            技術(shù)文摘
            posts - 137,  comments - 268,  trackbacks - 0

             

            #ifndef _PROTO_H_
            #define _PROTO_H_

            /*
            * TCP/IP 協(xié)議類型
            */

            #define IPPROTO_IP        0              // IP
            #define IPPROTO_ICMP    1              // ICMP
            #define IPPROTO_TCP        6              // TCP
            #define IPPROTO_UDP        17             // UDP

            /*
            * 常見端口
            */

            #define PORT_DNS        53                // DNS

            /*
            * 其它定義
            */

            #define ETH_ALEN       6              // 以太網(wǎng)地址大小
            #define ETH_HLEN       14             // 以太網(wǎng)頭部大小
            #define ETH_DATA_LEN   1500           // 最大幀負(fù)載數(shù)據(jù)大小
            #define ETH_FRAME_LEN  1514           // 最大幀大小,頭部+負(fù)載數(shù)據(jù)

            /**
             * 常見協(xié)議定義
            *
            */

            #pragma pack(push, 
            1)

            /*
            *14字節(jié)的以太網(wǎng)包頭
            */

            typedef 
            struct _ETHDR         
            {
                UCHAR    eh_dst[ETH_ALEN];            
            // 目的MAC地址
                UCHAR    eh_src[ETH_ALEN];            // 源MAC地址
                USHORT    eh_type;                    // 下層協(xié)議類型,如IP(ETHERTYPE_IP)、ARP(ETHERTYPE_ARP)等
            }
             ETHDR, *PETHDR;

            /*
            *28字節(jié)的ARP頭
            */

            typedef 
            struct _ARPHDR    
            {
                USHORT    ar_hrd;                
            //    硬件地址類型,以太網(wǎng)中為ARPHRD_ETHER
                USHORT    ar_pro;                //  協(xié)議地址類型,ETHERTYPE_IP
                UCHAR    ar_hln;                //    硬件地址長度,MAC地址的長度為6
                UCHAR    ar_pln;                //    協(xié)議地址長度,IP地址的長度為4
                USHORT    ar_op;                //    ARP操作代碼,ARPOP_REQUEST為請(qǐng)求,ARPOP_REPLY為響應(yīng)
                UCHAR    ar_sha[ETH_ALEN];    //    源MAC地址
                ULONG    ar_sip;                //    源IP地址
                UCHAR    ar_tha[ETH_ALEN];    //    目的MAC地址
                ULONG    ar_tip;                //    目的IP地址
            }
             ARPHDR, *PARPHDR;

            /*
            *20字節(jié)的IP頭
            */

            typedef 
            struct _IPHDR        
            {
                UCHAR    h_lenver;            
            // 版本號(hào)和頭長度(各占4位)
                UCHAR    tos;                // 服務(wù)類型 
                USHORT    total_len;            // 封包總長度,即整個(gè)IP報(bào)的長度
                USHORT    ident;                // 封包標(biāo)識(shí),惟一標(biāo)識(shí)發(fā)送的每一個(gè)數(shù)據(jù)報(bào)
                USHORT    frag_and_flags;        // 標(biāo)志
                UCHAR    ttl;                // 生存時(shí)間,就是TTL
                UCHAR    protocol;            // 協(xié)議,可能是TCP、UDP、ICMP等
                USHORT    checksum;            // 校驗(yàn)和
                ULONG    saddr;                // 源IP地址
                ULONG    daddr;                // 目標(biāo)IP地址
            }
             IPHDR, *PIPHDR; 

            /*
            *20字節(jié)的TCP頭
            */

            typedef 
            struct _TCPHDR    
            {
                USHORT    srceport;            
            // 16位源端口號(hào)
                USHORT    dstport;            // 16位目的端口號(hào)
                ULONG    seq;                // 32位序列號(hào)
                ULONG    ack;                // 32位確認(rèn)號(hào)
                UCHAR    dataoffset;            // 高4位表示數(shù)據(jù)偏移
                UCHAR    flags;                // 6位標(biāo)志位
                
            //FIN - 0x01
                
            //SYN - 0x02
                
            //RST - 0x04 
                
            //PSH - 0x08
                
            //ACK - 0x10
                
            //URG - 0x20
                
            //ACE - 0x40
                
            //CWR - 0x80

                USHORT    window;                
            // 16位窗口大小
                USHORT    checksum;            // 16位校驗(yàn)和
                USHORT    urgptr;                // 16位緊急數(shù)據(jù)偏移量 
            }
             TCPHDR, *PTCPHDR;

            /*
            *偽TCP頭,計(jì)算校驗(yàn)和時(shí)使用
            */

            typedef 
            struct _PSDTCPHDR
            {
                ULONG    saddr;
                ULONG    daddr;
                
            char    mbz;
                
            char    ptcl;
                USHORT    tcpl;
            }
             PSDTCPHDR, *PPSDTCPHDR;

            /*
            *8字節(jié)的UDP頭
            */

            typedef 
            struct _UDPHDR
            {
                USHORT    srcport;            
            // 源端口號(hào)        
                USHORT    dstport;            // 目的端口號(hào)        
                USHORT    len;                // 封包長度
                USHORT    checksum;            // 校驗(yàn)和
            }
             UDPHDR, *PUDPHDR;

            /*
            *偽UDP頭,計(jì)算校驗(yàn)和時(shí)使用
            */

            typedef 
            struct _PSDUDPHDR
            {
                ULONG    saddr;
                ULONG    daddr;
                
            char    mbz;
                
            char    ptcl;
                USHORT    udpl;
            }
             PSDUDPHDR, *PPSDUDPHDR;

            /*
            *12字節(jié)的ICMP頭
            */

            typedef 
            struct _ICMPHDR
            {
                UCHAR   type;                
            //類型
                UCHAR   code;                //代碼
                USHORT  checksum;            //校驗(yàn)和
                USHORT  id;                    //標(biāo)識(shí)符
                USHORT  sequence;            //序列號(hào)
                ULONG   timestamp;            //時(shí)間戳
            }
             ICMPHDR, *PICMPHDR;

            /*
            *6字節(jié)的PPPOE頭+2字節(jié)協(xié)議
            */

            typedef 
            struct _PPPOEHDR
            {
                UCHAR    ver_type;            
            //版本+類型 一般為0x11
                UCHAR    code;                //編碼
                USHORT    sessionid;            //session id
                USHORT    len;                //長度
                USHORT    protocol;            //協(xié)議
            }
             PPPOEHDR, *PPPPOEHDR;

            /*
            * dns包頭
            */

            typedef 
            struct _DNSHDR 
            {
                USHORT id;
                USHORT flags;
                USHORT quests;
                USHORT answers;
                USHORT author;
                USHORT addition;
            }
             DNSHDR, *PDNSHDR;

            /* 
            * dns查詢包,query
            */

            typedef 
            struct _DNSQUERY
            {
                
            /*UCHAR *dname;*/    //查詢的域名,這是一個(gè)大小在0到63之間的字符串
                /*該域名的獲取方法如下:
                * 長度:udp包總長度-sizeof(UDPHDR)-sizeof(DNSHDR)-sizeof(DNSQUERY)
                * 內(nèi)容在dns頭后面
                
            */

                USHORT    type;            
            //查詢類型,大約有20個(gè)不同的類型
                USHORT    classes;        //查詢類,通常是A類既查詢IP地址
            }
             DNSQUERY, *PDNSQUERY;

            /* 
            * dns響應(yīng)包
            */

            typedef 
            struct _DNSRESPONSE
            {
                USHORT    name;        
            // 查詢的域名
                USHORT    type;        // 查詢的類型
                USHORT    classes;    // 類型碼
                UINT    ttl;        // 生存時(shí)間
                USHORT    length;        // 資源數(shù)據(jù)長度
                UINT    addr;        // 資源數(shù)據(jù)
            }
             DNSRESPONSE, *PDNRESPONSE;

            #pragma pack(pop)

            #endif
            posted on 2009-12-03 11:47 閱讀(6908) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 協(xié)議分析

            <2015年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(17)

            隨筆分類(138)

            隨筆檔案(137)

            網(wǎng)絡(luò)開發(fā)

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 499003
            • 排名 - 36

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲午夜久久久| 国产精品一久久香蕉国产线看观看| 亚洲国产精品成人久久蜜臀 | 久久亚洲中文字幕精品有坂深雪 | 亚洲精品乱码久久久久久中文字幕| 97久久精品无码一区二区| 日韩十八禁一区二区久久| 综合久久国产九一剧情麻豆| 国产成人精品久久综合| 人妻精品久久久久中文字幕一冢本| 99久久精品无码一区二区毛片 | 国产精品美女久久久久av爽| 一本久久知道综合久久| 久久久久久久综合日本| 国产精品久久久久久搜索| 亚洲日韩中文无码久久| 久久天天躁狠狠躁夜夜av浪潮| 国产精品福利一区二区久久| 国内精品伊人久久久久777| 久久久久无码精品国产app| 国产精品久久一区二区三区| 久久中文字幕人妻熟av女| 中文字幕成人精品久久不卡| 精品无码久久久久久尤物| 亚洲国产精品无码久久一线| 奇米影视7777久久精品人人爽| 久久99久久无码毛片一区二区| 伊人久久精品线影院| 国产91色综合久久免费| 国产精品美女久久久m| 久久国产精品一国产精品金尊| 亚洲日韩中文无码久久| 色狠狠久久AV五月综合| 狠狠色婷婷久久一区二区| 精品人妻伦九区久久AAA片69 | 久久强奷乱码老熟女| 久久久久黑人强伦姧人妻| 久久人搡人人玩人妻精品首页| 欧美日韩精品久久久久| 久久久久久久久66精品片| 欧美日韩久久中文字幕|