複製鏈接
請複製以下鏈接發送給好友

數據包報頭

鎖定
網絡協議通訊中,被附加到用於控制信息的運載和傳輸的數據包前面的定義位長度的特殊保留字段。當數據包到達其目標時,因為該數據包是以每個協議層的對應相反順序處理和解包的,所以該字段將被分離並丟棄。
中文名
數據包報頭
包頭14字節
typedef struct ethdr
簡    介
該字段將被分離並丟棄
類    型
通信數據術語

目錄

  1. 1 應用

數據包報頭應用

//以太網報頭14字節
typedef struct ethdr
{unsigned char destination_mac[6]; //目的MAC 6字節
unsigned char source_mac[6]; //源MAC 6字節
unsigned short type; //後面的協議類型2字節ARP-0806;IP-0800}ET_HEADER,*PETHDR;
//地址解析協議(Address Resolution Protocol)
//arp報頭28字節
typedef struct arphdr
{unsigned short hard_tpye; //硬件類型2字節通常為0x0001(以太網)
unsigned short protocol; //協議類型2字節通常為0x0800 (IP)
unsigned char hard_length; //硬件地址長度1字節通常為6
unsigned char protocol_length; //協議地址長度1字節通常為4 (IP協議)
unsigned short operation_type; //操作類型1為ARP請求,2為ARP應答,3為RARP請求,4為RARP應答
unsigned char source_mac[6]; //源MAC
unsigned char source_ip[4]; //源IP地址
unsigned char destination_mac[6]; //目的MAC
unsigned char destination_ip[4]; //目的IP地址}ARP_HEADER,*PARPHDR;
//互聯網協議(Internet Protocol)
//IP數據報頭
typedef struct iphdr
{unsigned char VIHL; // Version and IHL 版本4bit = 4 和首部長度4bit = 5
unsigned char TOS; // Type Of Service 服務類型1字節
unsigned short TotLen; // Total Length 總長度2字節,包括數據和報頭
unsigned short ID; // Identification 標識符2字節
unsigned short FlagOff; // Flags and Fragment Offset 標誌3bit 和分段偏移量13bit
unsigned char TTL; // Time To Live 生存期1字節,為經過路由器的總次數
unsigned char Protocol; // Protocol 協議類型1字節 ICMP-1,TCP-6,UDP-17
unsigned short Checksum; // Checksum 首部(只是IP首部。!)校驗和2字節
unsigned char source_ip[4]; // Source IP 源IP地址
unsigned char destination_ip[4]; // Destination IP 目的IP地址}IP_HEADER, *PIP_HEADER;
//傳輸控制協議(Transmission Control Protocol)
//TCP數據報頭
typedef struct tcphdr
{unsigned short source_port; //源端口
unsigned short destination_port; //目的端口
unsigned long sequence; //32位序號
unsigned long ack_sequence; //32位確認序號
unsigned char header_length; //首部長度,只用高4位通常為5
unsigned char flags; //標誌位 X | X | URG | ACK | PSH | RST | SYN | FIN
unsigned short window_size; //窗口大小
unsigned short checksum; //校驗和
unsigned short exigency_pointer; //緊急指針
}TCP_HEADER;
//用户數據報協議(User Datagram Protocol)
//UDP數據報頭
typedef struct udphdr
{unsigned short source_port; //源端口
unsigned short destination_port; //目的端口
unsigned short length; //數據長度
unsigned short checksum; //校驗和包括數據!} UDP_HEADER;
//以太網消息控制協議(Internet Control Messages Protocol)
//ICMP數據報頭
typedef struct icmphdr
{u_char Type; // 類型 0-請求,8-應答,11-超時
u_char Code; // 代碼0
u_short Checksum; // 校驗和
u_short ID; // 標識符
u_short Seq; // 序列號}ICMP_HEADER, *PICMP_HEADER;
//域名服務器(Domain Name Server)
//DNS數據報
typedef struct dns
{unsigned short id; //標識,通過它客户端可以將DNS的請求與應答相匹配;
unsigned short flags; //標誌:[QR | opcode | AA| TC| RD| RA | zero | rcode ]
unsigned short quests; //問題數目;
unsigned short answers; //資源記錄數目;
unsigned short author; //授權資源記錄數目;
unsigned short addition; //額外資源記錄數目;}DNS,*PDNS;
//在16位的標誌中:QR位判斷是查詢/響應報文,opcode區別查詢類型,AA判斷是否為授權回答,TC判斷
//是否可截斷,RD判斷是否期望遞歸查詢,RA判斷是否為可用遞歸,zero必須為0,rcode為返回碼字段。
typedef struct psd //偽報頭,用於計算UDP校驗和
{unsigned int source_ip; //源IP
unsigned int destination_ip; //目的IP
char mbz; // 0
char protocol; //協議UDP = 17
unsigned short udp_length; //UDP 長度
}PSD,*PPSD;
//DNS查詢數據報:
typedef struct query
{unsigned short type; //查詢類型,大約有20個不同的類型
unsigned short classes; //查詢類,通常是A類既查詢IP地址。}QUERY,*PQUERY;
//DNS響應數據報:
typedef struct response
{unsigned short name; //查詢的域名
unsigned short type; //查詢類型
unsigned short classes; //類型碼
unsigned int ttl; //生存時間
unsigned short length; //資源數據長度
unsigned int addr; //資源數據}RESPONSE,*PRESPONSE;