九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
整天寫(xiě)CRUD沒(méi)勁,寫(xiě)了個(gè)Web服務(wù)器

大家好,我是軍哥

我們學(xué)知識(shí)大致都會(huì)經(jīng)歷三個(gè)階段。第一階段是what,了解一個(gè)東西是什么,第二階段是how,了解一個(gè)東西如何使用。第三階段是why,為什么要這么用。當(dāng)你達(dá)到第三層境界才能說(shuō)明你對(duì)這個(gè)東西理解透徹。

同理,對(duì)于一個(gè)做web開(kāi)發(fā)的程序員來(lái)說(shuō),沒(méi)有什么比自己寫(xiě)一個(gè)web服務(wù)器或web框架更能了解web編程的本質(zhì)了。

這個(gè)系列是我的一位讀者朋友江湖十年寫(xiě)的,他過(guò)來(lái)問(wèn)我可不可以投稿在公眾號(hào)??赐曛缶土ⅠR答應(yīng)了。大家都喜歡看沒(méi)營(yíng)養(yǎng)的爽文,雖然這種干貨型的技術(shù)文看的人少,但是能幫助對(duì)web開(kāi)發(fā)感興趣的人就值了。

系列文章工作分為8章,除了這篇,次條到第8條都是,你也不可能一天看到,先收藏著,看看你能不能一周也寫(xiě)一個(gè)web服務(wù)器出來(lái)。

教程簡(jiǎn)介

本教程使用 Python 語(yǔ)言實(shí)現(xiàn)了一個(gè)簡(jiǎn)易版的 Web 服務(wù)器,從 Web 開(kāi)發(fā)基礎(chǔ)開(kāi)始講解,不使用任何第三方庫(kù)或框架,通過(guò)實(shí)現(xiàn)一個(gè) Todo List 應(yīng)用來(lái)還原 Web 開(kāi)發(fā)的本質(zhì)。

教程所需基礎(chǔ)

Python、HTML、CSS 語(yǔ)法基礎(chǔ),對(duì) Web 開(kāi)發(fā)基本概念有所了解。

教程面向讀者

本教程為入門(mén)級(jí),主要適合準(zhǔn) Python Web 開(kāi)發(fā)者或?qū)?Web 開(kāi)發(fā)理解不是很透徹的同學(xué)。

教程特點(diǎn)

本教程并不會(huì)使用如 Django、Flask 等常見(jiàn) Python Web 開(kāi)發(fā)框架,也不會(huì)使用任何其他第三方庫(kù),甚至?xí)梦募?lái)替代數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)。其目的是為了簡(jiǎn)化一些對(duì)初學(xué)者來(lái)說(shuō)看似復(fù)雜的概念,使用更少的依賴(lài)從零開(kāi)發(fā)一個(gè) Python Web 服務(wù)器。以便讀者能夠更深刻的理解 Web 開(kāi)發(fā)。

前言

Web 開(kāi)發(fā)技術(shù)一直在高速發(fā)展,各種新奇概念與框架層出不窮,尤其在 Web 前端領(lǐng)域,幾年前還是 jQuery 的天下,而如今在 Vue、React 等框架面前也顯得廉頗老矣。

不過(guò),雖然各種框架技術(shù)日新月異,但 Web 開(kāi)發(fā)的核心概念與本質(zhì)依舊不曾改變,本教程將通過(guò)一個(gè) Todo List 應(yīng)用帶你探索 Web 開(kāi)發(fā)基本原理,只有真正明白了 Web 開(kāi)發(fā)的核心基礎(chǔ),才能更輕松的應(yīng)對(duì)新框架與技術(shù)。

Web 開(kāi)發(fā)簡(jiǎn)介

