DNS(域名系統) 是什么

域名系統(英文:Domain?Name?System,縮寫:DNS)是互聯網的一項服務。

它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。

DNS使用TCP和UDP端口53。當前,對于每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。


開始時,域名的字符僅限于ASCII字符的一個子集。2008年,ICANN通過一項決議,允許使用其它語言作為互聯網頂級域名的字符。使用基于Punycode碼的IDNA系統,可以將Unicode字符串映射為有效的DNS字符集。因此,諸如“x.中國” 等這樣的域名可以在地址欄直接輸入,而不需要安裝插件。但是,由于英語的廣泛使用,使用其他語言字符作為域名會產生多種問題,例如難以輸入,難以在國際推廣等。



歷史

DNS最早于1983年由保羅·莫卡派喬斯(Paul Mockapetris)發明;原始的技術規范在882號因特網標準草案中發布。1987年發布的第1034和1035號草案修正了DNS技術規范,并廢除了之前的第882和883號草案。在此之后對因特網標準草案的修改基本上沒有涉及到DNS技術規范部分的改動。

早期的域名必須以英文句號“.”結尾,當用戶訪問www.wikipedia.org的HTTP服務時必須在地址欄中輸入:http://www.wikipedia.org.,這樣DNS才能夠進行域名解析。如今DNS服務器已經可以自動補上結尾的句號。


記錄類型

DNS系統中,常見的資源記錄類型有:

  • 主機記錄(A記錄):RFC 1035定義,A記錄是用于名稱解析的重要記錄,它將特定的主機名映射到對應主機的IP地址上。
  • 別名記錄(CNAME記錄): RFC 1035定義,CNAME記錄用于將某個別名指向到某個A記錄上,這樣就不需要再為某個新名字另外創建一條新的A記錄。
  • IPv6主機記錄(AAAA記錄): RFC 3596定義,與A記錄對應,用于將特定的主機名映射到一個主機的IPv6地址。
  • 服務位置記錄(SRV記錄): RFC 2782定義,用于定義提供特定服務的服務器的位置,如主機(hostname),端口(port number)等。
  • NAPTR記錄:RFC 3403定義,它提供了正則表達式方式去映射一個域名。NAPTR記錄非常著名的一個應用是用于ENUM查詢。


技術實現

概述

DNS通過允許一個名稱服務器把他的一部分名稱服務(眾所周知的zone)“委托”給子服務器而實現了一種層次結構的名稱空間。此外,DNS還提供了一些額外的信息,例如系統別名、聯系信息以及哪一個主機正在充當系統組或域的郵件樞紐。

任何一個使用IP的計算機網絡可以使用DNS來實現他自己的私有名稱系統。盡管如此,當提到在公共的Internet?DNS系統上實現的域名時,術語“域名”是最常使用的。

這是基于504個全球范圍的“根域名服務器”(分成13組,分別編號為A至M)[2]。從這504個根服務器開始,余下的Internet DNS命名空間被委托給其他的DNS服務器,這些服務器提供DNS名稱空間中的特定部分。


軟件

