不管網路架構如何變化,但始終有一些固定不變的原則需要遵守。
1,網際網路上所有資源都要用乙個url來表示。url就是統一資源定位符。
2,必須基於http協議與服務端互動。
如何發起乙個http請求?
發起乙個http請求和建立乙個socket連線區別不大,只不過outputstream,write寫的二進位制位元組資料格式要符合http協議。
瀏覽器在建立socket之前,必須根據位址列裡輸入的url的網域名稱dns解析出ip位址,再根據這個ip位址和預設80埠與遠端伺服器建立socket連線,然後瀏覽器根據這個url組裝成乙個get型別的http請求頭,通過outputstream.write傳送到目標伺服器,伺服器等待inputstream.read返回資料,最後斷開這個連線。
一句話,發起乙個http請求的過程就是建立乙個socket通訊的過程。
要理解http協議,最重要的就是熟悉http協議中的http header,http header控制著網際網路上成千上萬的使用者的資料的傳輸。最關鍵的是,它控制著使用者瀏覽器的渲染行為和伺服器的執行邏輯。例如,當伺服器沒有使用者請求的資料就會返回乙個404狀態碼,告訴瀏覽器沒有要請求的資料,通常瀏覽器就會展示乙個非常不願意看到的該頁面不存在的錯誤資訊。
常見的http請求頭
accept-charset 用於指定客戶端接受的字符集
accept-encoding 用於指定可接受的內容編碼
accept-language用語指定一種自然語言
host 用於指定被請求資源的internet的主機和埠號
user-agent 客戶端將它的作業系統,瀏覽器和其他屬性告訴伺服器
connection 當前連線是否保持
常見的http響應頭
server 使用的伺服器名稱
content-type 用來指明傳送給接收者的實體正文的**型別
content-encoding 與請求報頭accept-encoding對應,告訴瀏覽器伺服器採用的是什麼壓縮編碼
content-language 描述了資源所用的自然語言
conent-length 描述了實體正文的長度
keep-alive 保持連線的時間
常見的http轉態碼
302 臨時跳轉,跳轉的位址通過location指定
403 伺服器收到請求,但是拒接提供服務
dns網域名稱解析過程
第1步,瀏覽器會檢查快取中有沒有這個網域名稱對應的解析過的ip位址,如果快取中有,這個解析過程就結束。
第2步,如果使用者的瀏覽器快取中沒有,瀏覽器會查詢作業系統中是否有這個網域名稱對應的dns解析結果。
第3步,作業系統會把這個網域名稱傳送給這裡設定的ldns,也就是本地區的網域名稱伺服器(ldns).
第4步,如果ldns仍然沒有命中,就直接到root server網域名稱伺服器請求解析。
第5步,根網域名稱伺服器返回給本地網域名稱伺服器乙個所查詢域的主網域名稱伺服器位址
第6步,本地網域名稱伺服器再向上一步返回的gtld伺服器傳送請求。
第7步,接受請求的gtld伺服器查詢並返回此網域名稱對應的name server網域名稱伺服器的位址,
這個name server通常就是你註冊的網域名稱伺服器,假如你在某個網域名稱服務提供商申請的網域名稱,那麼這個網域名稱解析任務就由這個網域名稱提供商的伺服器來完成。
第8步,name server 網域名稱伺服器會查詢儲存的網域名稱和ip的對映關係表,
第9步,返回該網域名稱對應的ip和ttl值,local dns server會快取這個網域名稱和ip的對應關係
第10步,把解析的結果返回給使用者
cdn工作機制
cdn也就是內容分布網路(conent delivery network),它是構築在現有internet上的一種先進的
流量分配網路。其目的是通過現有的internet中增加一層新的網路架構。
有這樣乙個比喻:cdn=映象(mirror)+快取(cache)+整體負載均衡(gslb).。
目前cdn都以快取**中的靜態資料為主,如css,js和靜態頁面等資料。
深入 Web 請求過程
b s 架構的好處 大多數傳統的網際網路應用程式採用長連線的互動模式,而http 協議採用無狀態的短連線的通訊方式。一次請求就完成了一次資料互動,通常也對應乙個業務邏輯。網路架構如下 由這個伺服器決定返回預設的資料資源給訪問的使用者 需要遵守的原則發起乙個 http 請求就是建立乙個 socket ...
第一章 深入Web請求過程
1.3.2 瀏覽器快取機制 1.請求頭欄位 pragma no cache 和 cache control no cache 優先順序高 用於指定快取機制在整個請求 響應鏈中必須服從的指令 2.expires 日期時間 瀏覽器在請求之前檢查整個字段,如果時間過期,就重新傳送請求 3.last mod...
Web請求過程
當使用者在瀏覽器中輸入乙個url 如www.baidu.com 進行網頁瀏覽時,將會發生一系列的操作。大致流程如下 1 網域名稱解析 當使用者輸入網域名稱後,需要將網域名稱轉換成正確的ip位址,才能夠訪問web伺服器。首先會查詢本地網域名稱hosts檔案,若存在對應網域名稱的ip位址,就直接使用。若...