深入分析java Web技術內幕 - web請求(1)

如何發(fā)起一個htpp請求

簡單的說,發(fā)起一個HTTP請求的過程就是建立一個Socket通信的過程,且HTTP請求的數據格式要符合htpp協議的規(guī)定。

了解http協議中的header

列舉幾個常見的屬性,詳見 developer.mozilla - HTTP Headers

請求頭 Request Header 說明
Accept-Charset 用于指定客戶端接受的字符集
Accept-Encoding 可接受的內容編碼
Accept-Language 自然語言 比如zh-cn
Host 指定被請求資源的Internet主機和端口號
User-Agent 客戶端將它的操作系統、瀏覽器和其他屬性告訴服務器
Connection 當前連接是否保持
Referer 首部包含了當前請求頁面的來源頁面的地址,即表示當前頁面是通過此來源頁面里的鏈接進入的。服務端一般使用 Referer 首部識別訪問來源,可能會以此進行統計分析、日志記錄以及緩存優(yōu)化等
Pragma no-cache
Cache-Control no-cache

ctrl + F5 強制頁面刷新,會在請求頭中增加這兩個參數,或者改變參數值為no-cache。此外,還有一種前端編程請求解決緩存的方法,在ajax請求中加入時間戳,保證每次請求的URL和參數不一致,避免了瀏覽器檢測到相同的請求,從而使用緩存數據

響應頭Request Header 說明
Server 使用的服務器名稱
Content-type 指明發(fā)送給接受者的實體正文的媒體類型,如Content_Type:text/html;charset = GBK
Content-Encoding 告訴瀏覽器服務端采用的壓縮編碼
Content-Language 描述了資源所用的自然語言
Content-Length 指明實體正文的長度
Keep-Alive 保持連接的時間

HTTP請求過程

簡要介紹用戶在瀏覽器輸入網址之后看到頁面的過程

  1. 用戶輸入網址即URLm.itdecent.cn

  2. DNS將域名解析成IP地址

    • 瀏覽器從瀏覽器的緩存中查找解析過的域名對應的IP,如果找到,直接返回IP地址,后續(xù)步驟不執(zhí)行

    • 如果瀏覽器緩存中未找到,則從瀏覽器所安裝在的終端(PC電腦)緩存中尋找,windows操作系統C:\Windows\System32\drivers\etc\hosts文件中,可配置域名與對應的IP地址,如果找到,直接返回IP地址,后續(xù)步驟不執(zhí)行

    • 見網絡3D結構圖


      DNS解析過程圖.png

      名詞解釋
      Local DNS Server:本地域名解析服務器,比如說,學校的網絡,會在學校有一臺域名解析服務器;家庭網絡,運營商(電信、聯通)會有域名解析服務器
      Root DNS Server:頂級域名服務器,全球只有13臺,大部分在美國
      gTLD Servr:國際頂尖域名服務器,如.com .cn .org等
      Name Server:域名直接注冊的地方,比如阿里云騰訊云域名注冊

  3. 用戶瀏覽器根據IP地址向服務器發(fā)起請求

  4. 服務器端發(fā)回請求響應數據給瀏覽器

  5. 數據返回后,瀏覽器解析數據發(fā)現還有一些靜態(tài)的資源(css,js,img),然后再次發(fā)起請求

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 非常好的文章,怕博主刪除,再也找不到這么好的文章了,所以復制了一份,博主是2016年寫,但是是到現在為止看到的,思...
    吭聲_cfdc閱讀 2,201評論 0 4
  • 1. 基礎知識 1.1 3種常見的計算機體系結構劃分 OSI分層(7層):物理層、數據鏈路層、網絡層、傳輸層、會話...
    Mr希靈閱讀 20,117評論 6 120
  • “DNS”這個單字,想必那些經常使用計算機,尤其是經常手動配置IP和DNS服務器的人是非常熟悉的。也許其中的大部...
    Ulrich蚊子閱讀 2,898評論 0 6
  • 我家表侄侯留兵, 十年寒窗成了功。 南方工作六七載, 領回香港女花容。 今日結婚成大禮, 表弟弟妹喜盈盈。 姨母九...
    韓翔閱讀 322評論 2 2
  • MySQL使用SELECT語句的WHERE子句指定搜索條件。 使用WHERE子句 數據庫表一般包含大量的數據,有時...
    gyl_coder閱讀 1,438評論 0 1

友情鏈接更多精彩內容