我們常見(jiàn)的軟件種類(lèi)有桌面軟件、移動(dòng) APP以及網(wǎng)頁(yè)應(yīng)用等,Web 開(kāi)發(fā)通常就是在開(kāi)發(fā)網(wǎng)頁(yè)應(yīng)用。桌面軟件、移動(dòng) APP 需要先安裝在 Windows、Android 等宿主機(jī)才能使用,每個(gè)客戶(hù)端每次升級(jí)更新軟件時(shí)都需要重新下載并安裝。而 Web 應(yīng)用所依賴(lài)的客戶(hù)端是瀏覽器,實(shí)際數(shù)據(jù)都存儲(chǔ)在遠(yuǎn)程服務(wù)器端,如果應(yīng)用需要升級(jí),那么只需要升級(jí)服務(wù)器,所有用戶(hù)通過(guò)瀏覽器打開(kāi)網(wǎng)頁(yè)時(shí)都將實(shí)時(shí)獲取最新的數(shù)據(jù),這也是 Web 開(kāi)發(fā)能夠流行起來(lái)的很重要的原因。

HTTP 簡(jiǎn)介

要學(xué)習(xí) Web 開(kāi)發(fā),首先要明白什么是 HTTP 協(xié)議,因?yàn)?Web 開(kāi)發(fā)就是建立在 HTTP 協(xié)議之上的。

在瀏覽器地址欄輸入網(wǎng)址 https://www.jd.com/ 將得到京東商城首頁(yè)。我們?cè)跒g覽器頁(yè)面中看到的所有數(shù)據(jù)都是服務(wù)器通過(guò) HTTP 協(xié)議傳輸過(guò)來(lái)的。



HTTP 協(xié)議中文叫超文本傳輸協(xié)議,可以拆分成三部分理解:超文本、傳輸、協(xié)議。

所謂超文本就是 HTML、CSS、圖片、視頻等內(nèi)容的集合。傳輸既超文本內(nèi)容從瀏覽器(客戶(hù)端)到服務(wù)器或從服務(wù)器到瀏覽器之間的傳輸過(guò)程。而協(xié)議是規(guī)范,大家約定俗成的規(guī)約既是協(xié)議。

HTTP 基于請(qǐng)求 —— 響應(yīng)模型,瀏覽器向服務(wù)器的某個(gè)網(wǎng)址發(fā)起請(qǐng)求,服務(wù)器響應(yīng)瀏覽器對(duì)應(yīng)的資源。以下就是一個(gè) HTTP 請(qǐng)求 —— 響應(yīng)的模型圖。

左側(cè)是瀏覽器,右側(cè)是服務(wù)器。瀏覽器和服務(wù)器之間通訊是通過(guò)文本傳輸來(lái)完成的。瀏覽器發(fā)起請(qǐng)求時(shí)發(fā)送的數(shù)據(jù)叫作請(qǐng)求報(bào)文,得到的服務(wù)端響應(yīng)的數(shù)據(jù)叫作響應(yīng)報(bào)文。下圖示展示了請(qǐng)求報(bào)文和響應(yīng)報(bào)文的格式。

根據(jù)圖示可以看到,無(wú)論是請(qǐng)求報(bào)文還是響應(yīng)報(bào)文基本都分為四個(gè)部分,每個(gè)部分之間以 \r\n 作為換行分隔符。

請(qǐng)求報(bào)文包含請(qǐng)求行、報(bào)文首部、空行、報(bào)文主體四個(gè)部分。

響應(yīng)報(bào)文包含狀態(tài)行、報(bào)文首部、空行、報(bào)文主體四個(gè)部分。

在請(qǐng)求報(bào)文中,請(qǐng)求行和報(bào)文首部可以看成一個(gè)整體叫作請(qǐng)求頭,報(bào)文主體又叫請(qǐng)求體。

在響應(yīng)報(bào)文中,狀態(tài)行和報(bào)文首部可以看成一個(gè)整體叫作響應(yīng)頭,報(bào)文主體又叫響應(yīng)體。

如何在 Chrome 瀏覽器中查看請(qǐng)求與響應(yīng)的報(bào)文信息呢?瀏覽器頁(yè)面任意位置點(diǎn)擊鼠標(biāo)右鍵 —— 選擇檢查,就能夠在頁(yè)面底部顯示 Chrome 開(kāi)發(fā)者工具。點(diǎn)擊 Elements 選項(xiàng)卡,你就能夠看到網(wǎng)頁(yè)的源代碼,也就是服務(wù)器的響應(yīng)數(shù)據(jù)。

