国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

網(wǎng)絡(luò)程序設(shè)計(jì)_DNS協(xié)議模擬實(shí)現(xiàn)

網(wǎng)絡(luò)程序設(shè)計(jì)《網(wǎng)絡(luò)程序設(shè)計(jì)》課 程 設(shè) 計(jì) 報(bào) 告題 目: DNS 協(xié)議模擬實(shí)現(xiàn) 學(xué) 號(hào): 02123010姓 名: 石星宇指導(dǎo)教師: 崔艷鵬 書(shū) ,網(wǎng)絡(luò)

網(wǎng)絡(luò)程序設(shè)計(jì)

《網(wǎng)絡(luò)程序設(shè)計(jì)》

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

題 目: DNS 協(xié)議模擬實(shí)現(xiàn) 學(xué) 號(hào): 02123010

姓 名: 石星宇

指導(dǎo)教師: 崔艷鵬 書(shū)

,

網(wǎng)絡(luò)程序設(shè)計(jì)

目錄

一、DNS 概述

1、簡(jiǎn)介 2、發(fā)展

3、DNS 域名結(jié)構(gòu) 4、DNS 解析器

二、DNS 協(xié)議抓包分析

1、 DNS 解析過(guò)程 2、 DNS 協(xié)議報(bào)文結(jié)構(gòu)

3、 DNS 查詢(xún)報(bào)文中每個(gè)查詢(xún)問(wèn)題的格式 4、 DNS 響應(yīng)報(bào)文中的資源記錄格式 5、 據(jù)包DNS 查詢(xún)(DNS query) 6、 數(shù)據(jù)包 DNS 響應(yīng)(DNS Response)

三、DNS 協(xié)議模擬實(shí)現(xiàn)

1、內(nèi)容

2、數(shù)據(jù)結(jié)構(gòu)說(shuō)明 3、算法流程圖 4、程序 5、運(yùn)行截圖

- 1 -

- 1 - - 1 - - 1 - - 1 -

- 2 -

- 2 - - 2 - - 3 - - 4 - - 4 - - 5 -

- 6 -

- 6 - - 6 - - 7 - - 7 - - 9 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

一、DNS 概述

1、簡(jiǎn)介

DNS 是計(jì)算機(jī)域名系統(tǒng)或域名解析服務(wù)器(Domain Name System 或Domain Name Service) 的縮寫(xiě),它是由解析器以及域名服務(wù)器組成的。域名服務(wù)器是指保存有該網(wǎng)絡(luò)中所有主機(jī)的域名和對(duì)應(yīng)IP 地址,并具有將域名轉(zhuǎn)換為IP 地址,并具有將域名轉(zhuǎn)換為IP 地址功能的服務(wù)器的服務(wù)器。其中域名必須對(duì)應(yīng)一個(gè)IP 地址,而IP 地址不一定有域名。將域名映射為IP 地址的過(guò)程就稱(chēng)為“域名解析”。在Internet 上域名與IP 地址之間是一對(duì)一(或者多對(duì)一)的,域名和IP 地址之間的轉(zhuǎn)換過(guò)程稱(chēng)為域名解析,域名解析需要由專(zhuān)門(mén)的域名解析服務(wù)器來(lái)完成,DNS 就是進(jìn)行域名解析的服務(wù)器。DNS 命名用于Internet 等TCP/IP網(wǎng)絡(luò)中,通過(guò)用戶(hù)友好的名稱(chēng)查找計(jì)算機(jī)和服務(wù)。域名的最終指向是IP 。DNS 是因特網(wǎng)的一項(xiàng)核心服務(wù),作為可以將域名和IP 地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使人更方便的訪問(wèn)互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP 數(shù)串。

