DNS是一個將像是example.com這樣的名稱轉換成可用於通訊的IP位址的系統。
互聯網通訊最終是根據「要送到哪個IP位址」來進行的。但人類很難記住像203.0.113.10這樣的數字,因此我們使用容易記憶的名稱(域名),而在背後DNS會將其轉換為IP位址。
example.com203.0.113.10DNS的轉換如果每次都從零開始查詢會很耗時。因此,通過「暫時記住」一次轉換的結果,讓下次能夠快速獲得相同的IP位址。這就是快取。
可以想像成這樣的流程:
example.comIP位址是互聯網上的地址。
在傳送資料時,使用它來指定要送到哪裡。
例如,假設你想把包裹寄給朋友中村。
如果你說「中村的家」在與鄰居的對話中可能可以理解,但如果要透過郵遞送達,必須提供地址以免快遞員迷路。
互聯網也是一樣的:
example.com(人類容易理解的名稱)203.0.113.10(通訊所需的地址)這之間存在這樣的關係。瀏覽器從易懂的名稱查找地址,最終使用IP位址這個地址將資料送到伺服器。
雖然知道地址(IP位址),但就像在公寓裡需要房號一樣,我們還需資訊來決定將資料傳遞到同一設備中的哪個應用程式。這就是端口號。
因此,通訊通常以IP位址:PORT的組合來決定目的地。
0號沒有分配特定用途,通常不使用,因此也可說是65535個
如果將IP位址視為建築的地址,則PORT就像建築裡的接待窗口或房間號碼。
在同一棟建築(同一IP位址)裡,裡面正在運行各種服務。
因此,必須指定「這棟建築的哪個窗口要送達」,這就是PORT。
伺服器可以在一台設備中運行多個服務,但根據PORT來區分連接到哪個服務。
例如當URL中寫著https://example.com時,背後也會確定PORT。
對於HTTPS來說,基本上PORT號是443。
平時無需寫出PORT也可以訪問,並不特別需要去意識。
相對地,在開發中的本地環境中,常見到像是http://localhost:3000的形式,這是因為想要連接到同一台電腦(同一地址)中3000號這個入口的服務。
著名的PORT號是指0到1023,稱為well-known ports。
其中一些常用的代表性PORT號如下所示。
<details><summary>常用的PORT表</summary>
| PORT | 用途 | 具體發生的動作範例 |
|---|---|---|
| 20 | FTP(數據傳輸) | 傳送文件、接收文件(上傳/下載的內容流通) |
| 21 | FTP(控制) | 登錄、獲取目錄列表、傳輸開始等命令(操作指令流通) |
| 22 | SSH | 遠程登錄伺服器執行命令、公開金鑰認證、透過SCP/SFTP傳送文件 |
| 23 | Telnet | 通過文字方式遠程連接進行操作(因為沒有加密所以現在基本不使用) |
| 25 | SMTP | 向伺服器發送郵件、中繼到其他郵件伺服器(發送的配送處理) |
| 53 | DNS | 查詢從域名到IP地址、查詢郵件用的目的地(MX)等DNS記錄 |
| 80 | HTTP | 獲取網頁、API獲取數據、獲取圖片或CSS/JS(沒有加密) |
| 110 | POP3 | 從郵件伺服器接收郵件,在設定中可能會刪除伺服器上的郵件 |
| 443 | HTTPS | 加密地處理網頁或API,安全地進行登錄或支付等通訊 |
</details>
原文出處:https://qiita.com/shibata1111/items/a3e91b89b5ed9b266e91