一個HTTP請求的前世今生

網(wǎng)絡(luò)請求現(xiàn)在充斥這我們生活中的各個地方,不論是在瀏覽器里面搜索你想要的信息,還是用手機(jī)跟朋友的聊微信,亦或者使用智能電視觀看電視節(jié)目,網(wǎng)絡(luò)請求無時無刻不在為你服務(wù),那么你知道一個網(wǎng)絡(luò)請求的完整鏈路嗎?當(dāng)從你在瀏覽器里面輸入一個地址,它會經(jīng)過那些環(huán)節(jié)才會到你看到的樣子?

比如,我們在瀏覽器里面輸:https://restapi.amap.com/v3/place/detail?id=B0FFFAB6J2&key=6797e532620992299480cb05dbca7cff

瀏覽器會顯示如下信息

{
  "count": "1",
  "infocode": "10000",
  "pois": [
    {
      "parent": [],
      "distance": [],
      "pcode": "110000",
      "importance": [],
      "biz_ext": {
        "cost": [],
        "rating": []
      },
      "recommend": "0",
      "type": "商務(wù)住宅;樓宇;商務(wù)寫字樓",
      "photos": [
        {
          "title": "效果圖",
          "url": "http://store.is.autonavi.com/showpic/a9836f620749c34742cf1ab67dc98f08"
        },
        {
          "title": [],
          "url": "http://store.is.autonavi.com/showpic/53b11166a310a21470acde3a"
        },
        {
          "title": [],
          "url": "http://store.is.autonavi.com/showpic/53b11166a310a21470acde31"
        }
      ],
      "discount_num": "0",
      "gridcode": "5916739702",
      "typecode": "120201",
      "shopinfo": "0",
      "poiweight": [],
      "deep_info": {
        "deepsrc": []
      },
      "citycode": "010",
      "adname": "朝陽區(qū)",
      "indoor_src": "高德地圖",
      "children": [],
      "tel": [],
      "id": "B0FFFAB6J2",
      "tag": [],
      "event": [],
      "entr_location": "116.474531,39.993159",
      "indoor_map": "1",
      "email": [],
      "timestamp": "2020-08-21 11:35:30",
      "website": [],
      "address": "阜榮街10號",
      "adcode": "110105",
      "pname": "北京市",
      "biz_type": [],
      "cityname": "北京市",
      "postcode": [],
      "match": "0",
      "business_area": "望京",
      "indoor_data": {
        "cmsid": "TY000191_B0FFFAB6J2",
        "truefloor": [],
        "cpid": "B0FFFAB6J2",
        "floor": []
      },
      "childtype": [],
      "rich_content": [],
      "exit_location": [],
      "name": "首開廣場",
      "location": "116.473004,39.993306",
      "shopid": [],
      "navi_poiid": "J50F001020_342662",
      "groupbuy_num": "0"
    }
  ],
  "status": "1",
  "info": "OK"
}

這里我們以此為例分析下整個過程的發(fā)生,并延伸解讀相關(guān)的一些概念。

首先看下請求的整個大致鏈路


請求過程
  1. 用戶在瀏覽器中輸入想要訪問的地址
  2. 瀏覽器需要從緩存或者DNS中獲取要鏈接的IP地址,然后跟獲取到的IP建立連接,并發(fā)送請求
  3. 現(xiàn)在一般大公司都會有統(tǒng)一接入層,我廠就會由統(tǒng)計接入層來處理https證書,轉(zhuǎn)發(fā)流量等
  4. 轉(zhuǎn)發(fā)后的流量會到請求的實際處理服務(wù)器,然后將數(shù)據(jù)交由監(jiān)聽端口的服務(wù)進(jìn)行處理,這里根據(jù)語言或者實現(xiàn)的不同有Nginx、Tomcat等
  5. 服務(wù)的話以Java為例,現(xiàn)在主要流行的是Spring體系,接到請求后會做請求的Dispatch,交由一個線程進(jìn)行處理,使用Mybatis或其他ORM框架從數(shù)據(jù)庫中讀取數(shù)據(jù),處理成指定的數(shù)據(jù)格式并返回
  6. 數(shù)據(jù)庫層現(xiàn)在多使用MySql提供數(shù)據(jù)的存儲、查詢等,當(dāng)然也可能會使用Redis之類的NoSql進(jìn)行緩存
  7. 在這些都做完之后,會將結(jié)果層層返回,直至用戶的瀏覽器端,瀏覽器再根據(jù)http協(xié)議解析數(shù)據(jù),進(jìn)行最終的結(jié)果呈現(xiàn)

這里主要寫了我認(rèn)為比較重要的幾個節(jié)點,可以看到這個鏈路還是挺長的,而且這還少簡化了很多細(xì)節(jié),中間會涉及到很多技術(shù),后續(xù)的文章也根據(jù)這些節(jié)點來展開,盡量闡述明白。

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

相關(guān)閱讀更多精彩內(nèi)容

  • OSI七層模型介紹,TCP/IP模型介紹,HTTP協(xié)議格式介紹 OSI七層模型 應(yīng)用層------可見的終端(瀏覽...
    佼佼者M(jìn)r閱讀 550評論 0 1
  • 上一篇Okhttp主流程源碼淺析(1)分析到任務(wù)調(diào)度方面,接著把剩下的主流程分析. 當(dāng)一個任務(wù)被執(zhí)行起來,會調(diào)用g...
    wenou閱讀 323評論 0 0
  • 網(wǎng)絡(luò)優(yōu)化系列專題,聊一聊面對復(fù)雜多變的移動網(wǎng)絡(luò),我們需要掌握哪些網(wǎng)絡(luò)基礎(chǔ)知識,以及該如何做好網(wǎng)絡(luò)優(yōu)化這項工作。 網(wǎng)...
    godliness閱讀 802評論 1 2
  • 每個時代,都不會虧待會學(xué)習(xí)的人。 大家好,我是 yes。 HTTP 協(xié)議在當(dāng)今的互聯(lián)網(wǎng)可謂是隨處可見,一直默默的在...
    yes的練級攻略閱讀 1,057評論 0 19
  • 正式資料“少”、網(wǎng)上資料“雜”、權(quán)威資料“難”。 HTTP 協(xié)議在我們的生活中隨處可見,打開手機(jī)或者電腦,只要你上...
    席小超閱讀 381評論 3 0

友情鏈接更多精彩內(nèi)容