程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> TCP/IP學習筆記(5)

TCP/IP學習筆記(5)

編輯:關於VC++

一、DNS系統

1、DNS的授權:

網絡信息中心NIC負責分配頂極域和委派其他指定地區域的授權機構。一個獨立管理的DNS子樹稱為一個區域,許多二極域將他們的子域劃分為更小的區域。當一個系統加入到一個區域中時,該區域的DNS管理者為該新系統申請一個域名和一個IP地址,並將他們加入到名字服務器的數據庫中。

一個名字服務器負責一個或多個區域,一個區域的管理者必須為該區域提供一個主名字服務器和至少一個輔助名字服務器。

每個主名字服務器都必須知道根名字服務器的IP地址,根服務器必須知道所有二極域中每個授權名字服務器的名字和IP地址。

2、DNS報文格式:由12個字節首部和4個長度可變的字段組成。

標識 標志 問題數 資源記錄數 授權資源記錄數 額外資源記錄數 查詢問題 問答(資源記錄數可變) 授權(資源記錄數可變) 額外信息(資源記錄數可變)

◆ 標識字段由客戶程序設置並由路由器返回結果。客戶程序通過它來確定響應與查詢是否匹配。

◆ 標志字段被劃分為若干子字段:

QR opcode AA TC RD RA (zero) rcode

QR-1位,0表示查詢,1表示響應報文。

Opcode-4位,0表示標准查詢,1表示反向查詢,2表示服務器狀態請求。

AA-1位,表示授權回答。

TC-1位,表示時可截斷的,使用UDP時,它表示應當的總長度超過512字節時,只返回前512個字節。

RD-1位,表示期望遞歸。該位能在一個查詢中設置,並在響應中返回。這個標志告訴名字服務器必須處理這個查詢。如果該位為0,且被請求的名字服務器沒有一個授權回答,它就返回一個能解答該查詢的其他名字服務器列表,這稱為疊代查詢。

RA-1位,表示可用遞歸。如果名字服務器支持遞歸查詢,則在響應中將該位置為1。

Rcode-4位返回碼,0表示沒有差錯,3表示名字差錯。名字差錯只有從一個授權服務器上返回,它表示在查詢中指定的域名不存在。

隨後的4個16位的字段說明最後4個變長字段中包含的條目數。對於查詢報文,問題數通常是1,而其他3項均為0。對於應答報文,問答數至少為1,剩下的2項可以是0或非0。

3、DNS查詢報文中的問題部分:

格式如下,通常只有一個問題。

查詢名 查詢類型 查詢類

查詢名是要查找的名字,它是一個或多個標識符的序列。每個標識符以首字節的計數值來說明隨後標識符的字節長度,每個名字以最後字節為0結束,長度為0的標識符是根標識符。計數字節的值必須為0-63,因為標識符的最大長度僅為63。該字段無需以整32為為邊界,即無需填充字節。

舉例:gemini.tuc.noao.edu的存儲:

6gemini3tuc4noao3edu0

每個問題有一個查詢類型,而每個響應(資源記錄)也一個類型。最常見的查詢類型是A類型(值為1),表示期望獲得查詢名的IP地址,一個PTR查詢(值為12)則請求獲得一個IP地址對應的域名。

查詢類一般是1,指互聯網地址。

4、DNS響應報文中的資源記錄部分:

DNS報文中的最後三個字段,回答字段、授權字段和附加信息字段,均采用一種稱為資源記錄(RR)的相同格式。RR格式如下:

域名 類型 類 生存時間 資源數據長度   資源數據

域名是記錄中資源數據對應的名字,它的格式和前面的查詢名字段格式一樣。

類型說明RR的類型碼,它和前面的查詢類型值是一樣的。通常為1,表示互聯網數據。

生存時間是客戶程序保留該資源記錄的秒數,資源記錄通常的生存時間為2天。

資源數據長度說明資源數據的數量,該數據的格式依賴域類型字段的值,對於類型A資源數據是4字節的IP地址。

5、指針查詢:給定IP地址,返回與該地址對應的域名。

例如頂極域名edu和它下面的noao域,對應的是網絡號為140.252的B類網絡。noao.edu的下一級必須是該IP地址的第一個字節(這裡是140),再下一級為該IP地址的下一個字節(這裡是252)。由於DNS名字是由DNS樹的底部逐步向上書寫的。這意味者IP地址為140.252.13.33的主機,它的DNS名字是33.13.252.140.noao.edu。

6、主機名檢查:

當IP數據報到達一個作為服務器的主機時,無論時UDP數據報還是TCP連接請求,服務器進程所能獲得的是客戶的IP地址和端口號,某些服務器需要客戶的IP地址來獲得在DNS中的指針記錄。

7、資源記錄:

IP地址查詢為A類型,指針查詢為類型PTR。名字服務器返回的資源記錄:回答RR、授權RR和附加信息RR。

(1) A-一個A記錄定義了一個IP地址。

(2) PTR-指針記錄用於指針查詢,IP地址被看作是noao.edu域下的一個域名。

(3) CNAME-表示規范名字,用來表示一個域名,而有規范名字的域名通常叫做別名。某些FTP服務器使用它向其他的系統提供一個易於記憶的別名。

(4) HINFO-表示主機信息,包括說明主機CPU和操作系統的兩個字符串。

(5) MX-郵件交換記錄。功能:如果有郵件要發往[email protected],就將郵件發送到relay1.uu.net。

(6) NS-名字服務器記錄。它說明一個域的授權名字服務器,它由域名表示。

8、高速緩存:

為了減少Internet上的DNS通信量,所有的名字服務器均使用高速緩存。

9、用UDP還是TCP:

DNS均支持UDP和TCP,端口號都是53。當查詢請求響應的長度超過了512個字節,而僅返回前512個字節,在這種情況下,名字解析器通常使用TCP重發原來的查詢請求。既然DNS主要使用UDP,因此好的重傳和超時程序就很重要了。

二、TFTP:簡單文件傳送協議

1、協議

開始工作時,TFTP的客戶域服務器交換信息,客戶發送一個讀請求或寫請求給服務器。在一個無盤系統進行系統引導的正常情況下,第一個請求時讀請求(RRQ)。

TFTP報文格式如下:(5種)

IP首部 UDP首部 操作碼1或2 文件名 0 模式 0

操作碼3 塊編號 數據

操作碼4 塊編號

操作碼5 差錯碼 差錯信息 0

TFTP報文的頭兩個字節表示操作碼。對於讀請求和寫請求(WRQ),文件名字段說明客戶要讀寫的位於服務器上的文件,這個文件字段以0字節作為結束。模式字段是一個ASCII碼串netascii或octet,同樣以0字節結束。Netascii表示數據以成行的ASCII碼字符組成,以兩個字節回車換行作為結束符。這兩個行結束字符在這種格式和本地主機使用的行定界符之間進行轉換。Octet則將數據看作8位一組的字節六而不作任何解釋。

每個數據分組包含一個塊編號字段,它以後要在確認分組中使用。以讀一個文件為例,TFTP客戶需要發送一個讀請求說明要讀的文件名和文件模式。如果這個能被這個客戶讀取,TFTP服務器就返回一個塊編號為1的數據分組,TFTP服務器又發送一個塊編號為1的ACK。如此重復知道這個文件傳送完。除了最後一個數據分組可含有不足512字節的數據,其他每個數據分組均含有512個字節的數據。當TFTP客戶收到一個不足512字節的數據分組,就知道它收到了最後一個數據分組。

在寫請求的情況下,TFTP客戶發送WRQ指明文件名和模式。如果該文件能被該客戶寫,TFTP服務器就返回塊編號為0的ACK包,該客戶就將文件的頭512字節以塊編號為1發出。服務器則返回塊編號為1的ACK。

這種協議的數據傳輸稱為停止等待協議。

最後一種TFTP報文類型是差錯報文。它用於服務器不能處理讀請求或寫請求的情況。在文件傳輸過程中的讀或寫差錯也會導致傳送這種報文,接著停止傳輸。

既TFTP使用不可靠的UDP,TFTP就必須處理分組丟失和分組重復。

2、安全性

由於TFTP設計用於系統引導過程,它不可能提供用戶名和口令。

三、BOOTP:引導程序協議

先講一下RARP的不足:(1)IP地址是唯一的返回結果(2)由於RARP使用鏈路層廣播,因此RARP請求不會被路由器轉發。

BOOTP使用UDP,且通常需要與TFTP協同工作。

1、分組格式

IP首部 UDP首部 BOOTP請求/應答

操作碼(1,2) 硬件類型1 硬件地址長度6 跳數 事務標識 秒數 未使用 客戶IP地址 你的IP地址 服務器IP地址 網關IP地址 客戶主機硬件地址(16字節) 服務器主機名(64字節) 引導文件名(128字節) 特定廠商信息(64字節)

操作碼:1表示請求,2表示應答。

硬件類型:1表示以太網。

跳數:客戶設置為1,但也能被代理服務器設置。

事務標識:客戶設置並由服務器返回的32位整數,客戶用它對請求和應答進行匹配。對每個請求,客戶應將它設置位一個隨機數。

秒數:客戶設置為一個時間制服務求能夠看到這個時間值,備用服務器在等待時間超過這個時間值才會響應客戶的請求,這意味著主服務器沒有啟動。

IP地址:如果客戶已經知道自身的IP地址就寫入,否則將該字段設置為0。對於後面的情況,服務器用該客戶的IP地址寫入“你的IP地址”字段。服務器字段由服務器填寫,如果使用了代理服務器,則該代理服務器就填寫“網關IP地址”字段。

客戶硬件地址:客戶必須設置,盡管以太網數據幀頭部和UDP首部都包括這個值。

服務器主機名:為一個空值中止符,由服務器填寫,服務器還將在“引導文件名”字段填寫包括用於系統引導的文件名及其所在位置的路徑全名。

特定廠商區域:用於BOOTP擴展。

當一個客戶使用BOOTP進行系統引導時,通常是采用鏈路層廣播,IP首部中的IP地址為255.255.255.255,源地址通常是0.0.0.0,因為此時客戶還不知道自身的IP地址。

2、端口號:

BOOTP服務器端口號是67,BOOTP客戶為68。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved