網站是怎麼顯示出來的(轉)

首先用戶要在瀏覽器上輸入一個網址,然後瀏覽器會解析這個網址, 首先就要解析這個網址是以什麼協議訪問的,比如 http://www.baidu.com 這樣的域名,這個域名就代表我們以HTTP協議來解析URL,在大學時我們常用FTP,比如 ftp://172.31.214.196 ,就代表以ftp發的方式發送請求。不同的協議有不同的解析網址的方式。比如http之後的一串英文就代表Web服務器域名,而mailto後面的一串英文就代表郵件地址。HTTP協議使我們日常上網的時候用的最多的協議,之後只以這個協議爲例,不再說明。

這裏先簡單介紹一下HTTP協議,HTTP協議是一套定義了客戶端和服務器之間如何交互的協議,比如客戶端發送請求的信息是什麼格式,服務器如何解析對應的數據,服務器返回的數據應該是什麼格式之類的。

以客戶端向服務器發送請求來說,HTTP協議定義了請求信息中要有兩個東西,一個是對服務器哪個資源發送請求,一個是對這個資源發送什麼樣的請求。

比如說,我們向http://www.baidu.com/loginl發送一個GET請求,一般表明我們要獲取http://www.baidu.com/login這個資源,如果我們向這個路徑發送一個POST請求,一般是我們要向服務器更新一些資源。

HTTP協議中有哪些類型的請求以及發送的請求信息是什麼樣的,請讀者自己查詢網絡資料。

注:一般來說GET請求是獲取某些資源,POST請求是向服務器更新某些資源,不過這都由服務器的管理者來決定,管理者可以決定你向這個資源發GET請求表明着向服務器更新信息,也可以讓你發POST請求代表獲取信息,各種請求只是HTTP協議中定義了這些,GET代表獲取,POST代表更新是約定俗成而已,並不一定是這樣的操作。

瀏覽器獲解析完URL就可以獲取到資源路徑,也就是上面說的“對哪個資源發送請求”,然後就要知道我們發送的是一個什麼請求,如果什麼都沒定義,那默認就是GET請求,想要發送其他的請求,比如POST請求,PUT請求,一般是要填寫網站給出的表單,表單具體發送請求由網站代碼編寫者來定義,比如登錄表單,程序員可以定義爲POST請求,那你填寫完就會發送一個POST請求,如果定義爲PUT請求,那你填寫完就是發送了一個PUT請求。

有了資源路徑和請求類型,我們就要生成請求信息了,就是讓服務器知道你要對哪個資源發送請求和請求類型。這個請求信息包含很多東西,比如請求類型,資源路徑,HTTP版本等等等等,很多的東西,同時HTTP協議對這個請求信息的格式有很嚴格的要求,這個信息放哪裏,那個信息放哪裏,他們在哪一行等等,都有很嚴格的要求,請求信息格式本來是很重要的,但是本文重點不在於此,讀者若有興趣請自行了解。

接下來我們就要將這個請求信息發送給服務器了,可是怎麼發呢,如果讀者有了解,可能會知道一個域名後面可能有很多服務器,那我們要發送給哪一個服務器呢?我們現在只有一個域名,我們要通過域名獲取到服務器的IP地址,才能成功的將請求信息發出去。接下來我們就要向DNS服務器來查詢Web服務器的IP地址了。

最簡化的流程:你的機器向離你機器最近的DNS服務器發出詢問:“域名爲xxxxxx的服務器的IP地址是多少”,DNS服務器就告訴你它的IP地址了。

注:一般地理位置最近的服務器速度是最快的

這個詢問的過程依靠的是操作系統的Socket庫,你可能在很多編程語言中都見過這個庫的名字,因爲篇幅原因這裏不多介紹,感興趣的讀者可以自行了解。

我們有了IP地址就可以發送請求信息了,信息發送出去之後,服務器接收到信息,服務器根據HTTP協議對請求信息的定義規則來解析這個請求信息,然後服務器會返回給客戶端一個響應信息,裏面也有很多信息,裏面有我們很常見的狀態碼,比如我們常見的404錯誤,或者500錯誤,這都是狀態碼的一部分。響應信息還有服務器決定返回給客戶端的數據,除此之外響應信息還有很多很多東西,同時響應信息的格式也是由HTTP協議定義的,具體內容和格式我們不講,請讀者自行了解。

服務器給你返回了響應信息,你的瀏覽器就開始按照HTTP協議對響應信息的定義規則解析響應信息了,之後判斷是什麼文件,如果是HTML文件要顯示在哪兒,如果是JS文件一般要執行,是圖片文件一般要放在頁面上,最終就顯示在了你的頁面上。

 原文地址:https://www.yuque.com/realsky/anything/aa3yaf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章