在系統設計領域,網路是將不同組件黏合在一起的黏合劑。無論您是建立 Web 應用程式、分散式系統,還是簡單的後端服務,了解網路的工作原理都是確保順暢通訊、安全性和效能的關鍵。在本章中,我們將討論網路的一些核心方面,這些方面對於建立可擴展且可靠的系統至關重要。
1.電腦網路基礎
讓我們從基礎開始。 電腦網路是相互通訊的互連設備(電腦、伺服器、路由器等)的集合。它就像是資料的郵政系統:它讓不同的設備以資料包的形式發送和接收訊息。當使用者與線上服務(例如,您的食品配送應用程式)互動時,這些資料包會不斷在其裝置和為該應用程式提供支援的伺服器之間來回發送。
網路類型:
- 區域網路 (LAN):這是連接建築物或校園等有限區域內的設備的網路。例如,電腦和印表機透過有線或無線連接進行通訊的辦公室網路。 LAN 的主要特點是速度快且通常局限於狹小的空間。
範例:在典型的辦公室中,員工的電腦透過 LAN 連接到印表機、文件伺服器,有時甚至連接到電話。此設定允許快速共享資源。
- 廣域網路 (WAN):覆蓋更廣泛的區域並連接多個 LAN。將網際網路視為 WAN 的最大範例。這是世界不同地區相互溝通的方式。
範例:想像一家在紐約、倫敦和東京設有辦事處的大公司。辦公室內部有 LAN,但為了相互通信,他們使用 WAN,可能利用網際網路或專用連線。
網路層與 OSI 模型:
為了了解網路如何運作,我們使用OSI模型,它將網路分為七層:
- 實體層:這是硬體方面-纜線、交換器和無線傳輸。
- 資料鏈路層:管理同一本地網路上的設備之間的通訊。
- 網路層:確定封包如何從一個裝置傳送到另一台裝置(例如路由)。
- 傳輸層:確保資料的可靠傳輸、管理流量控制和處理錯誤(這是 TCP 運作的地方)。
- 會話層:管理兩個裝置之間的連接,確保會話在需要時保持開啟。
- 表示層:轉換資料格式,以便系統相互理解。
- 應用程式層:瀏覽器和電子郵件用戶端等應用程式運作的地方。這就是您與之互動的數據發揮作用的地方。
在系統設計中,我們大部分時間都專注於第 3 層到第 7 層,尤其是在處理通訊協定、安全性和資料流時。
2. HTTP/HTTPS、TCP/IP、DNS 與負載平衡器
HTTP/HTTPS:
HTTP(超文本傳輸協定) 和 HTTPS(HTTP 安全) 是用於網路通訊的主要協定。它們定義了訊息的格式以及在客戶端(如瀏覽器)和伺服器之間傳輸的方式。
- HTTP 是您向網站發出的請求背後的協定。例如,當您載入網頁時,瀏覽器會向託管該網頁的伺服器發出 HTTP 請求,然後伺服器傳回包含頁面內容的 HTTP 回應。
範例:您在瀏覽器中輸入“www.fooddelivery.com”,它會發送 HTTP 請求來取得主頁。
- HTTPS 是 HTTP 的安全版本。它會對傳輸的資料進行加密,確保密碼和信用卡號等敏感資訊不會被攻擊者攔截。
範例:當使用者在您的送餐應用程式上下訂單時,HTTPS 會確保他們的付款詳細資訊在從裝置傳輸到您的伺服器時經過加密且安全。
TCP/IP:
TCP(傳輸控制協定) 和 IP(網際網路協定) 是為網際網路提供動力的兩個基本協定。
- TCP 確保設備之間的可靠通訊。它將訊息分解為資料包,並確保它們以正確的順序正確傳送。如果資料包在途中遺失,TCP 會重新傳輸它們。這使得它非常適合數據完整性至關重要的應用程序,例如文件傳輸或網頁瀏覽。
範例:如果您的食品配送應用程式將客戶詳細資訊傳送到伺服器,TCP 將確保整個訊息都送達而不會遺漏任何部分。
- IP 負責對資料包進行尋址並將其路由到正確的目的地。將 IP 位址視為信封上的位址;它們告訴網路要將資料傳送到哪裡。
範例:當您從手機發出請求時,它會使用您的 IP 位址將資料路由到伺服器。伺服器有自己的IP位址,允許封包正確回傳給你。
TCP/IP 共同構成了網路通訊的支柱。這就像可靠的郵政服務:TCP 確保包裹內容完好無損,IP 確保包裹到達正確的地方。
DNS(網域名稱系統):
DNS 就像網路的電話簿。我們不記住 IP 位址(就像伺服器的電話號碼),而是使用「www.example.com」等網域。 DNS 將這些名稱解析為 IP 位址,以便您的裝置知道要將請求傳送到哪裡。
- 範例:當使用者在瀏覽器中輸入「www.fooddelivery.com」時,他們的裝置會查詢 DNS 伺服器以尋找與該網域關聯的 IP 位址,然後向該伺服器發出請求。
負載平衡器:
負載平衡器在水平擴展時至關重要。它是一種在多個伺服器之間分配傳入流量的工具,以確保沒有任何伺服器被淹沒。這使您的系統更具可擴展性和容錯性。
- 範例:想像一下現在是午餐時間,每個人都在嘗試在您的食品配送應用程式上下訂單。您有 10 台伺服器準備好處理請求,但負載平衡器不是將所有流量傳送到一台伺服器,而是均勻分佈請求。這可確保沒有一台伺服器過載,從而防止停機並確保用戶的快速回應時間。
3.內容傳遞網路 (CDN)
CDN 是減少延遲並提高分佈在不同位置的使用者效能的絕佳方法。 CDN 是分佈在全球各地的分散式伺服器網絡,用於儲存內容的快取版本。當使用者從您的網站請求某些內容時,CDN 會從距離他們最近的伺服器而不是您的主伺服器提供該內容,從而減少了載入時間。
範例:假設您的食品配送應用程式在印度和美國有客戶,但您的主要伺服器位於歐洲。如果沒有 CDN,印度用戶可能會遇到載入時間緩慢的情況,因為他們的請求必須一路傳輸到歐洲。但透過 CDN,印度的伺服器可以提供快取的圖像、餐廳詳細資訊和靜態內容,使應用程式感覺更快。
CDN 的好處:
- 減少延遲:由於資料是從距離使用者更近的伺服器提供的,因此他們的載入時間更快。
- 負載分佈:CDN 透過卸載對映像、CSS 檔案和腳本等靜態內容的請求來幫助減少主伺服器上的負載。
- 提高可用性:即使您的主伺服器發生故障,CDN 也可以繼續提供網站的快取版本,從而提高可用性。
4. SSL、TLS 與網路安全
安全性是任何系統中的一個主要問題,確保網路安全通訊的主要技術是SSL(安全通訊端層)和TLS(傳輸層安全)。這些協定對客戶端和伺服器之間發送的資料進行加密,確保密碼和付款詳細資訊等敏感資訊免遭竊聽。
SSL 和 TLS:
- SSL 是用於保護通訊的原始協議,但它已在很大程度上被更安全的 TLS 所取代。當您在網站的 URL 中看到「https://」時,表示該連線已使用 SSL/TLS 進行保護。
範例:在您的食品配送應用程式中,當使用者提交信用卡資訊付款時,資料會在傳送到伺服器之前使用 TLS 進行加密。這確保即使有人攔截數據,他們也無法讀取它,因為它是加密的。
- 握手過程:TLS 使用握手 過程來建立安全連線。客戶端(使用者的瀏覽器)和伺服器交換加密金鑰以建立安全連線。一旦建立連接,所有後續通訊都會加密。
範例:當使用者開啟您的應用程式時,他們的裝置和您的伺服器會透過此握手來同意如何在傳輸任何敏感資訊(例如登入詳細資訊或付款資訊)之前加密數據。
網路安全的重要性:
在資料跨網路傳輸的任何系統中,安全性至關重要。以下是確保系統安全的一些關鍵安全實務:
- 加密:始終使用 TLS 等協定對傳輸中的敏感資料進行加密,以防止中間人攻擊。
- 防火牆保護:使用防火牆限制對伺服器的存取。僅允許可信任流量通過預先定義連接埠並阻止未經授權的嘗試。
- API 速率限制:透過限制每個用戶端在特定時間視窗內可以發出的請求數量,保護您的系統免受 DDoS(分散式阻斷服務) 攻擊。
範例:假設一個惡意行為者試圖透過發送數百萬個虛假請求來淹沒您的食品配送應用程式。 API 速率限制可以限制這些請求並防止系統崩潰。
- 安全監控:使用監控工具偵測異常流量模式或潛在入侵。 **入侵偵測系統 (
IDS)** 可以在有人試圖破壞您的網路時向您發出警報。
證書:
要啟用 SSL/TLS,您需要一個 SSL 憑證,用於驗證您的網站或伺服器的身份。憑證由稱為憑證授權單位 (CA) 的受信任實體頒發,它們保證您的網站是合法的。
範例:當您為食品配送應用程式的網域購買 SSL 憑證時,該憑證是由 Let’s Encrypt 或 DigiCert 等 CA 所頒發的。這告訴用戶他們的資料是安全的,並且他們實際上是在與您的應用程式進行交互,而不是冒名頂替。
雙重認證 (2FA):
實作2FA是一個額外的安全層,要求使用者提供兩種形式的識別(通常是他們知道的東西,例如密碼,以及他們擁有的東西,例如行動裝置)。這使得攻擊者更難入侵帳號。
範例:在您的送餐應用程式中,為使用者啟用 2FA 可以幫助防止未經授權的訪問,即使他們的密碼被盜。
以上是網路基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

