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 蔣耘 閱讀(6998) 評論(0)  編輯  收藏 所屬分類: 網絡


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


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

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 昌都县| 图木舒克市| 岳阳市| 游戏| 方城县| 颍上县| 伽师县| 湖南省| 卓尼县| 南平市| 望城县| 盐边县| 闻喜县| 滨海县| 贵德县| 邢台县| 东港市| 宣城市| 顺平县| 云林县| 湟源县| 思南县| 陆川县| 开封县| 定边县| 鸡泽县| 庆阳市| 兴安县| 连江县| 莎车县| 丹巴县| 盖州市| 罗甸县| 武夷山市| 屏东市| 鹤岗市| 三门峡市| 黄骅市| 饶河县| 海宁市| 古蔺县|