點(diǎn)擊 Network 選項(xiàng)卡,就能夠看到所有請(qǐng)求、響應(yīng)記錄。


每一行記錄即為一個(gè)請(qǐng)求,為什么只是在地址欄里輸入了 https://www.jd.com/ 會(huì)出現(xiàn)這么多請(qǐng)求呢?我們知道,HTML 中不止可以寫(xiě)簡(jiǎn)單的文本標(biāo)簽,還可以寫(xiě) imgvideo 等多媒體標(biāo)簽加載圖片或視頻,以及 linkscript 等標(biāo)簽來(lái)加載 CSS 樣式 和 JavaScript 腳本。瀏覽器在得到服務(wù)器的第一個(gè)響應(yīng)時(shí),會(huì)檢查服務(wù)器返回的 HTML 頁(yè)面,如果頁(yè)面源碼中包含這些特殊的標(biāo)簽,瀏覽器就會(huì)針對(duì)每一個(gè)標(biāo)簽專(zhuān)門(mén)發(fā)起一次請(qǐng)求。

點(diǎn)擊第一個(gè)請(qǐng)求,在右側(cè)將會(huì)顯示該請(qǐng)求及響應(yīng)信息。找到 Request Headers 點(diǎn)擊右側(cè)的 view source,將會(huì)看到此次請(qǐng)求的請(qǐng)求頭信息。

第一行 GET / HTTP/1.1 即為請(qǐng)求行。它由三個(gè)部分組成:請(qǐng)求方法、請(qǐng)求地址、HTTP 協(xié)議版本號(hào),分別對(duì)應(yīng) GET/、HTTP/1.1。每個(gè)部分之間通過(guò)一個(gè)空格隔開(kāi)。

HTTP 請(qǐng)求方法有很多,不過(guò)最常見(jiàn)的只有四種:POST、DELETE、PUT、GET 分別對(duì)應(yīng)增、刪、改、查四個(gè)操作。由于我們只是想查看京東首頁(yè),所以這里發(fā)送的是 GET 請(qǐng)求。

請(qǐng)求地址 / 代表首頁(yè),你可能看過(guò)如 /index/index.html 等類(lèi)似的地址,其實(shí)這只是一個(gè)約定俗成的做法,它們都代表首頁(yè)。

現(xiàn)在最常用的 HTTP 版本即為 1.1。雖然 HTTP 2.0 早已發(fā)布,不過(guò)目前來(lái)說(shuō)普及率依舊不是很高。所以現(xiàn)在大可不必糾結(jié)版本的問(wèn)題。

從第二行開(kāi)始,所有內(nèi)容都是諸如 Key: Value 這種鍵值對(duì)的形式組合成的,我們管每一組鍵值對(duì)都叫作請(qǐng)求首部字段,這些首部字段加在一起就是請(qǐng)求的報(bào)文首部,一般會(huì)直接叫請(qǐng)求頭。

其中最重要的請(qǐng)求首部字段就是 Host: www.jd.com 這一行,因?yàn)橹挥羞@一行是 HTTP 協(xié)議明確規(guī)定為必傳的首部字段,其他請(qǐng)求首部字段都是非必傳字段。Host: www.jd.com 的作用是當(dāng)服務(wù)器上部署了多個(gè)網(wǎng)站,那么服務(wù)器就會(huì)根據(jù)這一行的信息來(lái)確定瀏覽器到底想訪問(wèn)哪個(gè)網(wǎng)站。

Connection: keep-alive 代表長(zhǎng)連接,User-Agent 標(biāo)識(shí)了瀏覽器信息,Accept 代表瀏覽器能夠接收的報(bào)文格式,其他的請(qǐng)求首部字段可以等我們用到了再做說(shuō)明。