2、發(fā)展 DNS 最早于1983年由保羅·莫卡派喬斯(Paul Mockapetris)發(fā)明;原始的技術(shù)規(guī)范在882號(hào)因特網(wǎng)標(biāo)準(zhǔn)草案(RFC 882)中發(fā)布。1987年發(fā)布的第1034和1035號(hào)草案修正了DNS 技術(shù)規(guī)范,并廢除了之前的第882 和883號(hào)草案。在此之后對(duì)因特網(wǎng)標(biāo)準(zhǔn)草案的修改基本上沒(méi)有涉及到DNS 技術(shù)規(guī)范部分的改動(dòng)。

3、DNS 域名結(jié)構(gòu) 通常 Internet 主機(jī)域名的一般結(jié)構(gòu)為:主機(jī)名. 三級(jí)域名. 二級(jí)域名. 頂級(jí)域名。 Internet 的頂級(jí)域名由 Internet 網(wǎng)絡(luò)協(xié)會(huì)域名注冊(cè)查詢(xún)負(fù)責(zé)網(wǎng)絡(luò)地址分配的委員會(huì)進(jìn)行登記和管理,它還為 Internet 的每一臺(tái)主機(jī)分配唯一的 IP 地址。全世界現(xiàn)有三個(gè)大的網(wǎng)絡(luò)信息中心: 位于美國(guó)的 Inter-NIC ,負(fù)責(zé)美國(guó)及其他地區(qū); 位于荷蘭的RIPE-NIC ,負(fù)責(zé)歐洲地區(qū);位于日本的APNIC ,負(fù)責(zé)亞太地區(qū)。

4、DNS 解析器

解析器,或另一臺(tái)DNS 服務(wù)器遞歸代表的情況下,域名解析器,協(xié)商使用遞歸服務(wù),使用查詢(xún)頭位。

解析通常需要遍歷多個(gè)名稱(chēng)服務(wù)器,找到所需要的信息。然而,一些解析器的功能更簡(jiǎn)單地只用一個(gè)名稱(chēng)服務(wù)器進(jìn)行通信。這些簡(jiǎn)單的解析器依賴(lài)于一個(gè)遞歸名稱(chēng)服務(wù)器(稱(chēng)為“存根解析器”),為他們尋找信息的執(zhí)行工作。

- 1 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

二、DNS 協(xié)議抓包分析

1、 DNS 解析過(guò)程

1.1當(dāng)客戶(hù)機(jī)提出查詢(xún)請(qǐng)求時(shí),首先在本地計(jì)算機(jī)的緩存中查找,如果在本地?zé)o法查詢(xún)信息,則將查詢(xún)請(qǐng)求發(fā)給DNS 服務(wù)器

1.2首先客戶(hù)機(jī)將域名查詢(xún)請(qǐng)求發(fā)送到本地DNS 服務(wù)器,當(dāng)本地DNS 服務(wù)器接到查詢(xún)后,首先在該服務(wù)器管理的區(qū)域的記錄中查找,如果找到該記錄,則進(jìn)行此記錄進(jìn)行解析,如果沒(méi)有區(qū)域信息可以滿(mǎn)足查詢(xún)要求,服務(wù)器在本地緩存中查找

1.3如果本地服務(wù)器不能在本地找到客戶(hù)機(jī)查詢(xún)的信息,將客戶(hù)機(jī)請(qǐng)求發(fā)送到根域名DNS 服務(wù)器

1.4根域名服務(wù)器負(fù)責(zé)解析客戶(hù)機(jī)請(qǐng)求的根域名部分,它將包含下一級(jí)域名信息的DNS 服務(wù)器地址地址返回給客戶(hù)機(jī)的DNS 服務(wù)器地址

1.5客戶(hù)機(jī)的DNS 服務(wù)器利用根域名服務(wù)器解析的地址訪問(wèn)下一級(jí)DNS 服務(wù)器,得到再下一級(jí)域名的DNS 服務(wù)器地址

1.6按照上述遞歸方法逐級(jí)接近查詢(xún)目標(biāo),最后在有目標(biāo)域名的DNS 服務(wù)器上找到相應(yīng)IP 地址信息

1.7客戶(hù)機(jī)的本地DNS 服務(wù)器將遞歸查詢(xún)結(jié)構(gòu)返回客戶(hù)機(jī)

