在web瀏覽器窗口地址欄輸入想要訪問的網址URL。
以www.baidu.com為例,這是一個主機名也叫域名,而在整個互聯網中,路由器是以IP地址作為識別每個計算機的唯一標識,因此我們想要在互聯網中傳輸數據,就必須知道對方的IP地址。而DNS域名解析則幫助我們將主機名轉換成對應的IP地址。
在HTTP工作開始之前,web瀏覽器首先要通過網絡與web服務器建立連接,該連接是通過TCP來完成的。在TCP/IP協議模型中,HTTP屬于應用層協議,TCP屬于傳輸層協議,應用層協議HTTP工作之前首先要在傳輸層建立TCP連接,HTTP建立TCP連接通常使用端口號80。
瀏覽器向 Web 服務器發起一個 HTTP 請求,HTTP 協議是建立在 TCP 協議之上的應用層協議,其本質是在建立起的TCP連接中,按照HTTP協議標準發送一個索要網頁的請求。在這一過程中,會涉及到負載均衡等操作。
拓展:什么是負載均衡?
負載均衡,英文名為 Load Balance,其含義是指將負載(工作任務)進行平衡、分攤到多個操作單元上進行運行,例如 FTP 服務器、Web 服務器、企業核心服務器和其他主要任務服務器等,從而協同完成工作任務。負載均衡建立在現有的網絡之上,它提供了一種透明且廉價有效的方法擴展服務器和網絡設備的帶寬、增加吞吐量、加強網絡處理能力并提高網絡的靈活性和可用性。
負載均衡是分布式系統架構設計中必須考慮的因素之一,例如天貓、京東等大型用戶網站中為了處理海量用戶發起的請求,其往往采用分布式服務器,并通過引入反向代理等方式將用戶請求均勻分發到每個服務器上,而這一過程所實現的就是負載均衡。
服務器獲取到客戶端的 HTTP 請求后,會根據 HTTP 請求中的內容來決定如何獲取相應的文件,并將文件發送給瀏覽器,返回HTTP響應。
瀏覽器在接受到服務器的HTTP響應時,開始顯示頁面,首先解析HTML文件構建 DOM 樹,然后解析 CSS 文件構建渲染樹,等到渲染樹構建完成后,瀏覽器開始布局渲染樹并將其繪制到屏幕上。
在瀏覽器顯示HTML時,它會注意到需要獲取其他地址內容的標簽。這時,瀏覽器會發送一個獲取請求來重新獲得這些文件。比如我要獲取外圖片,CSS,JS文件等,類似于下面的鏈接:
圖片:http://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif
CSS式樣表:http://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css
JavaScript 文件:http://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
這些地址都要經歷一個和HTML讀取類似的過程。所以瀏覽器會在DNS中查找這些域名,發送請求,重定向等等。不像動態頁面,靜態文件會允許瀏覽器對其進行緩存。有的文件可能會不需要與服務器通訊,而從緩存中直接讀取,或者可以放到CDN中。
客戶端和服務器通過四次揮手終止 TCP 連接。
用原生js將用戶在文本框里面輸入的內容失實的輸出預覽出來。
前言
我們在做表單的時候,通常會使用jQuery的表單驗證功能。但是如果只是很簡單的表單驗證輸出預覽的話,我們可以使用原生js來解決這個問題。這次云落就遇到這個問題,所以在這里記錄一下。
情況介紹
這幾天云落在做一個積分充值的東西,其中遇到了一個需求,就是將用戶在文本框里面輸入的內容實時的顯示出來。當然我們還可以對這個內容進行進一步的計算。比如我們可以將用戶輸入的內容實時的以十倍的計算結果輸出來。原來我百度了一下,發現有很好的解決辦法。使用原生js來解決這個問題。當然了這里的是輸出并不需要服務器的支持,也就是說數據并不經過服務器,如果經過服務器的話,這個辦法就沒有用了。
代碼
<input type="number" placeholder="請輸入充值的RMB金額" name="pay_number" id="pay_number" onkeyup="javascript:senddata(this);"/> 元 <span id="outdiv"></span> //下方為js代碼,上方為HTML構造 <script type="text/javascript">function senddata(inputobj) { var obj; obj = document.getElementById("outdiv"); obj.innerHTML = '您將充值<strong><em><span style="color:#E53333;font-size:16px;">' + inputobj.value * 10 + '</span></em></strong>金幣'; }</script>
代碼很簡單,一看就懂,,不懂的話,會用就好。
演示
圖片演示
后語這幾天在做一個積分的玩意,就是付費可見,在線充值的玩意,不是什么高大上的功能,地址可以去看下:http://googlo.me/chongzhi.html
題圖來自unsplash
在瀏覽器中輸入網址,到頁面顯示出來,中間發生了什么?
1、查詢DNS,獲取域名對應的IP。
(1)檢查本地hosts文件是否有這個網址的映射,如果有,就調用這個IP地址映射,解析完成。
(2)如果沒有,則查找本地DNS解析器緩存是否有這個網址的映射,如果有,返回映射,解析完成。
(3)如果沒有,則查找填寫或分配的首選DNS服務器,稱為本地DNS服務器。服務器接收到查詢時:
(4)如果本地DNS服務器也失效:
2、客戶機發送HTTP請求報文:
(1)應用層:客戶端發送HTTP請求報文
(2)傳輸層:切分長數據,并確??煽啃?。
(3)網絡層:進行路由
(4)數據鏈路層:傳輸數據
(5)物理層:物理傳輸bit
3、服務器端經過物理層→數據鏈路層→網絡層→傳輸層→應用層,解析請求報文,發送HTTP響應報文。
4、客戶端解析HTTP響應報文
5、瀏覽器開始顯示HTML
6、瀏覽器重新發送請求獲取圖片、CSS、JS的數據。
7、如果有AJAX,瀏覽器發送AJAX請求,及時更新頁面。
——————————————————
微信搜索公眾號【輪子工廠】,后臺回復關鍵字:
1.回復【圖書】:獲取15本新手自學編程,零基礎入門經典學習教材;
2.回復【我要造輪子】:獲取100多本我根據知乎上面關于計算機問題的高贊回答里面的介紹整理出來的書籍;
3.回復【內推】:可幫你內推到大廠工作。
4.回復【C】:可免費獲得自制C語言教程。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。