在 HTTP 請(qǐng)求報(bào)文中,還缺少一個(gè)空行和請(qǐng)求體是我們目前沒(méi)有看到的。實(shí)際上雖然我們是點(diǎn)擊瀏覽器的 view source 功能來(lái)查看請(qǐng)求報(bào)文信息,但它仍然是瀏覽器處理過(guò)的數(shù)據(jù),并不是原始數(shù)據(jù),所以空行是看不到的。而此次請(qǐng)求為 GET 請(qǐng)求,通常 GET 請(qǐng)求是沒(méi)有請(qǐng)求體的,所以請(qǐng)求體被省略了。

一個(gè) HTTP GET 請(qǐng)求大概長(zhǎng)這樣:

GET / HTTP/1.1
Host: www.jd.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

一個(gè) HTTP POST 請(qǐng)求大概長(zhǎng)這樣:

POST /login HTTP/1.1
Host: www.jd.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

username=test&password=pass

上面 POST 請(qǐng)求示例中 username=test&password=pass 即為請(qǐng)求體。

需要注意,以上請(qǐng)求報(bào)文中每一個(gè)換行都是用 \r\n 來(lái)標(biāo)識(shí)的,這一點(diǎn)在后面實(shí)際開(kāi)發(fā)的章節(jié)中就能體會(huì)到。

分析完請(qǐng)求報(bào)文,接下來(lái)分析下響應(yīng)報(bào)文。找到 Response Headers 同樣點(diǎn)擊右側(cè)的 view source,將會(huì)看到此次請(qǐng)求的響應(yīng)頭信息。

第一行 HTTP/1.1 200 OK 即為狀態(tài)行。它同樣由三部分組成:HTTP協(xié)議版本號(hào)、狀態(tài)碼、當(dāng)前狀態(tài)碼對(duì)應(yīng)的原因短語(yǔ),分別對(duì)應(yīng) HTTP/1.1、200OK。每個(gè)部分之間仍然通過(guò)一個(gè)空格隔開(kāi)。

其中狀態(tài)碼用來(lái)告知服務(wù)器返回的響應(yīng)狀態(tài),為一個(gè)數(shù)字。狀態(tài)碼大概分為四類(lèi):2XX、3XX、4XX5XX,分別對(duì)應(yīng)成功、重定向、客戶(hù)端錯(cuò)誤、服務(wù)端錯(cuò)誤。所以狀態(tài)碼為 200 表示請(qǐng)求成功。

原因短語(yǔ) OK 其實(shí)并不是很重要,它主要是給客戶(hù)端返回一個(gè)人類(lèi)可讀的短語(yǔ),來(lái)標(biāo)識(shí)請(qǐng)求結(jié)果,對(duì)瀏覽器來(lái)說(shuō)沒(méi)什么作用。

響應(yīng)首部字段同樣是 Key: Value 這種鍵值對(duì)形式,并且有些是和請(qǐng)求首部字段一樣的,稱(chēng)為通用首部字段,如 Connection: keep-alive 同樣存在于響應(yīng)首部字段。還有些字段是和請(qǐng)求首部字段搭配著使用的,如你所見(jiàn) Content-Type 字段就是搭配請(qǐng)求首部字段中的 Accept 來(lái)使用的,Accept 是瀏覽器用來(lái)告訴服務(wù)器它能夠接收的數(shù)據(jù)格式,而 Content-Type: text/html 標(biāo)識(shí)了服務(wù)器返回的數(shù)據(jù)格式為 html。其他的響應(yīng)首部字段可以等我們用到了再做說(shuō)明。

同樣的,響應(yīng)報(bào)文中的空行并不會(huì)在瀏覽器中展現(xiàn)出來(lái),不過(guò)響應(yīng)體是可以在瀏覽器中看到的。

當(dāng)前請(qǐng)求的響應(yīng)體實(shí)際上就是服務(wù)器返回的 HTML 源碼。

一個(gè) HTTP 響應(yīng)大概長(zhǎng)這樣:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/html

<html>XXX</html>

URL 簡(jiǎn)介

介紹完 HTTP 協(xié)議基礎(chǔ),我們?cè)賮?lái)簡(jiǎn)單介紹下 URL。

京東首頁(yè)的網(wǎng)址是 https://www.jd.com/,這就是一個(gè) URL。URL 中文叫作統(tǒng)一資源定位符。URL 的作用是在網(wǎng)絡(luò)中唯一的標(biāo)記一個(gè)資源。

你可能聽(tīng)說(shuō)過(guò) URI,實(shí)際上 URLURI 的一個(gè)子集。在基礎(chǔ)學(xué)習(xí)階段,我們并不需要弄清楚它們之間到底有什么差別,只需要把我們常見(jiàn)的網(wǎng)址統(tǒng)稱(chēng)為 URL 即可。

一個(gè) URL 的完整格式如下:

scheme://user:passwd@host:port/path?query#fragment

每一個(gè)部分代表含義如下:

scheme:協(xié)議名,表示資源使用哪種協(xié)議,http 就代表了 HTTP 協(xié)議,file 代表文件協(xié)議。

://:這個(gè)是固定寫(xiě)法,記住就好,沒(méi)必要深究。

user:passwd@:身份信息,表示訪問(wèn)主機(jī)時(shí)需要提供的用戶(hù)名和密碼,但這種將隱私信息完全暴露在外部的作法已經(jīng)幾乎沒(méi)人使用了。

host:port:表示資源所在的主機(jī)名和端口號(hào)。主機(jī)名為 IP 地址或域名,必須要有,HTTP 協(xié)議默認(rèn)端口號(hào)是  80,可以省略,其他端口號(hào)則不可省略。

path:標(biāo)識(shí)資源所在位置。它采用類(lèi)似 Unix 系統(tǒng)的目錄風(fēng)格,必須以 / 開(kāi)頭,如果是多級(jí)路徑,可以寫(xiě)成 /a/b/c 這種形式。

query:查詢(xún)參數(shù),在路徑之后第一個(gè) ? 開(kāi)始(不包含?)到 # 之前結(jié)束,所有的內(nèi)容都是查詢(xún)參數(shù),一個(gè)參數(shù)的格式為 key=value,如果存在多個(gè)參數(shù),中間用 & 隔開(kāi)。假如我們需要對(duì)數(shù)據(jù)做分頁(yè)處理就可以使用這個(gè)參數(shù),如 page=1&offset=20 表示需要獲取第一頁(yè)的數(shù)據(jù),每頁(yè)數(shù)據(jù) 20 條。這時(shí)候服務(wù)器端就可以解析到這個(gè)參數(shù)并返回對(duì)應(yīng)的數(shù)據(jù)。

fragment:最后一部分為片段標(biāo)識(shí)符。也可以將其叫做錨點(diǎn),從 # 開(kāi)始,瀏覽器可以根據(jù)錨點(diǎn)跳轉(zhuǎn)到頁(yè)面指定位置,但這個(gè)參數(shù)是不會(huì)被發(fā)送到服務(wù)器端的,所以開(kāi)發(fā)服務(wù)器端通常不太需要關(guān)心。

下面通過(guò)對(duì)一個(gè)實(shí)際的 URL 地址進(jìn)行分析來(lái)加強(qiáng)理解。

以下圖示為在京東首頁(yè)搜索 Python書(shū)籍后瀏覽器地址欄 URL 截圖。為了能夠更清晰的說(shuō)明問(wèn)題 URL 部分略有刪減。

我們可以將 URL 復(fù)制出來(lái):

https://search.jd.com/Search?keyword=python%E4%B9%A6%E7%B1%8D&enc=utf-8

以上 URL 按標(biāo)準(zhǔn)格式拆分如下:

scheme: https
host:port: search.jd.com
path: /Search
query: keyword=python%E4%B9%A6%E7%B1%8D&enc=utf-8

你應(yīng)該已經(jīng)發(fā)現(xiàn)上面復(fù)制出來(lái)的 URL 和截圖中的有些不同。

首先我們復(fù)制出來(lái)的 URL 是以 https 開(kāi)頭,而瀏覽器中卻是以 search 開(kāi)頭,其實(shí)這是瀏覽器為了讓 URL 更加可讀,而將 https:// 隱藏了,實(shí)際上它仍然是存在的。

你可能有個(gè)疑惑,我們上面一直在介紹 HTTP 協(xié)議,一個(gè)完整的 URL 是以 http 開(kāi)頭的。但實(shí)際上京東網(wǎng)站的 URL 都是以 https 開(kāi)頭的。其實(shí) https 是基于 http 的,只是在 http 的基礎(chǔ)上又加了一個(gè)安全套接層,默認(rèn)端口 443,HTTP 協(xié)議傳輸數(shù)據(jù)都是明文傳輸,HTTPS 協(xié)議傳輸數(shù)據(jù)是經(jīng)過(guò)加密的,所以使得數(shù)據(jù)的傳輸更加安全,僅此而已。本教程不會(huì)使用 HTTPS 協(xié)議,故此不做過(guò)多講解。

還有一個(gè)較大的差異就是在瀏覽器地址欄中看到的查詢(xún)參數(shù) Python書(shū)籍 復(fù)制出來(lái)以后就變成了 python%E4%B9%A6%E7%B1%8D。這是 URL 編碼造成的,通常在 URL 中只能使用 ASCII 碼,并且 URL 本身會(huì)使用如 ?、& 等符號(hào)作為分隔符。這就導(dǎo)致了很多特殊符號(hào)或者 ASCII 以外的字符(如中文)不能夠直接使用,所以就規(guī)定了一種轉(zhuǎn)碼規(guī)范,將不能直接用于 URL 的字符通過(guò)轉(zhuǎn)義操作使其變?yōu)榭捎米址?。這就是 書(shū)籍 兩個(gè)字符變成了 %E4%B9%A6%E7%B1%8D 的原因。在瀏覽器地址欄中能夠正常顯示同樣是瀏覽器為了讓 URL 更加可讀做的特殊處理。URL 轉(zhuǎn)義具體規(guī)則可以查看相關(guān)文檔進(jìn)行學(xué)習(xí)。

TCP/IP 簡(jiǎn)介

多個(gè)計(jì)算機(jī)之間通訊靠的是網(wǎng)絡(luò)協(xié)議,最早的計(jì)算機(jī)廠商生產(chǎn)的計(jì)算機(jī)只能跟自家的計(jì)算機(jī)通訊,為讓所有計(jì)算機(jī)之間都能夠通訊就有了 TCP/IP 協(xié)議。這就比如幾個(gè)人對(duì)話,有的說(shuō)漢語(yǔ)、有的說(shuō)英語(yǔ)、有的說(shuō)日語(yǔ),大家誰(shuí)也聽(tīng)不懂其他人說(shuō)話,所以最后大家都規(guī)定用一種語(yǔ)言來(lái)交流一樣。

TCP/IP 協(xié)議并不是單個(gè)的協(xié)議,它是一個(gè)協(xié)議族,包含了很多種網(wǎng)絡(luò)通訊協(xié)議,HTTP 協(xié)議也在其中。在網(wǎng)絡(luò)中兩臺(tái)計(jì)算機(jī)之間如果需要通訊,就要知道對(duì)方在哪,所以就有了 IP 地址。就像我們要給別人發(fā)快遞,那么就要知道對(duì)方的家庭住址一樣?,F(xiàn)在常用的 IP 地址為 IPv4 版本,格式如 192.168.3.14,最新版本是 IPv6,格式如 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789。

有了 IP 地址還不夠,就像你把快遞郵寄到一個(gè)家庭住址,但家里有五口人,你還要確定這個(gè)快遞是寄給誰(shuí)的。端口的作用就是干這個(gè)的。計(jì)算機(jī)通過(guò)端口號(hào)區(qū)分收到的信息該轉(zhuǎn)發(fā)給哪個(gè)軟件。

IP 地址加上端口號(hào)就是上面介紹的 URLhost:port 部分,如 192.168.3.14:80。但 IP 地址是一串?dāng)?shù)字,不容易記住,所以就有了域名。www.jd.com 就是京東的域名。我們?cè)跒g覽器中輸入這個(gè)域名時(shí),計(jì)算機(jī)會(huì)自動(dòng)將其轉(zhuǎn)換成 IP 地址加端口號(hào)的形式。這個(gè)轉(zhuǎn)換過(guò)程是通過(guò)一個(gè)叫 DNS 解析的技術(shù)。它能夠?qū)⒂蛎?IP 之間的關(guān)系做綁定,知道了域名它就能查出其對(duì)應(yīng)的 IP 地址是多少。

HTTP 協(xié)議是建立在 TCP/IP 協(xié)議之上的,HTTP 的數(shù)據(jù)傳輸依靠的是 TCP 協(xié)議??偨Y(jié)起來(lái)就是 TCP 用來(lái)傳輸數(shù)據(jù),HTTP 用來(lái)規(guī)范數(shù)據(jù)傳輸格式。

擴(kuò)展

從瀏覽器地址欄輸入網(wǎng)址 https://www.jd.com/ 到看見(jiàn)京東網(wǎng)站首頁(yè)經(jīng)歷了什么?

  1. 瀏覽器從地址欄獲取 URL

  2. 瀏覽器或操作系統(tǒng)通過(guò) DNS 解析將 URL 中域名和端口號(hào)解析成對(duì)應(yīng)的 IP 地址和端口號(hào)

  3. 瀏覽器通過(guò) TCP 與服務(wù)器建立連接

  4. 瀏覽器向服務(wù)器發(fā)送請(qǐng)求報(bào)文

  5. 服務(wù)器收到請(qǐng)求報(bào)文后做對(duì)應(yīng)的處理,將處理結(jié)果組裝成響應(yīng)報(bào)文返回給瀏覽器

  6. 瀏覽器解析響應(yīng)報(bào)文,渲染頁(yè)面

以上就是從瀏覽器地址欄輸入網(wǎng)址 https://www.jd.com/ 到看見(jiàn)京東網(wǎng)站首頁(yè)所經(jīng)歷的過(guò)程概述。

如果你對(duì) Web 開(kāi)發(fā)完全零基礎(chǔ),看了以上我對(duì) HTTP 協(xié)議的簡(jiǎn)介,感覺(jué)不是很明白的話,那么我推薦你可以看一本叫作《圖解HTTP》的書(shū),看完后再來(lái)學(xué)習(xí)本教程能夠達(dá)到事半功倍的效果。

開(kāi)發(fā)環(huán)境

本教程項(xiàng)目開(kāi)發(fā)環(huán)境如下:

  • Python:Python3.7

  • 瀏覽器:Chrome83

  • 開(kāi)發(fā)工具:PyCharm 2020.1

  • 操作系統(tǒng):macOS 10.15

有 Python 基礎(chǔ)的同學(xué)想必搭建開(kāi)發(fā)環(huán)境肯定不在話下,所以具體搭建過(guò)程這里不再做過(guò)多介紹,需要強(qiáng)調(diào)的一點(diǎn)是瀏覽器我只推薦 Chrome 或者 Firefox,這樣能夠得到更好的開(kāi)發(fā)體驗(yàn)。

聯(lián)系作者:

  • 微信:jianghushinian

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
看完這篇HTTP,跟面試官扯皮就沒(méi)問(wèn)題了
HTTP協(xié)議之HTTP的結(jié)構(gòu)
TCP/IP 和 HTTP不了解?看完這篇文章,網(wǎng)絡(luò)知識(shí)就全懂了
HTTP協(xié)議報(bào)文、工作原理及Java中的HTTP通信技術(shù)詳解
TCP/IP 詳解卷一之 HTTP協(xié)議
網(wǎng)絡(luò)中IP數(shù)據(jù)包是如何進(jìn)行遠(yuǎn)程傳輸定位的
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服