web 如何工作

sou發表於2018-04-19

如果你只是進入網路開發,那麼你有可能認為你知道網路的工作原理 - 至少在基本層面上。

...但是,然後你試著解釋一個基本的網站是如何工作的,並畫出一個空白。IP地址又是什麼意思?“客戶 - 伺服器”模型是如何工作的?

現在開發框架非常強大。事實上,這非常強大,我們的新手很容易忘記網路的基本知識。

我知道我做到了。毫無羞恥地承認:網路很複雜,只有當你在後端開始工程時,你才會意識到這些基礎是多麼重要。(無論如何,如果你想製作真正有效的網路應用程式。)

所以我自己寫了一本由四部分組成的現場指南,介紹每個人都應該掌握的基礎知識,不管你是在網路開發方面投身於職業生涯還是隻是對學習感興趣:

第1部分: Web如何工作

第2部分: Web應用程式的結構

第3部分: HTTP和REST

第4部分:客戶端 - 伺服器互動的程式碼示例

基本的網路搜尋

讓我們像之前那樣開始,在瀏覽器的位址列中輸入“www.github.com” ,我們會看到頁面開始載入。

看起來似乎很簡單,幕後卻隱藏著一大堆魔法。 讓我們來深入學習吧。

定義網路的部分

瞭解網路是非常麻煩的,因為有很多術語。不幸的是,有些術語對於理解這篇文章的其餘部分至關重要。

如果您想了解全球資訊網的祕密,以下是最重要的術語:

客戶端: 在計算機上執行並連線到網際網路的應用程式,如Chrome或Firefox。其主要作用是進行使用者互動,並將其轉換為對另一臺稱為Web伺服器的計算機的請求。雖然我們通常使用瀏覽器訪問網路,但您可以將整個計算機視為客戶端 - 伺服器模型的“客戶端”。每個客戶端計算機都有一個唯一的地址,稱為IP地址,其他計算機可以用來識別它。

伺服器: 連線到網際網路且具有IP地址的機器。伺服器等待來自其他機器(例如客戶機)的請求並對其進行響應。不同於您的計算機(即客戶端),伺服器也具有IP地址並安裝執行特殊的伺服器軟體,確定如何響應來自瀏覽器的請求。 Web伺服器的主要功能是將網頁儲存,處理和傳送給客戶端。有許多型別的伺服器,包括Web伺服器,資料庫伺服器,檔案伺服器,應用程式伺服器等。 (在這篇文章中,我們在談論Web伺服器。)

IP地址: 網際網路協議地址。 TCP / IP網路上的裝置(計算機,伺服器,印表機,路由器等)的數字識別符號。網際網路上的每臺計算機都有一個IP地址,用於識別和與其他計算機通訊。 IP地址有四組數字,以小數點分隔(例如244.155.65.2)。這被稱為“邏輯地址”。為了在網路中定位裝置,通過TCP / IP協議軟體將邏輯IP地址轉換為實體地址。這個實體地址(即MAC地址)內建在您的硬體中。 ISP:網際網路服務提供商。 ISP是客戶端和伺服器之間的中間人。典型的ISP通常是“有線電視公司”。當您的瀏覽器收請求www.github.com, 時,它不會知道在哪裡尋找www.github.com, 因此,ISP的工作是進行DNS(域名系統)查詢,以詢問查詢的網站的IP地址。

DNS: 域名系統。跟蹤計算機的域名及其在網際網路上相應IP地址的分散式資料庫。不要擔心“分散式資料庫”如何工作:只需要知道輸入www.github.com, 而不是IP地址就行了。

域名:用於標識一個或多個IP地址。使用者使用域名(例如www.github.com, )訪問網際網路上的網站。當您在瀏覽器中鍵入域名時,DNS使用它來查詢該給定網站的IP地址。

TCP / IP: 傳輸控制協議/網際網路協議。最廣泛使用的通訊協議。 “協議”是一些標準的規則。TCP / IP被用作通過網路傳輸資料的標準。

埠號: 一個16位整數,用於標識伺服器上的特定埠,並始終與IP地址相關聯。它可以用來識別伺服器上可以轉發網路請求的特定程式。

主機: 連線到網路的計算機 - 它可以是客戶端,伺服器或任何其他型別的裝置。每個主機都有唯一的IP地址。對於www.google.com, 等網站,主機可以是為該網站的網頁提供服務的網路伺服器。主機和伺服器概念經常混合,但是它們是兩個不同的東西。伺服器是一種主機 - 它們是一個特定的機器。另一方面,提供託管服務來維護多個Web伺服器的機器可以稱作主機。在這個意義上,您可以從主機執行伺服器。

HTTP: 超文字傳輸協議。 Web瀏覽器和Web伺服器用於通過網際網路進行通訊的協議。

URL: 統一資源定位符。 URL識別特定的Web資源。一個簡單的例子是github.com/someone. URL指定協議(“https”),主機名(github.com)和檔名(某人的個人資料頁面)。使用者可以從域名為github.com的網路主機通過HTTP獲取該URL所標識的Web資源。(很繞口嗎?)

