IP、域名和端口號之間的聯繫

首先,一個域名是對應到一個 IP的一個端口
通常情況下,默認爲80端口,所以直接輸入ip也能訪問。
在實際情況中,因爲用戶和服務器之間存在代理服務器比如nginx,這個解析到的域名一般是代理服務器的 IP地址(或者IP地址 :80端口 ),代理服務再去轉發請求到真正的業務服務器,業務服務器和IP和端口號就跟訪問的域名沒啥關係了。

1.背景介紹

當我們把項目部署到自己的服務器上以後,一般可以通過兩種形式訪問項目,一種是ip+端口號,還有一種是域名訪問.

那麼這兩種訪問項目的方式的區別是什麼呢?哪一種更好一些?IP,域名,端口號之間有什麼聯繫呢?

2.知識剖析

IP,域名,端口號的基本概念

(1) IP

IP,(英語:Internet Protocol Address,又譯爲網際協議地址),縮寫爲IP地址(英語:IP Address),是分配給網絡上使用IP協議的設備的數字標籤。常見的IP地址分爲IPv4與IPv6兩大類。目前我們使用的都是IPv4的地址,IPv4地址由32位二進制數組成,常以XXX.XXX.XXX.XXX形式表現。(以上參考於維基百科)

通俗點說就是IP地址是用於標識出網絡上的每一臺主機的編號。有這個編號,網絡上的其他主機才能在互聯網浩若繁星的主機中定位到唯一的一臺主機。

(2)域名

域名,(英語:domain name),是由一串用「點」分隔的字符組成的Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位。域名按域名系統(DNS)的規則流程組成。在DNS中註冊的任何名稱都是域名。域名用於各種網絡環境和應用程序特定的命名和尋址目的。(以上參考於維基百科)

域名和IP地址之間有區別也有聯繫,域名通常會和IP進行綁定,通過訪問域名來訪問網絡上的主機的服務。IP地址通常指的是網絡中的主機,而域名則通常表示一個網站,一個域名可以綁定到多個ip上,多個域名也可以綁定到一個ip上。

(3)端口號

端口,(英語:port),主要分爲物理端口和邏輯端口。我們一般說的都是邏輯端口,用於區分不同的服務。因爲網絡中一臺主機只有一個IP,但是一個主機可以提供多個服務,端口號就用於區分一個主機上的不同服務。一個IP地址的端口通過16bit進行編號,最多可以有65536個端口,標識是從0~65535.(以上參考於維基百科)

端口號分爲公認端口(01023)、註冊端口(102449151)和動態端口(49152~65535)。我們自己的服務一般都綁定在註冊端口上。

3.常見問題及解決方案

(1)域名和端口號是怎麼對應起來的?

客戶端輸入域名,通過DNS將域名解析成爲服務器ip,找到代理服務器,因爲http協議服務所佔用的端口默認爲80端口,所以會訪問服務器的80端口,然後再通過代理服務器將請求轉發到不同的服務器以及端口中.如圖:域名和端口號的對應

域名和端口號的對應

(2)應該通過域名訪問項目嗎?

答案是必須的。

如果用IP+端口號的方式訪問,會有以下後果:

首先,非常難記,域名是對人友好的有含義的字符,而ip都是4組基本無規律的數字,對人不友好.

其次, 如果服務器中的資源發生遷移,那麼原先的服務器ip地址就無效了,必須要重新使用新的ip地址訪問服務器,用戶還要再去記憶一遍IP地址。但是如果是使用域名則不存在這個問題.

最後, 不安全,通過ip直接訪問服務器是非常危險的,相當於將整個服務器的大門向所有人打開,造成的後果是別有用心的人能夠非常容易攻擊到服務器.域名訪問就能杜絕這種情況,用戶是不知道服務器的IP地址的,而且就算有人通過域名惡意攻擊,直接和用戶交互的代理服務器也可以保護內容服務器。這樣就算代理服務器被攻破,損失也相對較小。

(3)從域名服務商到服務器的流程是怎麼樣的?

個人理解就是域名解析過程。該過程如下圖

域名解析過程

4.擴展思考

DNS的查詢方式有幾種?

有兩種,遞歸查詢和迭代查詢

遞歸查詢是一次查詢就得到最終的結果.通常是主機到DNS服務器之間的查詢方式

迭代尋址是有可能發生多次請求,並且每次得到的結果有可能只是參考答案.DNS服務器會使用迭代查詢

作者:淬火殤
鏈接:https://www.jianshu.com/p/806d0514ec7d
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

5. 補充URI URL

URI是:協議+主機(不含端口)+具體路徑(不一定含文件);
URL是:協議+主機(默認是80,或是別的端口)+具體文件路徑(還必須是對應到路徑下面的具體文件名稱)。

所以URI是粗框架,URL是詳細定位。
比如URI:http://www.123.com/123/,該目錄下可能有index.html和index.htm(兩個文件)
比如URL: http://www.123.com/123/index.html(唯一的文件)

URL並不是粗略框架,更不是路徑,而是唯一標識資源的符號,因爲路徑下面可以有子目錄以及多個文件,不具有唯一標識的性質,/qq_32595453/article/details/79516787,這一段你可以認爲他是一個唯一的id號,和資源本身如何訪問無關,不過現在都是使用url來實現uri了,本身不需要兩種表示方法