TCP/IP協議頭部結構體(轉)

          // i386 is little_endian.
          #ifndef LITTLE_ENDIAN
          #define LITTLE_ENDIAN   (1)   //BYTE ORDER
          #else
          #error Redefine LITTLE_ORDER
          #endif

          //Mac頭部,總長度14字節
          typedef struct _eth_hdr
          {
          unsigned char dstmac[6]; //目標mac地址
          unsigned char srcmac[6]; //源mac地址
          unsigned short eth_type; //以太網類型
          }eth_hdr;

          //IP頭部,總長度20字節
          typedef struct _ip_hdr
          {
          #if LITTLE_ENDIAN
          unsigned char ihl:4;   //首部長度
          unsigned char version:4, //版本
          #else
          unsigned char version:4, //版本
          unsigned char ihl:4;   //首部長度
          #endif
          unsigned char tos;   //服務類型
          unsigned short tot_len; //總長度
          unsigned short id;    //標志
          unsigned short frag_off; //分片偏移
          unsigned char ttl;   //生存時間
          unsigned char protocol; //協議
          unsigned short chk_sum; //檢驗和
          struct in_addr srcaddr; //源IP地址
          struct in_addr dstaddr; //目的IP地址
          }ip_hdr;

          //TCP頭部,總長度20字節
          typedef struct _tcp_hdr
          {
          unsigned short src_port;   //源端口號
          unsigned short dst_port;   //目的端口號
          unsigned int seq_no;    //序列號
          unsigned int ack_no;    //確認號
          #if LITTLE_ENDIAN
          unsigned char reserved_1:4; //保留6位中的4位首部長度
          unsigned char thl:4;    //tcp頭部長度
          unsigned char flag:6;    //6位標志
          unsigned char reseverd_2:2; //保留6位中的2位
          #else
          unsigned char thl:4;    //tcp頭部長度
          unsigned char reserved_1:4; //保留6位中的4位首部長度
          unsigned char reseverd_2:2; //保留6位中的2位
          unsigned char flag:6;    //6位標志
          #endif
          unsigned short wnd_size;   //16位窗口大小
          unsigned short chk_sum;   //16位TCP檢驗和
          unsigned short urgt_p;    //16為緊急指針
          }tcp_hdr;

          //UDP頭部,總長度8字節
          typedef struct _udp_hdr
          {
          unsigned short src_port; //遠端口號
          unsigned short dst_port; //目的端口號
          unsigned short uhl;   //udp頭部長度
          unsigned short chk_sum; //16位udp檢驗和
          }udp_hdr;

          //ICMP頭部,總長度4字節
          typedef struct _icmp_hdr
          {
          unsigned char icmp_type;   //類型
          unsigned char code;    //代碼
          unsigned short chk_sum;   //16位檢驗和
          }icmp_hdr; 

          posted on 2009-05-12 15:37 蔣耘 閱讀(6999) 評論(0)  編輯  收藏 所屬分類: 網絡


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 双牌县| 邵武市| 万盛区| 霞浦县| 郧西县| 孟连| 莱阳市| 邢台县| 舒城县| 萨迦县| 卢氏县| 农安县| 南漳县| 清远市| 丹寨县| 察隅县| 屏山县| 海原县| 庆阳市| 朔州市| 疏附县| 晋宁县| 雷山县| 紫金县| 毕节市| 莱西市| 延寿县| 阿拉尔市| 富宁县| 保康县| 喀什市| 诸暨市| 海南省| 民乐县| 盱眙县| 鄂州市| 新化县| 娄底市| 株洲市| 旬阳县| 姚安县|