1. 程式人生 > >Python——問一個web程式執行的流程

Python——問一個web程式執行的流程

在瀏覽器位址列中輸入 www.baidu.com,我們最終能夠看到百度的首頁,在這個過程中都發生了什麼?

簡單的概括這個過程的流程其實就只有兩句話:客戶端傳送請求,伺服器返回響應。
這兩句話是屬於業界大牛的回答,身為一個菜雞,我可不敢在面試的時候這麼說,色即是空,空即是色不屬於我,我還是個小和尚。
首先,會存在兩個名詞,客戶端和伺服器。
什麼是客戶端呢,比如(瀏覽器,App,爬蟲,視覺化測試工具),爬蟲的本質是一串程式碼。我還沒有學習到。
首先我們會在位址列中輸入URL地址,借用百度粑粑:www.baidu.com. 在這個過程中雖然我們只是輸入瞭如上的地址。但是,瀏覽器會判斷並補全我們的協議,這裡就想起來了URL協議的組成部分(協議部分,域名,資源路徑),瀏覽器為什麼要判斷我們的協議是http還是https呢,他倆有沒有什麼主要區別呢?http埠號是80,https是443埠號。
1.之後會先訪問DNS域名解析伺服器,裡面存放的是具體的URL地址和ip地址的對映關係,類似於字典形式的儲存,訪問網站本質上都是通過ip,但是不好記憶,域名就是這麼來了。但是DNS這個玩意是誰把這個玩意放進去的呢,這裡我瞭解的是一般都是網路執行商完成的。
補充:世界上有13個根域名直譯器,中國一臺沒有,你們快點加油啊!
2.獲取到百度的ip地址,瀏覽器會直接通過ip地址向百度伺服器傳送請求:請求報文,包括請求行,請求頭,請求協議,請求引數,請求方法(主要是四種GET,POST,PUT,DELETE對應的資料庫的增刪改查),伺服器會新接收請求報文,並進行處理,同時還要返回相應報文,據說這就是我們以後web的工作,就是寫介面(接收引數,檢查引數,業務處理,返回資料四部總結),調藉口(呼叫別人實現了的功能),介面是什麼呢?相當於是一個門口,可以是一個函式,一個類,一個API,相當於是一個數據互動的通道。
3.在伺服器的後面有一個強大的支援就是資料庫,用來我們查詢資料,在完成了上面的操作之後,伺服器會生成相應報文,在這裡,如果客戶端訪問的是靜態資源(html,css,image,js)直接返回響應,但是如果是動態資源請求,後端伺服器會根據引數的不同,返回不同的響應和狀態碼等引數。
請求引數是什麼:就比如你在百度首頁上輸入一個搜尋,ex:北京天氣,這個就是引數。url地址中,?後面的,&進行分割的,=進行傳值的就是查詢字串,通過這個查詢字串去返回不同的響應。
據說,在回答一個流程至少要回答5步以上,最好是10步,然後才能證明你對這個東西成功掌握。恐怕我還沒有幾個,任重而道遠啊。