如果您現(xiàn)在正在閱讀本文,那么您已經(jīng)使用了客戶端-服務器模型,甚至沒有意識到。您(作為客戶)請求了由網(wǎng)絡服務器提供給您的資源(即本網(wǎng)頁)。這是現(xiàn)代通信的流行架構,其中數(shù)字數(shù)據(jù)由服務器提供給客戶端。另一種模式稱為點對點或“P2P”,依賴于相互連接的計算機來共享數(shù)據(jù)。與 P2P 模型不同,客戶端-服務器架構依賴于連接到網(wǎng)絡的主服務器機器或一組機器,通常位于數(shù)據(jù)中心。客戶端或連接到 Web 或本地網(wǎng)絡的普通計算機發(fā)送數(shù)據(jù)包以從服務器請求數(shù)據(jù)。
當服務器收到這些請求時,它們可以做以下三件事之一:接受數(shù)據(jù)包,拒絕或“丟棄”數(shù)據(jù)包,或靜默終止連接。依靠使用“端口”來控制數(shù)據(jù)流,客戶端和服務器必須在正確的端口上相互發(fā)送請求。大多數(shù)防火墻設置為接收不同類型的請求。例如,大多數(shù)使用超文本傳輸??協(xié)議或“HTTP”的服務器將只接受通過端口 80 或 443 對其數(shù)據(jù)的請求。如果您將數(shù)據(jù)包從客戶端發(fā)送到正確配置的服務器到另一個端口,服務器通常會靜默丟棄發(fā)送的數(shù)據(jù)包。
1. 網(wǎng)絡服務器
Web 服務器為您現(xiàn)在正在查看的站點提供支持。這種類型的服務器專注于向客戶端提供 Web 內容。
Web 服務器只接受來自客戶端的“GET”和“POST”請求(以及其他動詞)。
“GET”請求是客戶端只想檢索信息而沒有任何信息要提交給服務器的情況。
另一方面,“POST”請求是當客戶端確實有信息要與服務器共享并期望得到響應時。例如,在 Web 服務器上填寫表單并單擊提交按鈕是從客戶端到服務器的“POST”請求。
Web 服務器本質上通常是“無頭”的。這是為了保留服務器上的內存并確保有足夠的內存為服務器上的操作系統(tǒng)和應用程序供電。
“無頭”意味著它不像傳統(tǒng)的家用計算機那樣運行,而只是提供內容。這些服務器的管理員只能通過命令行終端連接到它們。
請記住,這些類型的服務器可以像您的家用計算機一樣運行任何類型的應用程序。
它們也可以在任何操作系統(tǒng)上運行,只要它們遵守網(wǎng)絡的一般“規(guī)則”。
現(xiàn)代 Web 應用程序通常在一系列層上運行,從服務器端腳本和處理數(shù)據(jù)的程序(例如 PHP、ASP.NET 等)開始,到對數(shù)據(jù)進行編程的客戶端腳本(例如 Javascript)結束顯示。
然后,Web 瀏覽器會相應地呈現(xiàn)內容以顯示您現(xiàn)在正在閱讀的頁面。
一些流行的網(wǎng)絡服務器包括 Microsoft IIS、Apache、Nginx 等。
一些用于 Web 服務器的端口:HTTP 的端口 80(未加密)和 HTTP 的端口 443(加密)。
2. 數(shù)據(jù)庫服務器
數(shù)據(jù)庫服務器通常與另一種類型的服務器協(xié)同工作。這種服務器的存在只是為了將數(shù)據(jù)分組存儲。
有無數(shù)種方法可以根據(jù)不同的理論來保存數(shù)據(jù)。一種更常見的類型被稱為“SQL”或“結構化查詢語言”。
數(shù)據(jù)庫程序員可以使用數(shù)據(jù)庫語言的腳本在這些服務器上創(chuàng)建數(shù)據(jù)庫。
Web 應用程序通常將其服務器端組件連接到數(shù)據(jù)庫服務器以在用戶請求時獲取數(shù)據(jù)。
一個好的做法是在不同的機器上擁有網(wǎng)絡服務器和數(shù)據(jù)庫服務器。數(shù)據(jù)庫服務器應該獨立存在的原因是為了安全。
如果黑客能夠訪問主 Web 服務器而不是數(shù)據(jù)庫服務器,他們將能夠輕松檢索或修改存儲在數(shù)據(jù)庫服務器中的數(shù)據(jù)。
一些流行的數(shù)據(jù)庫服務器包括 MySQL、MariaDB、Microsoft SQL、Oracle 數(shù)據(jù)庫等。
用于數(shù)據(jù)庫服務器的一些端口:端口 3306(MySQL、MariaDB)、端口 1433(MS-SQL)、端口 1521(Oracle DB)。
3. 電子郵件服務器
電子郵件服務器通常在“SMTP”或“簡單郵件傳輸協(xié)議”上運行。較新的郵件服務器還運行其他可能的協(xié)議,但 SMTP 仍然是主要協(xié)議。
電子郵件服務器為郵件服務提供動力。這些服務器本身只是將電子郵件從一個客戶端接收到另一個客戶端并將數(shù)據(jù)轉發(fā)到另一臺服務器。
通過 SMTP 發(fā)送數(shù)據(jù)時,數(shù)據(jù)會得到簡化,因此某些信息(如 Web 格式)通常會在電子郵件交易中丟失。
電子郵件服務器的現(xiàn)代方法通常將它們與 Web 服務器配對。這允許用戶擁有一個“網(wǎng)絡客戶端”,以圖形方式顯示網(wǎng)頁上的數(shù)據(jù)。一些較新的 Web 應用程序甚至可以在不安裝任何東西的情況下模擬家用計算機電子郵件客戶端。
一些用于電子郵件服務器的端口:端口 25 (SMTP)、端口 587 (安全 SMTP)、端口 110 (POP3)
4. 網(wǎng)絡代理服務器
Web 代理服務器可以在多種協(xié)議中的一種上運行,但它們都做一件共同的事情。
它們接收用戶請求,對其進行過濾,然后代表用戶采取行動。最流行的網(wǎng)絡代理服務器類型旨在繞過學校和組織的網(wǎng)絡過濾器。
由于網(wǎng)絡流量全部通過一個尚未被阻止的 IP 地址和網(wǎng)站,因此用戶可以通過這些過濾器訪問被禁止的網(wǎng)站。
不太流行的類型是組織代理服務器。這具有相同的效果,但通常由組織授權。
它獲取用戶的網(wǎng)絡流量,通常將其記錄下來以供稍后評估,然后將其發(fā)送到 Internet。
這將用戶的流量集中在一起,因此無法公開區(qū)分一臺計算機與另一臺計算機。
這是由組織有意完成的,以防止用戶成為目標,并且通常能夠檢查、緩存和分析發(fā)送和接收的數(shù)據(jù)包。
一些用于 Web 代理服務器的端口:端口 8080、8888 等
5. DNS 服務器
DNS 服務器或“域名服務”服務器用于將域名轉換為其相應的 IP 地址。
當您輸入域名并按 Enter 鍵時,您的瀏覽器會引用此服務器。這個想法是用戶不必記住 IP 地址,組織可以有一個合適的名稱。
通常,Internet 服務提供商 (ISP) 為其用戶提供 DNS 服務器。但是,也有許多組織免費提供此查找服務(例如流行的 IP 為 8.8.8.8 的 Google DNS 服務器)。
當用戶創(chuàng)建新域名時,DNS 服務器也會被竊聽。DNS 服務器在分層基礎上運行,因此有一些比其他服務器更“權威”的服務器。
域名在一臺上級 DNS 服務器上注冊,其他下級 DNS 服務器引用該服務器。通常通過一個需要 24 到 48 小時的過程,這種注冊會在世界范圍內傳播。
用于 DNS 服務器的端口:端口 53(TCP 和 UDP)。
6. FTP 服務器
FTP 服務器或“文件傳輸協(xié)議”服務器有一個目的:托管用戶之間的文件交換。
默認情況下,這些服務器不提供任何類型的加密,因此有許多安全版本的協(xié)議經(jīng)常在其位置使用(例如sFTP,它是基于安全 SSH 協(xié)議的 FTP)。
這種類型的服務器允許用戶在通過 FTP 客戶端驗證后上傳文件或下載文件。用戶還可以瀏覽服務器的文件并根據(jù)需要下載單個文件。
一些用于 FTP 服務器的端口:用于 FTP 的端口 20,21 或用于 sFTP 的端口 22。
7. 文件服務器
文件服務器不同于 FTP 服務器。這種類型的服務器更現(xiàn)代,通常能夠將網(wǎng)絡文件“映射”到驅動器上。這意味著用戶可以使用家庭計算機的文件瀏覽器查看文件夾。
這種形式的服務器的主要優(yōu)點是用戶可以上傳和下載共享文件。文件權限由管理員控制。
通常文件服務器存在于 Windows Active Directory 環(huán)境或 Linux 環(huán)境中的企業(yè)網(wǎng)絡中。
8. DHCP 服務器
DHCP 服務器使用動態(tài)主機通信協(xié)議 (DHCP) 來配置客戶端計算機的網(wǎng)絡設置。
網(wǎng)絡中的 DHCP 服務器不必為大型網(wǎng)絡中的客戶端計算機手動配置靜態(tài) IP 地址和其他網(wǎng)絡設置,而是將這些網(wǎng)絡設置動態(tài)配置到 LAN 計算機。
用于 DHCP 服務器的端口:端口 UDP 67。