瀏覽器的乙個請求從傳送到返回

2021-08-27 03:19:06 字數 1408 閱讀 5479

1、先從網路模型層面:

client (瀏覽器)與 server 通過 http 協議通訊,http 協議屬於應用層協議,http 基於 tcp 協議,所以 client 與 server 主要通過 socket 進行通訊;

而 tcp 屬於傳輸層協議、如果走 https 還需要會話層 tls、ssl 等協議; 傳輸層之下網路層,這裡主要是路由協議 ospf 等進行路由**之類的。再向下資料鏈路層主要是 arp、rarp 協議完成 ip 和 mac 位址互解析,再向下到最底層物理層基本就是 ieee 802.x 等協議進行資料位元流轉成高低電平的的一些定義等等;

當瀏覽器發出請求,首先進行資料封包,然後資料鏈路層解析 ip 與 mac 位址的對映,然後上層網路層進行路由查表路由,通過應用層 dns 協議得到目標位址對應的 ip ,在這裡進行 n 跳的路由尋路;而傳輸層 tcp 協議可以說下比較經典的三次握手、四次分手的過程和狀態機,這裡放個圖可以作為參考:

2、應用層方面:

資料交換主要通過 http 協議, http 協議是無狀態協議,這裡可以談一談 post、get 的區別以及 restful 介面設計,然後可以講伺服器 server 模型 epoll、select 等,接著可以根據實際經驗講下 server 處理流程,比如我: server 這邊 nginx 拿到請求,進行一些驗證,比如黑名單攔截之類的,然後 nginx 直接處理靜態資源請求,其他請求 nginx **給後端伺服器,這裡我用 uwsgi, 他們之間通過 uwsgi 協議通訊,uwsgi 拿到請求,可以進行一些邏輯, 驗證黑名單、判斷爬蟲等,根據 wsgi 標準,把拿到的 environs 引數扔給 django ,django 根據 wsgi 標準接收請求和 env, 然後開始 start_response ,先跑 django 相關後台邏輯,django 拿到請求執行 request middleware 內的相關邏輯,然後路由到相應 view 執行邏輯,出錯執行 exception middleware 相關邏輯,接著 response 前執行 response middleware 邏輯,最後通過 wsgi 標準構造 response, 拿到需要返回的東西,設定一些 headers,或者 cookies 之類的,最後 finish_response 返回,再通過 uwsgi 給 nginx ,nginx 返回給瀏覽器。

談完後 cto 根據我說的一些細節提出了一些問題,最後當時就談了 offer ,cto 說不走 hr 那邊了直接和我談,比較意外的是 offer 給的比我自己要的還高 5k。對於第一次找工作的我來說當時滿心激動。

最後大概說說環境:公司在五道口一棟寫字樓內容,規模還算比較大,聽 cto 談做的事情也比較有意思,有機器學習、大資料等等 ( 主要是處理各種初高中學科的題目,涉及到文字識別深度學習等等,當然我如果進去肯定要從業務寫起 ),包午餐、下午茶之類的其他我就不太清楚了,因為下午就走了,不過公司好像是每週六天班。公司發展感覺還是比較高速,感興趣的同學可以去試試。

瀏覽器的乙個請求從傳送到返回經歷了什麼

client與server通過http協議傳輸資料。http hyper text transfer protocol 協議是無狀態協議,基於tcp協議,屬於應用層協議。dns domain name system 網域名稱系統 主要的功能就是將不容易記住的 ip address ip位址 轉換成易...

瀏覽器的乙個請求從傳送到返回都經歷了什麼

我大概講下我的答案 1 先從網路模型層面 client 瀏覽器 與 server 通過 http 協議通訊,http 協議屬於應用層協議,http 基於 tcp 協議,所以 client 與 server 主要通過 socket 進行通訊 而 tcp 屬於傳輸層協議 如果走 https 還需要會話層...

瀏覽器傳送乙個請求到返回乙個頁面的具體過程

第一步,解析網域名稱,找到ip 瀏覽器會快取dns一段時間,一般2 30分鐘不等,如果有快取,直接返回ip,否則下一步。快取中無法找到ip,瀏覽器會進行乙個系統呼叫,查詢hosts檔案。如果找到,直接返回ip,否則下一步。進行1 和2 本地查詢無果,只能借助於網路,路由器一般都會有自己的dns快取,...