從程式碼到網頁的旅程

好的,現在我們有了必要的定義,讓我們嘗試Github的搜尋,看看從位址列輸入一個網址到獲取到網頁經歷了什麼:

1)您在瀏覽器中輸入URL :

web 如何工作

2)瀏覽器解析URL中包含的資訊。包括協議(“https”),域名(“github.com”)和資源(“/”)。 在這種情況下,“.com”之後沒有指示特定的資源,所以瀏覽器知道檢索主(索引)頁面

web 如何工作
3)瀏覽器與ISP進行通訊,對主機的Web伺服器的IP地址進行DNS查詢www.github.com. DNS服務首先聯絡根伺服器, 查詢 www.github.com 頂級域伺服器的IP地址。 該地址被髮送回您的DNS服務。 DNS服務與“.com”名稱伺服器進行另外的溝通,並請求 www.github.com. 的地址。
web 如何工作
source: technet.microsoft.com/en-us/libra…

4)一旦ISP收到目標伺服器的IP地址,它會將其傳送到您的Web瀏覽器

web 如何工作
5)您的瀏覽器從URL中獲取IP地址和給定的埠號(HTTP協議預設為埠80,HTTPS預設為埠443),並開啟TCP套接字連線。 此時,您的Web瀏覽器和Web伺服器終於連線了。

  1. 您的網路瀏覽器向網頁伺服器傳送HTTP請求,請求 www.github.com. 的主頁面
    web 如何工作
    來自客戶端的GET請求

7)Web伺服器接收請求並查詢該HTML頁面。 如果頁面存在,則Web伺服器準備響應並將其傳送回您的瀏覽器。 如果伺服器找不到請求的頁面,它將傳送一個HTTP 404錯誤訊息,代表“找不到頁面”。

web 如何工作
服務端響應

8)您的Web瀏覽器將接收到HTML頁面,然後通過它從上到按下解析尋找列出的其他資源,如影象,CSS檔案,JavaScript檔案等。

web 如何工作
index.html 頁面

9)對於列出的每個資源,瀏覽器重複上述整個過程,向伺服器傳送HTTP請求。

10)瀏覽器完成載入HTML頁面中列出的所有其他資源後,頁面將最終載入到瀏覽器視窗中,並且連線將被關閉

web 如何工作
Github

穿越網際網路深淵

值得注意的一件事是當您提出資訊請求時,如何傳輸資訊。當您發出請求時,該資訊被分解成許多稱為資料包的小塊。每個資料包都標有一個包括源和目標埠號的TCP報頭,以及包含源IP地址和目標IP地址作為身份標識的IP報頭。然後,資料包通過乙太網,WiFi或蜂窩網路傳輸,並允許在任何路由上經過多次跳轉,直到到達目的地。

(我們實際上並不關心資料包到達那裡 - 重要的是它們到達目的地安全無恙!)一旦資料包到達目的地,它們將被重新組合。

那麼所有的資料包怎麼知道如何到達目的地而不會迷路?

答案是TCP / IP。

TCP / IP是一個兩部分系統,作為網際網路的基本“控制系統”。IP代表網際網路協議;其作用是使用每個資料包上的IP頭(即IP地址)將資料包傳送到其他計算機。傳輸控制協議(TCP)負責將訊息或檔案分解成較小的資料包,使用TCP頭將資料包路由到目的地計算機上的正確應用程式,如果丟包,則重新傳送資料包;一旦到達另一端,重新組裝資料包。

繪製最後的圖片

等等 - 工作還沒有完成! 現在,您的瀏覽器具有構成網站(HTML,CSS,JavaScript,影象等)的資源,必須通過幾個步驟將資源呈現為可讀的網頁。

您的瀏覽器有一個渲染引擎,負責顯示內容。 渲染引擎以小塊形式接收資源的內容。 然後有一個HTML解析演算法告訴瀏覽器如何解析資源。

web 如何工作
一旦建立了DOM樹,就會分析樣式表以瞭解如何設定每個節點的樣式。使用這些資訊,瀏覽器遍歷DOM節點並計算每個節點的CSS樣式,位置,座標等。 一旦瀏覽器具有DOM節點及其樣式,它就會*終於準備好相應地將頁面繪製到螢幕上。結果:你在網際網路上看過的所有東西。

網路很複雜,但你剛剛完成了難題 所以這就是簡單的網頁。丟失?我們都是,但如果你已經讀了這麼多,你已經完成了難題。為了向您展示這幅大圖,我顯然略過了一些細節; 但是如果你能夠圍繞上面概述的事件的基本順序進行思考,填寫細節將是小菜一碟。

下一篇第2部分,我們將在這裡處理基本Web應用程式的結構。:)

本文來自freecodecamp:medium.freecodecamp.org/how-the-web…

相關文章