網絡分析中數據包結構的定義

CODE 協議結構定義
---------------------------------------
#pragma pack(1)    //進入字節對齊方式

typedef struct FramHeader_t
{                      //Pcap捕獲的數據幀頭
    BYTE DstMAC[6];    //目的MAC地址
    BYTE SrcMAC[6];    //源MAC地址
    WORD FrameType;    //幀類型
} FramHeader_t;

typedef struct IPHeader_t
{                        //IP數據包頭
    BYTE Ver_HLen;        //版本+報頭長度
    BYTE TOS;            //服務類型
    WORD TotalLen;        //總長度
    WORD ID;            //標識
    WORD Flag_Segment;    //標誌+片偏移
    BYTE TTL;            //生存週期
    BYTE Protocol;        //協議類型
    WORD Checksum;        //頭部校驗和
    DWORD SrcIP;        //源IP地址
    DWORD DstIP;        //目的IP地址
} IPHeader_t;

typedef struct ARPHeader_t
{                         //ARP數據包頭
    WORD HeadwareType;    //硬件類型
    WORD ProtocolType;    //協議類型
    BYTE HLen;            //硬件地址長度
    BYTE PLen;            //協議地址長度
    WORD Operation;        //操作類型
    BYTE SrcMAC[6];        //源MAC地址
    DWORD SrcIP;        //源IP地址
    BYTE DstMAC[6];        //目的MAC地址
    DWORD DstIP;        //目的IP地址
} ARPHeader_t;
typedef struct UDPHeader_t
{                    //UDP數據包頭
    WORD SrcPort;    //源端口
    WORD DstPort;    //目的端口
    WORD Len;        //總長度
    WORD Checksum;    //校驗和
}UDPHeader_t;
typedef struct TCPHeader_t
{                     //TCP數據包頭
    WORD SrcPort;     //源端口
    WORD DstPort;     //目的端口
    DWORD SeqNO;      //序號
    DWORD AckNO;      //確認號
    WORD Offset4_Reserved6_Flag6;    //頭部長度+保留+標誌
    WORD Window;      //窗口大小
    WORD Checksum;    //校驗和
    WORD UrgentPointer;    //緊急指針
    DWORD Option_;    //選項+填充
}TCPHeader_t;
#pragma pack()    //恢復默認對齊方式
----------------------------------------------------------------------------

一.IP 數據報結構

IP數據包結構分析

IP數據報中依次包括以下信息:

  1、Version=4,表示IP協議的版本號爲4。該部分佔4個BIT位。

  2、Header Length=20 Bytes,表示IP包頭的總長度爲20個字節。該部分佔4個BIT位,單位爲4個字節,因此,一個IP包頭的長度最長爲“1111”,即15*4=60個字節。

  3、Type of Service=00,表示服務類型爲0。該部分用二個十六進制值來表示,共佔8個BIT。

  8個BIT的含義是:

    000          前三位不用

    0            表示最小時延,如Telnet服務使用該位

    0               表示吞吐量,如FTP服務使用該位

    0               表示可靠性,如SNMP服務使用該位

    0               表示最小代價

    0               不用

  4、Total Length=48Bytes,表示該IP包的總長度爲48個字節。該部分佔16個BIT,單位爲Byte。由此可見,一個IP數據包的最大長度爲2的 16次方減1,即:65535個字節。因此,在以太網中能夠傳輸的最大IP數據包爲65535個字節。

  5、Identification=363,表示IP包識別號爲363。該部分佔16個BIT,以十進制數表示。

  6、Flags,表示片標誌,佔3個BIT。各位含義分別爲:第一個“0”不用,第二個“0”爲分片標誌位,“1”表示分片,“0”表示不分版本。第三個0爲是否最後一片標誌位,0表示最後一片,1表示還有更多的片。

  7、Fragment Offset=0,表示片偏移爲0個Bytes。該部分佔13個BIT。

  8、Time to Live=128Secongs/Hops,表示生存時間TTL值爲128。該部分佔8個BIT。

  9、Proctol=6(TCP),表示協議類型爲TCP,協議代碼是6。如果是UDP協議,則此處的協議代碼應爲17。如果是ICMP協議,則此處的協議代碼應爲1。該部分佔8個BIT。

  10、Header Checksun=4035(correct),表示IP包頭校驗和爲4035,括號內的Correct表示此IP數據包是正確的,沒有被非法修改過。該部分佔16個BIT,用十六進制表示。

  11、Source Address=[76.88.16.104],表示IP數據包源地址爲:76.88.16.104。該部分佔32個BIT。

  12、Destination Address=[76.88.16.16],表示IP數據包目的地址爲:76.88.16.16。該部分佔32個BIT。

  13、No Options,表示IP數據包中未使用選項部分。當需要記錄路由時才使用該選項。

二.TCP數據報結構

TCP數據報結構分析
TCP數據報中依次包括以下信息:

  1、Source Port=1038,表示發起連接的源端口爲1038。該部分佔16個BIT。通過此值,可以看出發起連接的計算機源端口號。

  2、Destination Port=21(FTP-CTRL),表示要連接的目的端口爲21。該部分佔16個BIT。通過此值,可以看出要登錄的目的端口號。21端口表示是FTP服務端口。

  3、Initial Sequence Number=1791872318,表示初始連接的請求號,即SEQ值。該部分佔32個BIT,值從1到2的32次方減1。

  4、Next Expected SEQ Number=1791872319,表示對方的應答號應爲1791872319,即對方返回的ACK值。該部分佔32個BIT,值從1到2的32次方減1。

  5、Data Offset=28 Bytes,表示數據偏移的大小。該部分佔4個BIT。

  6、Reserved Bites:保留位,此處不用。該部分佔6個BIT。

  7、Flags=02。該值用兩個十六進制數來表示。該部分長度爲6個BIT,6個標誌位的含義分別是:

    0        URG,緊急數據標誌,爲1表示有緊急數據,應立即進行傳遞。

    0        ACK,確認標誌位,爲1表示此數據包爲應答數據包

    0        PSH,PUSH標誌位,爲1表示此數據包應立即進行傳遞。

    0        RST:復位標誌位。如果收到不屬於本機的數據包,則返回一個RST

    0        SYN:連接請求標誌位。爲1表示爲發起連接的請求數據包。

    0        FIN:結束連接請求標誌位。爲1表示是結束連接的請求數據包。

  8、Window=64240,表示窗口是64240。該部分佔16個BIT。

  9、CheckSum=92D7(Correct),表示校驗和是92D7。該部分佔16個BIT,用十六進制表示。

  10、Urgent Pointer=0,表示緊急指針爲0。該部分佔16個BIT。

  11、Maximum Segment Size=1460,表示最大段大小爲1460個字節。

三.UDP數據報結構

16 32bit
Source port Destination port
Length Checksum
Data

  • Source Port — 16位。源端口是可選字段。當使用時,它表示發送程序的端口,同時它還被認爲是沒有其它信息的情況下需要被尋址的答覆端口。如果不使用,設置值爲0。
  • Destination Port — 16位。目標端口在特殊因特網目標地址的情況下具有意義。
  • Length — 16位。該用戶數據報的八位長度,包括協議頭和數據。長度最小值爲8。
  • Checksum — 16位。IP 協議頭、UDP 協議頭和數據位,最後用0填補的信息假協議頭總和。如果必要的話,可以由兩個八位複合而成。
  • Data — 包含上層數據信息。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章