1.8客戶(hù)機(jī)利用從本地DNS 服務(wù)器查詢(xún)得到的IP 訪問(wèn)目標(biāo)主機(jī),就完成了一個(gè)解析過(guò)程

1.9同時(shí)客戶(hù)機(jī)本地DNS 服務(wù)器更新其緩存表,客戶(hù)機(jī)也更新期緩存表,方便以后查詢(xún)

2、 DNS 協(xié)議報(bào)文結(jié)構(gòu)

該報(bào)文是由12字節(jié)的首部和4個(gè)長(zhǎng)度可變的字節(jié)組成

標(biāo)識(shí)字段:占用兩個(gè)字節(jié),由客戶(hù)程序設(shè)置,并由服務(wù)器返回結(jié)果

- 2 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

Opcode :4bits 字段,通常值為0(標(biāo)準(zhǔn)查詢(xún)),其他值為1(反向查詢(xún))和2(服務(wù)器狀態(tài)請(qǐng)求)

AA :1bits 標(biāo)志表示授權(quán)回答(authoritive answer ), 該名字服務(wù)器是授權(quán)于該領(lǐng)域的

TC :1bits 字段,表示可截(truncated ),使用UDP 時(shí),它表示當(dāng)應(yīng)答的總長(zhǎng)度超過(guò)512字節(jié)時(shí),只返回前512個(gè)字節(jié)

RD :1bits 字段,表示期望遞歸,該比特能在一個(gè)查詢(xún)中設(shè)置,并在一個(gè)響應(yīng)中返回,這個(gè)標(biāo)志告訴名字服務(wù)器必須處理這個(gè)查詢(xún),也稱(chēng)為一個(gè)遞歸查詢(xún),如果該位為0,且被請(qǐng)求的名字服務(wù)器沒(méi)有一個(gè)授權(quán)回答,它就返回一個(gè)能解答該查詢(xún)的其他名字服務(wù)器列表,這稱(chēng)為迭代查詢(xún)(期望遞歸)

RA :1bits 字段,表示可用遞歸,如果名字服務(wù)器支持遞歸查詢(xún),則在響應(yīng)中將該bit 置為1(可用遞歸)

zero :必須為0

rcode :是一個(gè)4bit 的返回碼字段,通常值為0(沒(méi)有差錯(cuò))和3(名字差錯(cuò)),名字差錯(cuò)只有從一個(gè)授權(quán)名字服務(wù)器上返回,它表示在查詢(xún)中指定的域名不存在。

隨后的4個(gè)bit 字段說(shuō)明最后4個(gè)變長(zhǎng)字段中包含的條目數(shù),對(duì)于查詢(xún)報(bào)文,問(wèn)題數(shù)通常是1,其他三項(xiàng)為0,類(lèi)似的,對(duì)于應(yīng)答報(bào)文,回答數(shù)至少是1,剩余兩項(xiàng)可以使0或非0

3、 DNS 查詢(xún)報(bào)文中每個(gè)查詢(xún)問(wèn)題的格式

查詢(xún)類(lèi):通常值為1,表示是互聯(lián)網(wǎng)的地址,也就是IP 協(xié)議族的地址

查詢(xún)類(lèi)型:有很多種查詢(xún)類(lèi)型,一般最常用的查詢(xún)類(lèi)型是A 類(lèi)型(表示查找域名對(duì)應(yīng)的IP 地址)和PTR 類(lèi)型(表示查找IP 地址對(duì)應(yīng)的域名)

查詢(xún)名為要查找的名字,它由一個(gè)或者多個(gè)標(biāo)示符序列組成,每個(gè)標(biāo)示符已首字符字節(jié)數(shù)的計(jì)數(shù)值來(lái)說(shuō)明該表示符長(zhǎng)度,每個(gè)名字以0結(jié)束,計(jì)數(shù)字節(jié)數(shù)必須是0~63之間,該字段無(wú)需填充字節(jié),如:gemine.tuc.noao.edu

- 3 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