OpenSSL,作為廣泛應用於安全通信的開源庫,提供了加密算法、密鑰和證書管理等功能。然而,其歷史版本中存在一些已知安全漏洞,其中一些危害極大。本文將重點介紹Debian系統中OpenSSL的常見漏洞及應對措施。 DebianOpenSSL已知漏洞:OpenSSL曾出現過多個嚴重漏洞,例如:心臟出血漏洞(CVE-2014-0160):該漏洞影響OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻擊者可利用此漏洞未經授權讀取服務器上的敏感信息,包括加密密鑰等。

本文演示了創建模擬和存根進行單元測試。 它強調使用接口,提供模擬實現的示例,並討論最佳實踐,例如保持模擬集中並使用斷言庫。 文章

本文探討了GO的仿製藥自定義類型約束。 它詳細介紹了界面如何定義通用功能的最低類型要求,從而改善了類型的安全性和代碼可重複使用性。 本文還討論了局限性和最佳實踐

本文討論了GO的反思軟件包,用於運行時操作代碼,對序列化,通用編程等有益。它警告性能成本,例如較慢的執行和更高的內存使用,建議明智的使用和最佳

本文討論了GO中使用表驅動的測試,該方法使用測試用例表來測試具有多個輸入和結果的功能。它突出了諸如提高的可讀性,降低重複,可伸縮性,一致性和A

本文使用跟踪工具探討了GO應用程序執行流。 它討論了手冊和自動儀器技術,比較諸如Jaeger,Zipkin和Opentelemetry之類的工具,並突出顯示有效的數據可視化


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具