卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

DNS設(shè)計(jì)報(bào)告

北京郵電大學(xué)課程設(shè)計(jì)報(bào)告注:評(píng)語(yǔ)要體現(xiàn)每個(gè)學(xué)生的工作情況,可以加頁(yè)。1 ,目錄1系統(tǒng)功能設(shè)計(jì) .......................................

北京郵電大學(xué)課程設(shè)計(jì)報(bào)告

注:評(píng)語(yǔ)要體現(xiàn)每個(gè)學(xué)生的工作情況,可以加頁(yè)。

1

,

目錄

1系統(tǒng)功能設(shè)計(jì) ............................................................................................................ 3

2模塊劃分 .................................................................................................................... 3

2.1數(shù)據(jù)結(jié)構(gòu) .......................................................................................................... 3

2.1.1 DNS域名解析表結(jié)構(gòu) . ............................................................................ 3

2.1.2 DNS DNS報(bào)文首部 . ................................................................................ 3

2.1.3 ID 轉(zhuǎn)換表結(jié)構(gòu) ..................................................................................... 5

2.1.4 DNS響應(yīng)報(bào)文answer 域定長(zhǎng)部分 . ...................................................... 5

2.1.5 DNS響應(yīng)報(bào)文answer 域 . ...................................................................... 6

2.2接口設(shè)計(jì) .......................................................................................................... 7

2.2.1獲取域名解析表 .................................................................................... 7

2.2.2獲取用戶請(qǐng)求域名 ................................................................................ 7

2.2.3在DNS 對(duì)照表中查找域名.................................................................... 8

2.2.4中繼功能下ID 轉(zhuǎn)換 ............................................................................... 9

2.2.5解析響應(yīng)報(bào)文中的IP 地址 ................................................................. 10

3軟件流程圖 .............................................................................................................. 12

4測(cè)試用例及運(yùn)行結(jié)果 .............................................................................................. 13

4.1軟件啟動(dòng) ........................................................................................................ 13

4.2測(cè)試用例及運(yùn)行結(jié)果 .................................................................................... 15

4.2.1本地服務(wù)器 .......................................................................................... 15

4.2.2屏蔽 ...................................................................................................... 15

4.2.3中繼 ...................................................................................................... 16

4.2.4瀏覽器演示 .......................................................................................... 17

5調(diào)試中遇到并解決的問(wèn)題 ...................................................................................... 17

6課程設(shè)計(jì)工作總結(jié) .................................................................................................. 18

2

,

1系統(tǒng)功能設(shè)計(jì)

該DNS 服務(wù)器程序,讀入“域名-IP 地址”對(duì)照表,當(dāng)客戶端查詢域名對(duì)應(yīng)的IP 地址時(shí),用域名檢索該對(duì)照表,有三種檢索結(jié)果:

(1) 檢索結(jié)果為ip 地址0.0.0.0,則向客戶端返回“域名不存在”的報(bào)錯(cuò)消息

(不良網(wǎng)站攔截功能)

(2) 檢索結(jié)果為普通IP 地址,則向客戶返回這個(gè)地址(服務(wù)器功能)

(3) 表中未檢到該域名,則向因特網(wǎng)DNS 服務(wù)器發(fā)出查詢,并將結(jié)果返給客

戶端(中繼功能)??紤]多個(gè)計(jì)算機(jī)上的客戶端會(huì)同時(shí)查詢,需要進(jìn)行消息ID 的轉(zhuǎn)換

2模塊劃分

2.1數(shù)據(jù)結(jié)構(gòu)

2.1.1 DNS域名解析表結(jié)構(gòu)

typedef struct translate

{

string IP;

string domain;

} Translate; //IP地址 //域名

2.1.2 DNS DNS報(bào)文首部

typedef struct DNSHeader

{

unsigned short ID;

unsigned short Flags;

unsigned short QuestNum;

unsigned short AnswerNum;

unsigned short AuthorNum;

unsigned short AdditionNum;

}

3

,

