www的概念與組成結構
1.www的概念
www是world wide web的縮寫,是一個資料空間,這個空間中,有用的事物被稱為“資源”,並由全球“統一資源定位符”標識。這些資源通過超文本傳輸協議(HTTP)傳送給使用者,而后者通過單擊連接來獲取資源。
2.www的組成
統一資源定位符(URL):一般格式為 <協議>://<主機>:<端口> / <路徑>
超文本傳輸協議(HTTP):應用層協議,使用TCP連接進行可靠的傳輸。
超文本標記語言(HTML):用一些預定的標記來描述頁面上的各種信息
萬維網的工作過程
以訪問清華大學的網站為例:
1)瀏覽器分析鏈接指向頁面的URL (https://www.tsinghua.edu.cn/publish/thu2018/index.html)
2)瀏覽器向DNS請求解析www.tsinghua.edu.cn的IP地址
3)域名系統DNS解析出清華大學服務器的IP地址
4)瀏覽器知道 IP 地址后,通過 TCP 向服務器發送連接請求
5)萬維網站點都有一個服務器進程,它不斷地監視TCP的端口(默認80),一旦監聽到請求后,建立連接
6)瀏覽器發出HTTP請求:/publish/thu2018/index.html
7) 服務器通過 HTTP響應把文件 index.html 發送給瀏覽器
8)TCP連接釋放
9)瀏覽器解釋文件 index.html,並把頁面顯示給用戶
HTTP
http是無狀態的,簡化了服務器的設計。
http采用了 TCP 作為傳輸層協議,從而保證了數據的可靠傳輸。
HTTP server 1.0
單進程,一旦阻塞就完了
HTTP server 2.0:多進程
當接收連接以后,創建子進程來接管新的socket,這樣主進程就不會阻塞了,這樣可以接受新的連接了。
HTTP server 3.0:select模型
在 2.0版本中,采用多進程來解決並發的問題,但是進程需要消耗大量的系統資源,每次切換進程更是麻煩。
一個socket 連接就是一個所謂的文件描述符,用“進程”這個重量級的東西來表示它有點浪費。
從前阻塞是因為 瀏覽器還沒有把數據發過來,而http迫不及待的想讀,就被阻塞了,單進程情況下,一旦阻塞,什么事兒都干不了。
現在http server每次把 一批socket的編號傳給操作系統,操作系統可以在后台檢查 這些socket,一旦發現 可以讀寫了,就把對應的socket 做個標記,http server就被喚醒了。
聯想:有點類似中斷系統,早期的時候輪循,后來改為中斷系統。
HTTP server 4.0:epoll模型
在 3.0版本的基礎上微微改動,操作系統直接返回需要處理的 socket的編號,http server不需要挨個遍歷。