首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

DNS、TFTP 與 BOOTP 協定深度解析:網路基礎服務核心機制

     編輯:關於VC++

DNS 域名系統完整架構

授權機制與區域劃分

DNS 採分層授權模型:NIC 分配頂級域,下授權各級域管理機構。區域 為獨立管理的 DNS 子樹,每區域需一主一從名稱伺服器。根伺服器掌握所有頂級域授權伺服器資訊。

DNS 訊息格式詳解

 12 bytes Header | Variable Length Sections
+----------------+----------------+----------------+----------------+
|      ID        |    Flags       |   QDCOUNT      |   ANCOUNT      |
+----------------+----------------+----------------+----------------+
|    NSCOUNT     |    ARCOUNT     |                |                |
+----------------+----------------+----------------+----------------+
|                Questions (QDCOUNT)                |
+---------------------------------------------------+
|              Answers (ANCOUNT)                    |
+---------------------------------------------------+
|            Authority (NSCOUNT)                    |
+---------------------------------------------------+
|            Additional (ARCOUNT)                   |
+---------------------------------------------------+

Flags 欄位位元解析

欄位位數說明
QR10=查詢, 1=回應
Opcode40=標準查詢, 1=反向查詢, 2=伺服器狀態
AA1授權回答
TC1截斷標誌 (UDP >512 bytes)
RD1期望遞迴查詢
RA1支援遞迴查詢
Rcode40=無錯誤, 3=名稱錯誤

資源記錄 (RR) 類型

類型值用途
A1主機名 → IPv4 位址
PTR12IP 位址 → 主機名 (反向查詢)
CNAME5別名 → 規範名稱
MX15郵件交換記錄
NS2授權名稱伺服器
HINFO13主機 CPU/OS 資訊

反向查詢機制

IP 位址反轉並附加 in-addr.arpa:140.252.13.33 → 33.13.252.140.in-addr.arpa。頂級域對應網路號,層層遞減至主機號。

傳輸協定選擇

  • 預設 UDP 埠 53,回應 >512 bytes 時截斷 (TC=1)
  • 截斷時客戶端改用 TCP 重發查詢
  • 區域傳送 (AXFR) 強制使用 TCP

TFTP 簡易檔案傳輸協定

五種封包類型

Opcode名稱格式
1RRQ (讀請求)Opcode | 檔名\0 | 模式\0
2WRQ (寫請求)Opcode | 檔名\0 | 模式\0
3DATA (資料)Opcode | 區塊編號 | 資料 (512 bytes)
4ACK (確認)Opcode | 區塊編號
5ERROR (錯誤)Opcode | 錯誤碼 | 錯誤訊息\0

運作流程與特性

  • 停止等待協定:每個資料區塊必須收到 ACK 才發送下一個
  • 區塊編號:從 1 開始,65535 後歸零
  • 傳輸結束:資料區塊 < 512 bytes 表示最後一包
  • 模式:netascii (文字轉換) 或 octet (二進位)
  • 安全性:無認證機制,僅用於開機載入等受信環境

BOOTP 開機協定

解決 RARP 缺陷

  • RARP 僅回傳 IP 位址,無法提供閘道、開機檔案等資訊
  • RARP 使用連結層廣播,無法跨路由器
  • BOOTP 基於 UDP,支援跨網段透過轉發代理 (Relay Agent)

BOOTP 封包結構

 op(1) | htype(1) | hlen(1) | hops(1) | xid(4) | secs(2) | flags(2)
 ciaddr(4) | yiaddr(4) | siaddr(4) | giaddr(4)
 chaddr(16) | sname(64) | file(128) | vend(64)

關鍵欄位說明

欄位說明
op1=請求, 2=回應
htype/hlen硬體類型/長度 (乙太網: 1/6)
xid交易 ID,客戶端隨機產生,伺服器原樣返回
secs客戶端啟動後秒數,備用伺服器延遲回應用
ciaddr客戶端已知 IP (否則為 0)
yiaddr伺服器指派的客戶端 IP
siaddr/giaddr伺服器 IP / 轉發代理 IP
chaddr客戶端硬體位址 (MAC)
sname/file開機伺服器名稱 / 開機檔案完整路徑
vend廠商擴展區域 (DHCP 使用)

埠號與運作

  • 伺服器埠:67,客戶端埠:68
  • 客戶端廣播請求 (IP: 0.0.0.0 → 255.255.255.255)
  • 通常搭配 TFTP 下載開機檔案
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved