首頁 後端開發 Golang 網路基礎知識

網路基礎知識

Oct 06, 2024 am 06:07 AM

Network fundamentals

在系統設計領域,網路是將不同組件黏合在一起的黏合劑。無論您是建立 Web 應用程式、分散式系統,還是簡單的後端服務,了解網路的工作原理都是確保順暢通訊、安全性和效能的關鍵。在本章中,我們將討論網路的一些核心方面,這些方面對於建立可擴展且可靠的系統至關重要。


1.電腦網路基礎

讓我們從基礎開始。 電腦網路是相互通訊的互連設備(電腦、伺服器、路由器等)的集合。它就像是資料的郵政系統:它讓不同的設備以資料包的形式發送和接收訊息。當使用者與線上服務(例如,您的食品配送應用程式)互動時,這些資料包會不斷在其裝置和為該應用程式提供支援的伺服器之間來回發送。

網路類型:
  1. 區域網路 (LAN):這是連接建築物或校園等有限區域內的設備的網路。例如,電腦和印表機透過有線或無線連接進行通訊的辦公室網路。 LAN 的主要特點是速度快且通常局限於狹小的空間。

範例:在典型的辦公室中,員工的電腦透過 LAN 連接到印表機、文件伺服器,有時甚至連接到電話。此設定允許快速共享資源。

  1. 廣域網路 (WAN):覆蓋更廣泛的區域並連接多個 LAN。將網際網路視為 WAN 的最大範例。這是世界不同地區相互溝通的方式。

範例:想像一家在紐約、倫敦和東京設有辦事處的大公司。辦公室內部有 LAN,但為了相互通信,他們使用 WAN,可能利用網際網路或專用連線。

網路層與 OSI 模型:

為了了解網路如何運作,我們使用OSI模型,它將網路分為七層:

  1. 實體層:這是硬體方面-纜線、交換器和無線傳輸。
  2. 資料鏈路層:管理同一本地網路上的設備之間的通訊。
  3. 網路層:確定封包如何從一個裝置傳送到另一台裝置(例如路由)。
  4. 傳輸層:確保資料的可靠傳輸、管理流量控制和處理錯誤(這是 TCP 運作的地方)。
  5. 會話層:管理兩個裝置之間的連接,確保會話在需要時保持開啟。
  6. 表示層:轉換資料格式,以便系統相互理解。
  7. 應用程式層:瀏覽器和電子郵件用戶端等應用程式運作的地方。這就是您與之互動的數據發揮作用的地方。

在系統設計中,我們大部分時間都專注於第 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 EncryptDigiCert 等 CA 所頒發的。這告訴用戶他們的資料是安全的,並且他們實際上是在與您的應用程式進行交互,而不是冒名頂替。

雙重認證 (2FA)

實作2FA是一個額外的安全層,要求使用者提供兩種形式的識別(通常是他們知道的東西,例如密碼,以及他們擁有的東西,例如行動裝置)。這使得攻擊者更難入侵帳號。

範例:在您的送餐應用程式中,為使用者啟用 2FA 可以幫助防止未經授權的訪問,即使他們的密碼被盜。

以上是網路基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1657
14
CakePHP 教程
1415
52
Laravel 教程
1309
25
PHP教程
1257
29
C# 教程
1231
24
Golang的目的:建立高效且可擴展的系統 Golang的目的:建立高效且可擴展的系統 Apr 09, 2025 pm 05:17 PM

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

Golang和C:並發與原始速度 Golang和C:並發與原始速度 Apr 21, 2025 am 12:16 AM

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

Golang vs. Python:主要差異和相似之處 Golang vs. Python:主要差異和相似之處 Apr 17, 2025 am 12:15 AM

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。Golang以其并发模型和高效性能著称,Python则以简洁语法和丰富库生态系统著称。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

C和Golang:表演至關重要時 C和Golang:表演至關重要時 Apr 13, 2025 am 12:11 AM

C 更適合需要直接控制硬件資源和高性能優化的場景,而Golang更適合需要快速開發和高並發處理的場景。 1.C 的優勢在於其接近硬件的特性和高度的優化能力,適合遊戲開發等高性能需求。 2.Golang的優勢在於其簡潔的語法和天然的並發支持,適合高並發服務開發。

表演競賽:Golang vs.C 表演競賽:Golang vs.C Apr 16, 2025 am 12:07 AM

Golang和C 在性能競賽中的表現各有優勢:1)Golang適合高並發和快速開發,2)C 提供更高性能和細粒度控制。選擇應基於項目需求和團隊技術棧。

Golang的影響:速度,效率和簡單性 Golang的影響:速度,效率和簡單性 Apr 14, 2025 am 12:11 AM

goimpactsdevelopmentpositationality throughspeed,效率和模擬性。 1)速度:gocompilesquicklyandrunseff,IdealforlargeProjects.2)效率:效率:ITScomprehenSevestAndardArdardArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增強的Depleflovelmentimency.3)簡單性。

Golang和C:性能的權衡 Golang和C:性能的權衡 Apr 17, 2025 am 12:18 AM

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

See all articles