DNS系統是由各式各樣的DNS軟件所驅動的,例如:

  • BIND(Berkeley Internet Name Domain),使用最廣的DNS軟件
  • DJBDNS(Dan J Bernstein's DNS implementation)
  • MaraDNS
  • Name Server Daemon(Name Server Daemon)
  • PowerDNS
  • Dnsmasq


國際化域名

Punycode是一個根據RFC 3492標準而制定的編碼系統,主要用于把域名從地方語言所采用的Unicode編碼轉換成為可用于DNS系統的編碼。而該編碼是根據域名相異字表(由IANA制定),Punycode可以防止所謂的IDN欺騙。


域名解析

舉一個例子,zh.wikipedia.org作為一個域名就和IP地址208.80.154.225相對應。DNS就像是一個自動的電話號碼簿,我們可以直接撥打wikipedia的名字來代替電話號碼(IP地址)。DNS在我們直接調用網站的名字以后就會將像zh.wikipedia.org一樣便于人類使用的名字轉化成像208.80.154.225一樣便于機器識別的IP地址。

DNS查詢有兩種方式:遞歸迭代。DNS客戶端設置使用的DNS服務器一般都是遞歸服務器,它負責全權處理客戶端的DNS查詢請求,直到返回最終結果。而DNS服務器之間一般采用迭代查詢方式。


以查詢zh.wikipedia.org為例:

  • 客戶端發送查詢報文"query zh.wikipedia.org"至DNS服務器,DNS服務器首先檢查自身緩存,如果存在記錄則直接返回結果。
  • 如果記錄老化或不存在,則
  1. DNS服務器向根域名服務器發送查詢報文"query zh.wikipedia.org",根域名服務器返回.org域的權威域名服務器地址,這一級首先會返回的是頂級域名的權威域名服務器。
  2. DNS服務器向.org域的權威域名服務器發送查詢報文"query zh.wikipedia.org",得到.wikipedia.org域的權威域名服務器地址。
  3. DNS服務器向.wikipedia.org域的權威域名服務器發送查詢報文"query zh.wikipedia.org",得到主機zh的A記錄,存入自身緩存并返回給客戶端。


WHOIS(域名數據庫查詢)

一個域名的所有者可以通過查詢WHOIS數據庫[3]而被找到;對于大多數根域名服務器,基本的WHOIS由ICANN維護,而WHOIS的細節則由控制那個域的域注冊機構維護。

對于240多個國家代碼頂級域名(ccTLDs),通常由該域名權威注冊機構負責維護WHOIS。例如中國互聯網絡信息中心(China Internet Network Information Center)負責.CN域名的WHOIS維護,香港互聯網注冊管理有限公司(Hong Kong Internet Registration Corporation Limited)負責.HK域名的WHOIS維護,臺灣網絡信息中心(Taiwan Network Information Center)負責.TW域名的WHOIS維護。


其他

此外,一些黑客通過偽造DNS服務器將用戶引向錯誤網站,以達到竊取用戶隱私信息的目的。這種DNS服務器大約有68000臺[4]



轉自**百科。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449690.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《The Art of Readable Code》學習筆記(一)

放寒假回家有些頹廢,就是不想看書。但是已經大三了,春節過后就要找實習了。哎,快樂的大學生活終于要過去了。 先從簡單的書看起吧!在圖書館借了本《The Art of Readable Code》,就是教你咋寫好優雅的代碼的&#xff0c…

文件基本處理

1 打開文件,將文件句柄賦值給一個變量 2 拿句柄對文件進行操作 3 關閉文件 將一個文件第一行寫道另外一個文件 f open("test","r",encoding"utf-8") # open找的是系統的編碼 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream詳細用法

ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間; 在C中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的文件I/O,stream這個類有兩個重要的運算符&…

如何將JAR包發布到Maven中央倉庫?

將jar包發布到Maven中央倉庫(Maven Central Repository)&#xff0c;這樣所有的Java開發者都可以使用Maven直接導入依賴&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL與HTTPS

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 關于加密 在解釋SSH、SSL與HTTPS協議之前我先介紹一下非對稱加密協議。在1976年以前&#xff0c;所有的加密都采用對稱加密&#xff0c…

北向資金運作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#獲取交易日歷 import datetime def get_cal_date(start,end):dates ak.to…

網絡性能測試工具iperf詳細使用圖文教程【轉載】

原文&#xff1a;https://www.cnblogs.com/yingsong/p/5682080.html 轉載于:https://www.cnblogs.com/luo30zhao/p/10512042.html

代碼審查:程序員內煉之道

摘要&#xff1a;“關注并弄清楚橋梁修建細節&#xff0c;否則你建起來的橋梁有可能坍塌。”代碼審查更重要的是一種技術分享或者代碼共享。程序員如何提升自我修煉之道&#xff0c;歡迎來支招。 代碼審查更重要的是一種技術分享或者代碼共享。在審查過程中&#xff0c;通過被…

扎實的基礎是成功的法寶

轉載鏈接&#xff1a;https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基礎是好成績的根本,無論做任何事情,基本功的訓練是成功的前提:“還沒有學會走,就想學跑,那不行,肯定會摔跟頭。”這是成功人士的經驗之談。要建成高樓大廈,地基必須打好。…

發送qq郵件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 寫成了一個通用的函數接口&#xff0c;想直接用的話&#xff0c;把參數…

排序代碼(python,c++) 及 基本算法復雜度

0.導語 本節為手撕代碼系列之第一彈&#xff0c;主要來手撕排序算法&#xff0c;主要包括以下幾大排序算法&#xff1a; 直接插入排序 冒泡排序 選擇排序 快速排序 希爾排序 堆排序 歸并排序 1.直接插入排序 【算法思想】 每一步將一個待排序的記錄&#xff0c;插入到前面…

TCP/IP四層模型與OSI參考模型

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 TCP/IP四層模型&#xff1a; 1.鏈路層&#xff08;數據鏈路層/網絡接口層&#xff09;&#xff1a;包括操作系統中的設備驅動程序、計算…

Metal日記:使用步驟指南

本文參考資料&#xff1a; juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal處理邏輯 無論是CoreImage、GPUImage框架&…

還駕馭不了4核? 別人已模擬出百萬核心上的并行

摘要&#xff1a;不管是臺式機還是筆記本&#xff0c;四核雙核都已經不是新鮮的事了。計算機領域的你可能已經認識到了給電腦選配4核的處理器完全是一種浪費&#xff0c;因為大多數的程序都不支持多核心的并行處理。然而斯坦福的計算機科學家最近公布&#xff0c;他們已經模擬出…

docker安裝并運行ubuntu

拉取鏡像 docker pull dorowu/ubuntu-desktop-lxde-vnc 運行容器&#xff1a; docker run -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc 之后就可以http://localhost:6080/

Django內置權限擴展案例

當Django的內置權限無法滿足需求的時候就自己擴展吧~ 背景介紹 overmind項目使用了Django內置的權限系統&#xff0c;Django內置權限系統基于model層做控制&#xff0c;新的model創建后會默認新建三個權限&#xff0c;分別為&#xff1a;add、change、delete&#xff0c;如果給…

Java 從入門到高級學習路線

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Java 從入門到高級學習路線《一》1.Jvm 部分Jvm 內存模型、Jvm 內存結構、Jvm 參數調優、Java 垃圾回收《二》Java 基礎部分1.必須會使用…

Flutter Mac iOS 環境配置

官方文檔&#xff1a;flutter.io/docs/get-st… 1.需要的命令行工具 bash curl git 2.x mkdir rm unzip which 2.SDK下載地址 flutter_macos_v1.0.0-stable.zip storage.googleapis.com/flutter_inf… 3.解壓Flutter SDK cd ~/Flutter/SDK $ unzip ~/Downloads/flutter_macos_v…

多線程研究1

單線程&#xff1a; from urllib.request import urlretrieve import time import random starttime.time() fopen(E:\Python\py\web\hh.txt,r)#打開存放URL的文件 af.readlines() f.close() for i in a:brandom.randint(0,30)urlretrieve(i,%d.png%b) endtime.time() print(…

android viewpage預加載和懶加載問題

1、本人理解懶加載和預加載問題某種情況下可以歸結為一類問題&#xff0c;下面我就說一下我遇到的預加載問題和懶加載問題及解決的相應方法&#xff1a; - [1 ] 預加載問題 描述&#xff1a;我用到了三個fragment、viewpage及tablayout實現點擊切換、滑動切換。 …