●DNS 報(bào)文首部說(shuō)明:

標(biāo)識(shí)(2字節(jié)):這個(gè)字段網(wǎng)上的解釋有點(diǎn)不清楚:“由客戶程序設(shè)置并有服務(wù)器返回結(jié)果?!笨戳讼聦?shí)驗(yàn)室的程序和文檔,原來(lái)這個(gè)字段可以看作是DNS 報(bào)文的ID ,對(duì)于相關(guān)聯(lián)的請(qǐng)求報(bào)文和應(yīng)答報(bào)文,這個(gè)字段是相同的,由此可以區(qū)分DNS 應(yīng)答報(bào)文是哪個(gè)請(qǐng)求報(bào)文的響應(yīng)。

標(biāo)志(2字節(jié)):這部分非常重要,需要逐比特分析:

QR(1比特):查詢/響應(yīng)的標(biāo)志位,1為響應(yīng),0為查詢。

opcode (4比特):定義查詢或響應(yīng)的類型(若為0則表示是標(biāo)準(zhǔn)的,若為1則是反向的,若為2則是服務(wù)器狀態(tài)請(qǐng)求)。

AA (1比特):授權(quán)回答的標(biāo)志位。該位在響應(yīng)報(bào)文中有效,1表示名字服務(wù)器是權(quán)限服務(wù)器(關(guān)于權(quán)限服務(wù)器以后再討論)

TC (1比特):截?cái)鄻?biāo)志位。1表示響應(yīng)已超過(guò)512字節(jié)并已被截?cái)啵ㄒ老『孟裼浀媚睦锾徇^(guò)這個(gè)截?cái)嗪蚒DP 有關(guān),先記著)

RD (1比特):該位為1表示客戶端希望得到遞歸回答(遞歸以后再討論) RA (1比特):只能在響應(yīng)報(bào)文中置為1,表示可以得到遞歸響應(yīng)。 zero (3比特):不說(shuō)也知道都是0了,保留字段。

4

,

rcode (4比特):返回碼,表示響應(yīng)的差錯(cuò)狀態(tài),通常為0和3,各取值含義如下:

0-無(wú)差錯(cuò)

1-格式差錯(cuò)

2-問(wèn)題在域名服務(wù)器上

3-域參照問(wèn)題

4-查詢類型不支持

5-在管理上被禁止

6~15-保留

標(biāo)志段說(shuō)完了,下面是問(wèn)題數(shù)、資源記錄數(shù)、授權(quán)資源記錄數(shù)和額外資源記錄數(shù),這四個(gè)字段都是兩字節(jié),分別對(duì)應(yīng)下面的查詢問(wèn)題、回答、授權(quán)和額外信息部分的數(shù)量。一般問(wèn)題數(shù)都為1,DNS 查詢報(bào)文中,資源記錄數(shù)、授權(quán)資源記錄數(shù)和額外資源記錄數(shù)都為0.

2.1.3 ID 轉(zhuǎn)換表結(jié)構(gòu)

typedef struct IDChange

{

unsigned short oldID;

BOOL done;

SOCKADDR_IN client;

} //原有ID //標(biāo)記是否完成解析 //請(qǐng)求者套接字地址

2.1.4 DNS響應(yīng)報(bào)文answer 域定長(zhǎng)部分

struct R_DATA

{

unsigned short name;

unsigned short type;

unsigned short _class;

char ttl[4];

unsigned short data_len;

}

●DNS 響應(yīng)報(bào)文answer 域說(shuō)明:

5

,

●域名字段(不定長(zhǎng)或2字節(jié)):記錄中資源數(shù)據(jù)對(duì)應(yīng)的名字,它的格式和查詢名字段格式相同。但是看報(bào)文實(shí)例還有分析程序,我發(fā)現(xiàn)很多DNS 響應(yīng)報(bào)文中,此字段由于和查詢問(wèn)題部分的域名相同,改為使用2字節(jié)指針,指向查詢問(wèn)題部分的域名。關(guān)于指針怎么計(jì)算,TCP/IP詳解里面有,不過(guò)這本書昨天剛被師兄拿回去,所以現(xiàn)在寫不了了。

●類型(2字節(jié))、類(2字節(jié)):含義與查詢問(wèn)題部分的類型和類相同。 ●生存時(shí)間(4字節(jié)):該字段表示資源記錄的生命周期(以秒為單位),一般用于當(dāng)?shù)刂方馕龀绦蛉〕鲑Y源記錄后決定保存及使用緩存數(shù)據(jù)的時(shí)間。

●資源數(shù)據(jù)長(zhǎng)度(2字節(jié)):表示資源數(shù)據(jù)的長(zhǎng)度(以字節(jié)為單位,如果資源數(shù)據(jù)為IP 則為0004)

●資源數(shù)據(jù):該字段是可變長(zhǎng)字段,表示按查詢段要求返回的相關(guān)資源記錄的數(shù)據(jù)。

2.1.5 DNS響應(yīng)報(bào)文answer 域

struct RES_RECORD

{

struct R_DATA *resource;

unsigned char *rdata; //變長(zhǎng)部分,長(zhǎng)度由R_DATA中的data_len指明

}

6

,

2.2接口設(shè)計(jì)

2.2.1獲取域名解析表

函數(shù)名稱:get_table

入口參數(shù):域名解析表文件絕對(duì)路徑

出口參數(shù):獲得域名解析表中信息條目個(gè)數(shù)

函數(shù)功能:將域名解析表文件中的域名對(duì)照信息讀入dns 域名解析表結(jié)構(gòu)中 函數(shù)原型:int get_table(char *tablePath)

程序流程圖:

2.2.2獲取用戶請(qǐng)求域名

函數(shù)名稱:get_url

入口參數(shù):53端口送來(lái)的dns 請(qǐng)求信息; dns請(qǐng)求信息字節(jié)數(shù)

出口參數(shù):無(wú)

函數(shù)功能:將用戶需要解析的域名從端口發(fā)來(lái)的dns 請(qǐng)求信息報(bào)文中解析出來(lái) 函數(shù)原型:void get_url(char *recvbuf, int recvnum, int type) 程序流程圖:

7

,

2.2.3在DNS 對(duì)照表中查找域名

函數(shù)名稱:is_find

入口參數(shù):解析后的域名;域名表中信息條目的個(gè)數(shù)

出口參數(shù):如果成功在域名表中找到對(duì)應(yīng)的域名,則返回其在域名表中的位置信息;否則返回-1

函數(shù)功能:判斷是否在表中找到DNS 請(qǐng)求中的域名,找到返回下標(biāo)

函數(shù)原型:int is_find(char* url, int num)

程序流程圖:

8

,

2.2.4中繼功能下ID 轉(zhuǎn)換

函數(shù)名稱:RegisterNewID

入口參數(shù):oID-收到dns 報(bào)文的ID ;temp-請(qǐng)求套接字地址;ifdone-標(biāo)識(shí)是否完成解析

出口參數(shù):新的ID

函數(shù)功能:將請(qǐng)求ID 轉(zhuǎn)換為新的ID ,并將信息寫入ID 轉(zhuǎn)換表中

函數(shù)原型:unsigned short RegisterNewID (unsigned short oID, SOCKADDR_IN temp, BOOL ifdone)

程序流程圖:

9

,

2.2.5解析響應(yīng)報(bào)文中的IP 地址

函數(shù)名稱:parase

入口參數(shù):buf-DNS 響應(yīng)報(bào)文;recvnum-響應(yīng)報(bào)文對(duì)應(yīng)的請(qǐng)求報(bào)文字節(jié)數(shù) 出口參數(shù):無(wú)

函數(shù)功能:解析外部DNS 服務(wù)器送來(lái)的響應(yīng)報(bào)文中的IP 地址

函數(shù)原型:void parase(char *buf , int recvnum)

程序流程圖:

10

標(biāo)簽: