成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

DNS設計報告

北京郵電大學課程設計報告注:評語要體現(xiàn)每個學生的工作情況,可以加頁。1 ,目錄1系統(tǒng)功能設計 .......................................

北京郵電大學課程設計報告

注:評語要體現(xiàn)每個學生的工作情況,可以加頁。

1

,

目錄

1系統(tǒng)功能設計 ............................................................................................................ 3

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

2.1數(shù)據(jù)結構 .......................................................................................................... 3

2.1.1 DNS域名解析表結構 . ............................................................................ 3

2.1.2 DNS DNS報文首部 . ................................................................................ 3

2.1.3 ID 轉換表結構 ..................................................................................... 5

2.1.4 DNS響應報文answer 域定長部分 . ...................................................... 5

2.1.5 DNS響應報文answer 域 . ...................................................................... 6

2.2接口設計 .......................................................................................................... 7

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

2.2.2獲取用戶請求域名 ................................................................................ 7

2.2.3在DNS 對照表中查找域名.................................................................... 8

2.2.4中繼功能下ID 轉換 ............................................................................... 9

2.2.5解析響應報文中的IP 地址 ................................................................. 10

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

4測試用例及運行結果 .............................................................................................. 13

4.1軟件啟動 ........................................................................................................ 13

4.2測試用例及運行結果 .................................................................................... 15

4.2.1本地服務器 .......................................................................................... 15

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

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

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

5調試中遇到并解決的問題 ...................................................................................... 17

6課程設計工作總結 .................................................................................................. 18

2

,

1系統(tǒng)功能設計

該DNS 服務器程序,讀入“域名-IP 地址”對照表,當客戶端查詢域名對應的IP 地址時,用域名檢索該對照表,有三種檢索結果:

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

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

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

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

戶端(中繼功能)??紤]多個計算機上的客戶端會同時查詢,需要進行消息ID 的轉換

2模塊劃分

2.1數(shù)據(jù)結構

2.1.1 DNS域名解析表結構

typedef struct translate

{

string IP;

string domain;

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

2.1.2 DNS DNS報文首部

typedef struct DNSHeader

{

unsigned short ID;

unsigned short Flags;

unsigned short QuestNum;

unsigned short AnswerNum;

unsigned short AuthorNum;

unsigned short AdditionNum;

}

3

,

●DNS 報文首部說明:

標識(2字節(jié)):這個字段網(wǎng)上的解釋有點不清楚:“由客戶程序設置并有服務器返回結果?!笨戳讼聦嶒炇业某绦蚝臀臋n,原來這個字段可以看作是DNS 報文的ID ,對于相關聯(lián)的請求報文和應答報文,這個字段是相同的,由此可以區(qū)分DNS 應答報文是哪個請求報文的響應。

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

QR(1比特):查詢/響應的標志位,1為響應,0為查詢。

opcode (4比特):定義查詢或響應的類型(若為0則表示是標準的,若為1則是反向的,若為2則是服務器狀態(tài)請求)。

AA (1比特):授權回答的標志位。該位在響應報文中有效,1表示名字服務器是權限服務器(關于權限服務器以后再討論)

TC (1比特):截斷標志位。1表示響應已超過512字節(jié)并已被截斷(依稀好像記得哪里提過這個截斷和UDP 有關,先記著)

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

4

,

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

0-無差錯

1-格式差錯

2-問題在域名服務器上

3-域參照問題

4-查詢類型不支持

5-在管理上被禁止

6~15-保留

標志段說完了,下面是問題數(shù)、資源記錄數(shù)、授權資源記錄數(shù)和額外資源記錄數(shù),這四個字段都是兩字節(jié),分別對應下面的查詢問題、回答、授權和額外信息部分的數(shù)量。一般問題數(shù)都為1,DNS 查詢報文中,資源記錄數(shù)、授權資源記錄數(shù)和額外資源記錄數(shù)都為0.

2.1.3 ID 轉換表結構

typedef struct IDChange

{

unsigned short oldID;

BOOL done;

SOCKADDR_IN client;

} //原有ID //標記是否完成解析 //請求者套接字地址

2.1.4 DNS響應報文answer 域定長部分

struct R_DATA

{

unsigned short name;

unsigned short type;

unsigned short _class;

char ttl[4];

unsigned short data_len;

}

●DNS 響應報文answer 域說明:

5

,

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

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

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

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

2.1.5 DNS響應報文answer 域

struct RES_RECORD

{

struct R_DATA *resource;

unsigned char *rdata; //變長部分,長度由R_DATA中的data_len指明

}

6

,

2.2接口設計

2.2.1獲取域名解析表

函數(shù)名稱:get_table

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

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

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

程序流程圖:

2.2.2獲取用戶請求域名

函數(shù)名稱:get_url

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

出口參數(shù):無

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

7

,

2.2.3在DNS 對照表中查找域名

函數(shù)名稱:is_find

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

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

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

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

程序流程圖:

8

,

2.2.4中繼功能下ID 轉換

函數(shù)名稱:RegisterNewID

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

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

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

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

程序流程圖:

9

,

2.2.5解析響應報文中的IP 地址

函數(shù)名稱:parase

入口參數(shù):buf-DNS 響應報文;recvnum-響應報文對應的請求報文字節(jié)數(shù) 出口參數(shù):無

函數(shù)功能:解析外部DNS 服務器送來的響應報文中的IP 地址

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

程序流程圖:

10

標簽: