1. 程式人生 > >根據客戶端IP地址,通過DNS解析合適的伺服器IP

根據客戶端IP地址,通過DNS解析合適的伺服器IP

DNS基本概念:

DNS是屬於應用層的協議,因為網路通訊是要採用IP地址來進行通訊的,但人類對於這些IP地址不容易記住。於是乎就使用方便記住的域名來進行訪問網站。而DNS就是進行域名與IP地址轉換的。可以稱為網路世界的地址薄。

域名系統的概念:

域名系統(Domain Name System縮寫DNS,Domain Name被譯為域名)是因特網的一項核心服務,它作為可以將域名IP地址相互對映的一個分散式資料庫,能夠使人更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。

域名的分配和管理:

域名由因特網域名與地址管理機構(ICANN,Internet Corporation for Assigned Names and Numbers)管理,這是為承擔域名系統管理、IP地址分配、協議引數配置,以及主伺服器系統管理等職能而設立的非盈利機構。

頂級域名:

1  國家地區頂級域名:中國(cn) 日本(jp) 

國際頂級域名: 工商企業的 .com,表示網路提供商的 .net,表示非盈利組織的 .org等

新頂級域名(New gTLD): 用的.xyz、代表“高階”的.top、代表“紅色”的.red、代表“人”的.men等一千多種

二級域名:域名的一條記錄,類似與www.alidiedie.com是頂級域名,*.alidiedie.com的域名全部稱作是alidiedie.com的二級域名

類推下去可以獲得三級域名,四級域名。。。。

DNS解析流程:

1 假設你從瀏覽器訪問www.baidu.com的網站,首先DNS會從本地的HOSTS檔案看是否快取裡該對映,如果有,則直接返回對應的IP地址。

2 如果第一步本地的HOSTS檔案沒有快取,則訪問本地DNS(全世界只有13臺根域名伺服器好像是錯誤的)本地DNS伺服器,如果你在網路連線裡面設定了固定的DNS伺服器(如google的8.8.8.8)則為該設定的伺服器地址,如果自動分配,則是ISP運營商分配的地址。如果設定了轉發模式則向上一級DNS伺服器請求,如果沒有則繼續往下走

3 繼續從根域名伺服器當中找到一臺請求,然後根域名伺服器返回了負責管理該(這裡是.com)頂級域名的權威伺服器.

4 請求權威伺服器,該權威伺服器返回對應域名的伺服器IP(baidu.com)

5 請求(baidu.com)的伺服器,返回對應域名的IP地址,但百度的有關cname,處理有點不同

6 向根域名伺服器請求cname

7 向.com權威伺服器請求cname

8 向shifen.com請求

9 向a.shifen.com域請求

10 拿到www.a.shifen.com的IP

11 localdns返回本機www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP

DNS存在的問題:

1 域名快取問題:因為有快取,並不會每次都從權威伺服器獲取IP地址,直接從本地返回了,那麼假設伺服器換地址了,但是快取沒更新,訪問就出錯了。運營商因為節省成本會快取靜態資源,那麼當你也沒更新的時候,很多老使用者因為快取的關係,還是繼續訪問的老的頁面。本地的快取也可能會導致全域性負載均衡失效,比如我先在深圳訪問了某個網站,但我跑到上海的時候,因為本地快取的問題,返回的可能還是廣東的伺服器IP地址,就不能訪問離客戶最近的伺服器地址。

2 域名轉發問題:假設我是A運營商的客戶,那麼訪問網站的時候,向訪問A運營商的DNS伺服器發起請求,如果A去權威DNS查詢的話,權威伺服器會返回離A運營商近的IP地址,那麼客戶訪問就快了。但是如果A運營商只是轉發,把請求轉發給你B,那麼權威伺服器就會返回離B最近的伺服器地址,客戶訪問就慢了。

3 出口NAT問題:很多機房會配置網路地址轉換,對應訪問來說是沒有問題的,但是由於地址轉換了,權威伺服器不能判斷是哪個運營商,誤判運營商,就會導致跨運營商的訪問。

4 域名更新問題:權威DNS伺服器解析變更的時候,由於各個地區,各個運營商是獨立部署伺服器的,解析結果在全網生效的時間非常長,但是比如 雙機房部署的時候,跨機房的負載均衡和容災多使用DNS來做,這就出問題了。

5 解析延遲問題:DNS查詢是遞迴查詢,可能需要遍歷多個DNS伺服器,會造成很大的延遲問題。

傳統的DNS由於這些問題,所以出現了採用HTTP請求獲得IP地址的方式替換傳統的基於UDP和TCP的DNS查詢,一條HTTP請求就將IP地址請求下來。叫做HTTPDNS。

HTTPDNS的伺服器一般採用叢集分散式部署,因為必須要做到高可用。在具體實現的時候因為要加快訪問速度,要設計伺服器和客戶端的快取策略。因為解析是全部掌握在自己的手上,可以根據自己的業務需求設計快取策略(過期時間,更新時間)。同時,手機客戶端是知道手機現在是在哪個運營商,哪個地址的,所以我們可以根據客戶端的資訊,在HTTPDNS伺服器上通過採集到的資訊,考慮錯誤率,請求時間,伺服器壓力,網路狀況等多個情況,綜合考慮選擇一個客戶訪問最快的節點返回給客戶端。客戶端得到該IP地址後就可以進行訪問了。當然傳統的DNS還是要保留的,當自己的HTTPDNS伺服器出問題的時候,慢總比不能訪問強。

相關推薦

根據客戶IP地址通過DNS解析合適伺服器IP

DNS基本概念: DNS是屬於應用層的協議,因為網路通訊是要採用IP地址來進行通訊的,但人類對於這些IP地址不容易記住。於是乎就使用方便記住的域名來進行訪問網站。而DNS就是進行域名與IP地址轉換的。可以稱為網路世界的地址薄。 域名系統的概念: 域名系統(Domain

linux上修改IP地址通過配置檔案

首先,我們來看看ip地址。 ifconfig 小編這裡的是eth0,可以看到詳細的網絡卡資訊,包括網絡卡型別(乙太網網絡卡),硬體地址,IP地址,IP廣播地址,子網掩碼等。 這裡我們不細說這些內容,因為經驗的目的只是修改IP。 我們要注意兩個內容,第一:inet addr:xxx.xxx.

PHP獲取客戶IP地址服務器IP地址

客戶端 get sse spa gets static p地址 tip sta ============================================獲取客戶端IP==============================================

根據客戶套接字獲取客戶機的IP和埠號其形式為IP:port

char *sock_ntop(const struct sockaddr *sa, socklen_t salen) { char portstr[7]; static char str[128]; switch (sa->sa_family) { ca

獲取當前訪問客戶的真實IP地址辨別是否為內網?

Test.jsp  測試頁面 TestAddress tsetadres = new TestAddress(); String addIP = request.getRemoteAddr();  if(!addIP.equals("")) {  String relIp

SVN伺服器更換IP地址客戶如何重新定位

問題描述 在解決問題之前,先描述一下問題發生的場景。 小組合作開發,SVN伺服器採用的是VisualSVN Server,客戶端是TortoiseSVN,在VS上安裝了VisualSVN外掛。開發大約一週後,更換了工作場地,伺服器的IP地址也發生了相應的變化

cxf+spring開發(二)--- Ip地址攔截器限制客戶Ip地址只允許資料庫中已經配置的Ip地址

上上篇博文中介紹瞭如何搭建cxf和spring環境,本文將圍繞如何在此環境下編寫攔截器,只允許已經配置好的IP地址訪問伺服器端。 一、修改配置檔案applicationContext.xml <span style="font-size:18px;"><

spring mvc通過客戶傳值controller獲取Sort對象

padding {} margin 獲取 use -c 發現 creat 多個 之前客戶端需要根據需求按不同的排序方式查看數據,按照一種約定排序,比如1代表時間升序,2代表時間降序,3,4這種形式,然後後臺根據這些值創建Sort對象。 後來發現完全多此一舉,可以根據特定的方

通過主機名(域名)獲取IP地址主機別名等信息

單位 規範 nts byname 會有 msd 解析失敗 bsp 主機名 一、所用API函數介紹 struct hostent FAR*gethostbyname( const char FAR* name ); 傳入參數:const char FAR*

獲取請求主機IP地址,如果通過代理進來則透過防火墻獲取真實IP地址

cas return ++ strip dex except servlet desc 請求 /** * 獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址; * @Title: getIpAddress * @Descr

計算機網絡: IP地址子網掩碼默認網關DNS服務器詳解

映射 交換機 則無 con 而是 客戶 5.0 系統 windows 楔子:   以Windows系統中IP地址設置界面為參考(如圖1), IP地址, 子網掩碼, 默認網關 和 DNS服務器, 這些都是什麽意思呢?        學習IP地址的相關知識時還會遇到網絡地址

計算機網絡: IP地址子網掩碼網段表示法默認網關DNS服務器詳解

.org AD 而且 protocol 集線器 AS ip地址分類 網絡層 border 楔子:   以Windows系統中IP地址設置界面為參考(如圖1), IP地址, 子網掩碼, 默認網關 和 DNS服務器, 這些都是什麽意思呢?        學習IP地址的相關知

IP地址子網掩碼預設閘道器DNS伺服器是什麼意思

  Ip地址,IP是32位二進位制資料,通常以十進位制表示,並以“.”分隔。IP地址是一種邏輯地地址,用來標識網路中一個個主機,IP有唯一性,即每臺機器的IP在全世界是唯一的(公有地址),內網地址一般用192.168.x.x,是私有地址。 子網掩碼,子網掩碼是用來判斷任意兩臺計算機

IP地址子網掩碼、默認網關DNS服務器是什麽意思?

發現 都是 獲得 記憶 style 過程 選項卡 設定 置1 DNS服務器   DNS是域名服務器,用來解析域名的(域名與IP之間的解析),如果沒有這東西,你必須輸入網站的IP地址,有了DNS,你就可以直接輸入網址。 DNS服務器   DNS是指: 域名服務器(Dom

關於java-webservice接口根據服務自動生成客戶調用時響應時間慢

exceptio 參考 thead javax ons except contex 關於 ssa 我這邊遇到的問題,是在和對方進行webservice接口交互的時候,用工具,調用對方的webservice接口,對方響應很快。但是用java生成的客戶端調用就會很慢才得到響應。

瞭解 IP 地址預設閘道器子網掩碼DNS 的概念和作用。

DNS(Domain Name System):域名解析伺服器,在 Internet 上域名與 IP 地址一一對應,域名便於人記憶,但是機器只認識 IP 地址,他們之間的轉換工作稱為 ‘域名解析’,域名解析需要專門的域名解析伺服器來完成, DNS 就是進行域名解析的域名解析伺服器。 IP 地址:電腦之間

accept獲取對IP地址getsockname獲取本IP地址

getpeername函式用於獲取與某個套接字關聯的外地地址,accept函式在接收連線的時候也會獲取對端的地址。getsockname用於獲取本端的地址。看程式碼。 服務端: #include <unistd.h> #include <sys/

ES通過http客戶獲取資料自動識別返回型別

在通過http客戶端傳送sql請求時。形式如下: 192.168.90.xxx:9200/_sql?sql=select * from car order by ctime desc limit 0,2 當sql中包含欄位排序時,從json中接收的返回資料會進行自動型別識別,不再固定

網址(url)域名ip地址dnshosts之間的關係

什麼是ip? 我們知道,在Internet上有千百萬臺主機,為了區分這些主機,人們給每臺主機都分配了一個專門的地址,稱為IP地址。通過IP地址就可以訪問到每一臺主機。 IP地址由4部分數字組成,每部分都不大於256,各部分之間用小數點分開。例如“百度搜索”主機的IP地址就

java web客戶整合casweb.xml通過編碼的方式來載入配置

前言: 專案整合cas單點登入,需要在web.xml里加上cas-client的過濾器配置,但是配置地址太繁瑣,而且有重複配置,能不能讓web.xml去讀properties檔案,只做一次配置。在porperties裡配置cas單點開關引數,開就載入cas配置,整合cas,關就不整合。