4、 DNS 響應(yīng)報(bào)文中的資源記錄格式

數(shù)域名:記錄中資源數(shù)據(jù)對(duì)應(yīng)的名字,它的格式和查詢(xún)名字段格式相同 類(lèi)型:類(lèi)型說(shuō)明RR 的類(lèi)型碼,類(lèi)通常為1,指Internet 數(shù)據(jù)

生存時(shí)間:客戶(hù)程序保存該資源記錄的秒數(shù)

資源數(shù)據(jù)長(zhǎng)度:說(shuō)明后面資源數(shù)據(jù)的數(shù)量,該數(shù)據(jù)的格式依賴(lài)于類(lèi)型字段的值,對(duì)于類(lèi)1(A 記錄)記錄數(shù)據(jù)室4字節(jié)的IP 地址

資源數(shù)據(jù):服務(wù)器端返回給客戶(hù)端的記錄數(shù)據(jù)

5、 據(jù)包DNS 查詢(xún)(DNS query)

- 4 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

6、 數(shù)據(jù)包 DNS 響應(yīng)(DNS Response)

- 5 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

三、DNS 協(xié)議模擬實(shí)現(xiàn)

1、內(nèi)容

設(shè)計(jì)一個(gè)簡(jiǎn)單的Winsock 網(wǎng)絡(luò)程序,模擬UDP 數(shù)據(jù)報(bào),加深對(duì)DNS 作用的理解。按照以下步驟完成練習(xí):

1、啟動(dòng) Visual C ,進(jìn)入集成開(kāi)發(fā)環(huán)境;

2、建立一個(gè)“Win32 Console Application"類(lèi)型的工程,工程名自擬;

3、在該工程下,新建一個(gè)源程序文件,即選擇“C SourceFile",文件名自擬;

4、輸入源程序

5、編譯,連接并運(yùn)行程序

6、觀察程序運(yùn)行的結(jié)果,體會(huì)程序中幾個(gè)重要函數(shù)的作用

2、數(shù)據(jù)結(jié)構(gòu)說(shuō)明

WSADATA wsaData;//初始化 windows sockets API//

char hostname[256]; //獲得本主機(jī)名//

int res; //錯(cuò)誤處理

sockaddr_in sa; //打印主機(jī)每一個(gè)網(wǎng)卡的 IP 地址//

char hostaddr[50]; //服務(wù)器IP 地址

- 6 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

3、算法流程圖

4、程序

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

int main()

{

WORD wVersionRequested=MAKEWORD(1,1);

WSADATA wsaData;//初始化 windows sockets API// if(WSAStartup(wVersionRequested,&wsaData)){

printf("WSAStartup failedsn",WSAGetLastError()); return -1;

}

char hostname[256];//獲得本主機(jī)名//

int res=gethostname(hostname,sizeof(hostname)); if(res!=0){//錯(cuò)誤處理//

- 7 -

,

網(wǎng)絡(luò)程序設(shè)計(jì)

printf("Error:un",WSAGetLastError());

return -1;

}

printf("本主機(jī)名為:sn",hostname); //打印本主機(jī)名字//

printf("請(qǐng)輸入一個(gè)主機(jī)域名:"); //輸入一個(gè)主機(jī)的域名//

scanf("s",hostname);//利用主機(jī)名獲得主機(jī)的地址//

hostent* pHostent=gethostbyname(hostname);

if(

pHostent==NULL){//錯(cuò)誤處理//

printf("Error:un",WSAGetLastError());

return -1;

}

//解析返回的主機(jī)地址信息:別名、地址類(lèi)型、地址長(zhǎng)度,并打印//

hostent& he=*pHostent;

printf("name=snaliase=snaddrtype=dnlength=dn",he.h_name,he.h_aliases,he.h_addrtype,he.h_length);

sockaddr_in sa;//打印主機(jī)每一個(gè)網(wǎng)卡的 IP 地址//

for (int nAdapter=0; he.h_addr_list[nAdapter]; nAdapter )

{

標(biāo)簽: