我試圖發送一個DNS響應消息給我的瀏覽器,現在我創建了一些結構併爲drupal.org的網站填充了一個。格式不正確的DNS響應
當我發送迴應wiresharks sais時,它是格式不正確, 有人可以看看?
dnsresponse response;
unsigned char buf[sizeof response];
response.id = (unsigned short) htons(GetCurrentProcessId());
response.response = 1;
response.opCode = 0;
response.authoritative = 0;
response.truncated = 0;
response.recursion = 1;
response.recursionAvField = 1;
response.z = 0;
response.replyCode = 0;
response.questions = 1;
response.answer = 1;
response.authorityRRS = 0;
response.additionalRRS = 0;
response.qName = (unsigned char *)malloc(sizeof("www.drupal.org"));
response.qType = 1;
response.qClass = 1;
response.aName = (unsigned char *)malloc(sizeof("www.drupal.org"));
response.aType = 1;
response.aClass = 1;
response.ttl = 0;
response.dataLength = 9;
response.addr = 2362640912;
memcpy(buf, &response, sizeof response);
我的結構如下:
typedef struct
{
unsigned short id; // ID nummer
unsigned short response :1; // 1 is reply 0 is query
unsigned short opCode :4;
unsigned short authoritative :1; // DNS server is authoritative server
unsigned short truncated :1;
unsigned short recursion :1; // Recursie of niet
unsigned short recursionAvField :1; // Recursie in reply
unsigned short z :3;
//unsigned short aa;
//unsigned short nAD;
unsigned short replyCode :4;
unsigned short questions;
unsigned short answer;
unsigned short authorityRRS;
unsigned short additionalRRS;
unsigned char * qName;
unsigned short qType;
unsigned short qClass;
unsigned char * aName;
unsigned short aType;
unsigned short aClass;
int ttl :32;
unsigned short dataLength;
unsigned int addr :32;
}dnsresponse;
親切的問候,
您需要閱讀DNS的RFC文檔。編碼DNS消息並不是那麼簡單。 (特別是,你有指針指針,把指針值發送出去是沒有意義的,指針只在你自己的程序中有用) – nos