我們一般通過URL來訪問一個網站,那麼當瀏覽器在我們輸入URL之後到底發生了什麼,網站頁面是怎麼呈現的?
其實我們訪問的網站都是具體在某個伺服器上的檔案資源 ( resource )。當我們輸入URL的時候,實際上我們是作為客戶端 ( client ) 發出了請求。這種請求就是HTTP 協議。超文字傳輸協議(約定俗成,實際上是超文字轉移)。伺服器根據請求返回指定資訊。HTTP版本從0.9~2.0,當前主流的是1.0和1.1 。
網路基礎TCP/IP
其實,我覺得這些協議本質上都是為了解決通訊問題而存在的。TCP/IP是各類協議的總稱。協議中存在各式各樣的內容。
TCP/IP協議族結構:應用層、傳輸層、網路層、鏈路層。
- 應用層,決定了向使用者提供服務通訊的活動。FTP 、 DNS、 HTTP也屬於這一層。
- 傳輸層,顧名思義,提供網路連結中的兩臺計算機的資料傳輸。 TCP 、UDP
- 網路層,處理網路上流動的資料包(最小的單位)。規定了傳輸路線到達目的計算機。
- 鏈路層,處理硬體連結網路的部分。
當客戶端傳送HTTP請求,這時候是處於應用層的,在傳輸層,進行對資料的分割,所以它出來的是IP資料包,並且在分割好的報文上進行標記序號和埠號,然後繼續往下走。網路層理給報文裝上了目的地,一般是MAC地址,cs專業的都知道,mac地址是唯一的。那麼到網路層,資料資訊就像打上鋼印的豬肉一樣,具有所在地和所要銷往之處了。伺服器就是一層層的逆向操作。這樣就可以接收到資料了。
IP、TCP、DNS
IP協議
看到上面的圖,就知道IP協議屬於網路層。這裡的IP 是協議,不是我們常說的IP地址。IP協議的作用是把各種資料包送到目的地。需要準確的送到某個目的地。需要的是IP地址和MAC地址,IP可變換MAC地址不變,ARP 可以根據IP地址查出MAC地址。因為MAC地址是唯一的,那麼為什麼還需要IP地址呢?看到了下圖就明白了。
因為實際上網路環境很複雜,不像是在區域網裡。路由器可以進行中轉操作。
TCP可靠的協議
傳輸層的TCP協議。傳輸層把報文分割,可靠性主要體現在閉著眼睛都要考察的三次握手策略。如圖所示,如果這個過程沒有完成,則客戶端再次傳送。
DNS
DNS(Domain Name System )也是在應用層。提供域名到IP解析作用。所以現在應該明白了吧,我們輸入到域名原來是通過DNS解析成IP。
各種協議和HTTP關係
看著圖能夠把各個層,理解清楚。整個網路發生的過程就很明瞭了。
URI 和URL
URI 記得以前唸書的時候老師專門強調過這個,統一資源識別符號。URI就是某個協議方案表示的資源定位的識別符號。http or ftp 只是一種定位資源的方式,而非具體的定位位置。
URL 可以理解資源在網路上的位置。
此圖為絕對的URI格式
如若有錯誤之處,看官多多指正,隨手點個讚唄,親。另外我的微信公眾號也會慢慢釋出前端的東西,希望學習前端的小夥伴可以關注一波moomoocode.