国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP)

這篇具有很好參考價(jià)值的文章主要介紹了【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

專欄:python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn) 歡迎訂閱!近期還會(huì)不斷更新~
另外:如果想要看更多的計(jì)算機(jī)網(wǎng)絡(luò)知識(shí),可以關(guān)注我的專欄:計(jì)算機(jī)網(wǎng)絡(luò)
往期推薦
【Python爬蟲開發(fā)基礎(chǔ)①】Python基礎(chǔ)(變量及其命名規(guī)范)
【Python爬蟲開發(fā)基礎(chǔ)②】Python基礎(chǔ)(正則表達(dá)式)
【Python爬蟲開發(fā)基礎(chǔ)③】Python基礎(chǔ)(文件操作方法匯總)
【Python爬蟲開發(fā)基礎(chǔ)④】爬蟲原理
【Python爬蟲開發(fā)基礎(chǔ)⑤】HTML頁面構(gòu)成概述
上一篇文章已經(jīng)介紹了HTML語言,本篇文章來簡(jiǎn)單的介紹一下計(jì)算機(jī)網(wǎng)絡(luò)的應(yīng)用層,特別是Web和HTTP協(xié)議,方便寫程序時(shí),讓我們更加高效的書寫代碼~



1 前置知識(shí)

1.1 網(wǎng)絡(luò)應(yīng)用模型

網(wǎng)絡(luò)應(yīng)用模型是指在網(wǎng)絡(luò)環(huán)境下,進(jìn)行應(yīng)用程序開發(fā)和交互的一種架構(gòu)或模式。常見的網(wǎng)絡(luò)應(yīng)用模型包括客戶端-服務(wù)器模型、瀏覽器-服務(wù)器模型和分布式模型。

1.1.1 C/S架構(gòu)(客戶端-服務(wù)器模型)

在客戶端-服務(wù)器模型中,應(yīng)用程序被分為兩個(gè)主要組件:客戶端和服務(wù)器。

  • 客戶端是指用戶使用的設(shè)備(例如個(gè)人計(jì)算機(jī)、手機(jī)應(yīng)用程序或網(wǎng)頁瀏覽器等),客戶端通常提供用戶界面,允許用戶與服務(wù)器進(jìn)行交互,并將用戶的請(qǐng)求打包成數(shù)據(jù)包發(fā)送給服務(wù)器。
  • 服務(wù)器存儲(chǔ)和處理數(shù)據(jù)的遠(yuǎn)程計(jì)算機(jī)(在網(wǎng)絡(luò)中具有固定的 IP 地址和提供特定服務(wù)的軟件,如網(wǎng)站服務(wù)器、文件服務(wù)器、郵件服務(wù)器等),它接收來自客戶端的請(qǐng)求,并根據(jù)請(qǐng)求執(zhí)行相應(yīng)的操作,然后將結(jié)果返回給客戶端。
  • 這種模型常用于 Web 應(yīng)用開發(fā)、移動(dòng)應(yīng)用開發(fā)等。
  • 客戶端和服務(wù)器之間通過網(wǎng)絡(luò)進(jìn)行通信,通常使用標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議,如HTTP(超文本傳輸協(xié)議)或TCP/IP(傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議)??蛻舳送ㄟ^指定服務(wù)器的地址和端口號(hào)來建立連接,并發(fā)送請(qǐng)求消息。服務(wù)器接收到請(qǐng)求后,處理請(qǐng)求并將結(jié)果封裝成響應(yīng)消息返回給客戶端。

這種模型具有以下幾個(gè)特點(diǎn)

  1. 分工明確:客戶端負(fù)責(zé)發(fā)送請(qǐng)求和展示結(jié)果,服務(wù)器負(fù)責(zé)處理請(qǐng)求和提供服務(wù)。
  2. 可擴(kuò)展性:通過增加服務(wù)器的數(shù)量可以提高系統(tǒng)的性能和容量。
  3. 可靠性:專門的服務(wù)器設(shè)備可以提供穩(wěn)定的服務(wù),并進(jìn)行備份和故障恢復(fù)。
  4. 統(tǒng)一標(biāo)準(zhǔn):使用標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議,使得各種不同類型的客戶端能夠與服務(wù)器進(jìn)行通信。

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie

1.1.2 B/S架構(gòu)(瀏覽器-服務(wù)器模型)

瀏覽器-服務(wù)器模型是客戶端-服務(wù)器模型的一種特殊形式,其中客戶端使用的是瀏覽器作為用戶界面。描述了在Web應(yīng)用程序中,瀏覽器和服務(wù)器之間的交互方式。

  • 在這個(gè)模型中,用戶通過瀏覽器向服務(wù)器發(fā)出請(qǐng)求,瀏覽器充當(dāng)客戶端的角色,并從服務(wù)器獲取 Web 頁面的內(nèi)容
  • 具體來說,當(dāng)用戶在瀏覽器中輸入U(xiǎn)RL或點(diǎn)擊鏈接時(shí),瀏覽器會(huì)發(fā)送HTTP請(qǐng)求到特定的服務(wù)器。該請(qǐng)求包含了用戶要訪問的資源的信息,比如HTML文件、圖片、CSS樣式表或JavaScript代碼等。
  • 服務(wù)器根據(jù)請(qǐng)求的路徑和參數(shù)進(jìn)行處理,將所需的資源打包成HTTP響應(yīng)返回給瀏覽器。
  • 根據(jù)請(qǐng)求生成動(dòng)態(tài)的 HTML 頁面或提供靜態(tài)的資源,并將其發(fā)送回瀏覽器進(jìn)行顯示。
  • 在這個(gè)交互過程中,瀏覽器和服務(wù)器之間通過HTTP協(xié)議進(jìn)行通信。HTTP定義了一套規(guī)范,規(guī)定了請(qǐng)求和響應(yīng)的格式,以及一些狀態(tài)碼和標(biāo)頭字段的含義。

瀏覽器-服務(wù)器模型的優(yōu)點(diǎn)包括:

  1. 客戶端無需事先安裝特定程序,只要有瀏覽器即可訪問Web資源。
  2. 服務(wù)器端可以集中管理和提供資源,對(duì)用戶來說更加方便。
  3. Web應(yīng)用程序的開發(fā)可以分為前端和后端,在不同層面上進(jìn)行開發(fā),使任務(wù)分工更清晰。

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie

1.2 域名系統(tǒng)(DNS)

域名系統(tǒng)(Domain Name System,DNS)是互聯(lián)網(wǎng)中用于將域名轉(zhuǎn)換為IP地址的分布式命名系統(tǒng)。它充當(dāng)了互聯(lián)網(wǎng)中的"電話簿",將易于記憶的域名映射到對(duì)應(yīng)的IP地址。DNS系統(tǒng)采用人們更喜歡使用具有特定含義的字符串來標(biāo)識(shí)因特網(wǎng)上的計(jì)算機(jī)??蛻?服務(wù)器模型,其協(xié)議運(yùn)行在UDP之上,使用53號(hào)端口。

在Web上,我們通常使用域名來訪問網(wǎng)站,例如www.example.com。然而,計(jì)算機(jī)和網(wǎng)絡(luò)通信使用的是IP地址,如192.0.2.1。DNS的主要作用是將這兩者進(jìn)行關(guān)聯(lián)。

1.2.1 層次域名空間

層次域名空間是指域名系統(tǒng)(DNS)中的層次和結(jié)構(gòu)化組織。它通過將域名劃分為不同級(jí)別的域名,并按照層次結(jié)構(gòu)進(jìn)行管理和解析。

因特網(wǎng)采用層次樹狀結(jié)構(gòu)的命名方法。采用這種命名方法,任何一個(gè)連接到因特網(wǎng)的主機(jī)或路由器,都有一個(gè)唯一的層次結(jié)構(gòu)名稱,即域名(Domain Name)。

(Domain)是名字空間中一個(gè)可被管理的劃分。域還可以劃分為子域,而子域還可以繼續(xù)劃分為子域的子域,這樣就形成了頂級(jí)域、二級(jí)域、三級(jí)域等。每個(gè)域名都由標(biāo)號(hào)序列組成,而各標(biāo)號(hào)之間用點(diǎn)(“.”)隔開。

注意

  1. 標(biāo)號(hào)中的英文不區(qū)分大小寫。
  2. 標(biāo)號(hào)中除連字符外不能使用其他的標(biāo)點(diǎn)符號(hào)。
  3. 每個(gè)標(biāo)號(hào)不超過63個(gè)字符,多標(biāo)號(hào)組成的完整域名最長不超過255個(gè)字符。
  4. 級(jí)別最低的域名寫在最左邊,級(jí)別最高的頂級(jí)域名寫在最右邊。

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie

1.2.2 域名服務(wù)器

域名服務(wù)器是一個(gè)網(wǎng)絡(luò)服務(wù),用于將域名轉(zhuǎn)換為相應(yīng)的IP地址。它充當(dāng)域名解析的中心樞紐,在互聯(lián)網(wǎng)上提供域名與IP地址之間的映射關(guān)系。

當(dāng)用戶在瀏覽器或其他網(wǎng)絡(luò)應(yīng)用程序中輸入一個(gè)域名時(shí),操作系統(tǒng)會(huì)向本地域名服務(wù)器發(fā)起查詢請(qǐng)求。如果本地域名服務(wù)器擁有該域名的緩存信息,則直接返回對(duì)應(yīng)的IP地址。否則,本地域名服務(wù)器會(huì)通過遞歸查詢的方式向更高級(jí)的域名服務(wù)器進(jìn)行查詢。

  • 域名服務(wù)器按照層次結(jié)構(gòu)組織,其中最頂層的是根域名服務(wù)器。
  • 根域名服務(wù)器負(fù)責(zé)管理頂級(jí)域名(TLD)的信息,如.com、.org等。
  • 當(dāng)本地域名服務(wù)器無法直接解析域名時(shí),它會(huì)向根域名服務(wù)器發(fā)送查詢請(qǐng)求,以獲取下一級(jí)域名服務(wù)器的信息

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie


2 HTTP概述

萬維網(wǎng)(World Wide Web,WWW)是一個(gè)分布式、聯(lián)機(jī)式的信息存儲(chǔ)空間,在這個(gè)空間中:一樣有用的事物稱為一樣“資源”,并由一個(gè)全域“統(tǒng)一資源定位符”(URL)標(biāo)識(shí)。這些資源通過超文本傳輸協(xié)議(HTTP)傳送給使用者,而后者通過單擊鏈接來獲取資源。

2.1 什么是HTTP

超文本傳輸協(xié)議(Hypertext Transfer Protocol,HTTP)是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上。它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。
HTTP定義了瀏覽器(萬維網(wǎng)客戶進(jìn)程)怎樣向萬維網(wǎng)服務(wù)器請(qǐng)求萬維網(wǎng)文檔,以及服務(wù)器怎樣把文檔傳送給瀏覽器。

從層次的角度看,HTTP是面向事務(wù)的(Transaction-oriented)應(yīng)用層協(xié)議,它規(guī)定了在瀏覽器和服務(wù)器之間的請(qǐng)求和響應(yīng)的格式與規(guī)則,是萬維網(wǎng)上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)的重要基礎(chǔ)。

在計(jì)算機(jī)網(wǎng)絡(luò)中,Web是一種應(yīng)用,在7層模型中運(yùn)行在最上層的應(yīng)用層,HTTP是支持Web這種應(yīng)用的協(xié)議。

2.2 HTTP的工作原理

從協(xié)議執(zhí)行過程來說,瀏覽器要訪問WWW服務(wù)器時(shí),首先要完成對(duì)WWW服務(wù)器的域名解析。一旦獲得了服務(wù)器的IP地址,瀏覽器就通過TCP向服務(wù)器發(fā)送連接建立請(qǐng)求。

HTTP是基于B/S架構(gòu)通信的,也就是瀏覽器/服務(wù)器架構(gòu)。在這個(gè)模型中,客戶端也就是瀏覽器,用于請(qǐng)求、接收和顯示W(wǎng)eb對(duì)象;服務(wù)器用于對(duì)請(qǐng)求進(jìn)行相應(yīng),發(fā)送客戶端需要的對(duì)象。

HTTP的工作流程如下圖所示

  • 每一個(gè)萬維網(wǎng)站點(diǎn)也就是服務(wù)器,都有一個(gè)服務(wù)器進(jìn)程,它永遠(yuǎn)守候在80號(hào)端口進(jìn)行監(jiān)聽。
  • 當(dāng)監(jiān)聽到客戶的請(qǐng)求時(shí),便與其建立TCP連接,并分配一個(gè)新的socket指向與這個(gè)用戶的會(huì)話關(guān)系,用于與其進(jìn)行通信。
  • 與此同時(shí),服務(wù)器仍然監(jiān)聽80號(hào)端口,查看是否有新的客戶端請(qǐng)求建立連接,若有則重復(fù)上述步驟。
  • 在這里,80號(hào)端口稱為守候進(jìn)程(Waiting Socket),新的socket稱為連接進(jìn)程(Connection Socket)。

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie
用瀏覽器訪問一個(gè)URL所經(jīng)歷的過程

  1. 瀏覽器分析鏈接指向頁面的 URL。
  2. 瀏覽器向 DNS 請(qǐng)求解析上面URL的IP地址。
  3. 域名系統(tǒng)DNS解析出清華大學(xué)服務(wù)器的IP地址。
  4. 瀏覽器與該服務(wù)器建立TCP連接(默認(rèn)端口號(hào)為80)。
  5. 瀏覽器發(fā)出 HTTP請(qǐng)求:GET/index.htm
  6. 服務(wù)器通過HTTP響應(yīng)把文件index.htm發(fā)送給瀏覽器。
  7. 釋放TCP連接。
  8. 瀏覽器解釋文件index.htm,并將 Web 頁顯示給用戶。

3 HTTP的發(fā)展階段

HTTP協(xié)議的發(fā)展經(jīng)歷了幾個(gè)階段,最主要的發(fā)展就是非持續(xù)連接和持續(xù)連接的區(qū)別。每個(gè)請(qǐng)求/相應(yīng)是經(jīng)過一個(gè)單獨(dú)的TCP連接發(fā)送的稱為非持續(xù)連接,如果所有的請(qǐng)求及其相應(yīng)都是經(jīng)過相同的TCP連接發(fā)送的,則稱為持續(xù)連接。

3.1 采用非持續(xù)連接的HTTP

  1. 客戶端發(fā)起一個(gè)與服務(wù)器的TCP連接(建立套接字),端口號(hào)為80
  2. 服務(wù)器接受客戶端的TCP連接
  3. 在瀏覽器與Web服務(wù)器交換HTTP報(bào)文
  4. TCP連接關(guān)閉

其中,每一個(gè)TCP連接在服務(wù)器發(fā)送一個(gè)對(duì)象后關(guān)閉,而且每個(gè)TCP連接只傳輸一個(gè)請(qǐng)求報(bào)文和一個(gè)響應(yīng)報(bào)文。

這種協(xié)議是無狀態(tài)的也稱為非持久HTTP,即服務(wù)器不保留與客戶交易時(shí)的任何狀態(tài)。這就大大減輕了服務(wù)器記憶負(fù)擔(dān),從而保持較快的響應(yīng)速度。
【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie

3.2 采用持續(xù)連接的HTTP

HTTP 1.1中,引入了保持活動(dòng)機(jī)制,其中連接可以重用于多個(gè)請(qǐng)求。這樣的持久性連接可以明顯減少請(qǐng)求延遲,因?yàn)樵诎l(fā)送第一個(gè)請(qǐng)求之后,客戶端不需要重新進(jìn)行TCP 三次握手連接。另一個(gè)積極的副作用是,通常,由于TCP的緩慢啟動(dòng)機(jī)制,連接隨著時(shí)間的推移而變得更快
【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie

持續(xù)連接有分為非流水線和流水線兩種方式

  • 對(duì)于非流水線方式,客戶在收到前一個(gè)響應(yīng)后才能發(fā)出下一個(gè)請(qǐng)求,服務(wù)器發(fā)送完一個(gè)對(duì)象后,其TCP連接就處于空閑狀態(tài),浪費(fèi)了服務(wù)器資源。
  • HTTP 1.1 的默認(rèn)方式是使用流水線的持久連接,這種情況下,客戶每遇到一個(gè)對(duì)象引用就立即發(fā)出一個(gè)請(qǐng)求,因而客戶可以逐個(gè)地連續(xù)發(fā)出對(duì)各個(gè)引用對(duì)象的請(qǐng)求。就像是滑動(dòng)窗口的發(fā)送方式。
  • 如果所有的請(qǐng)求和響應(yīng)都是連續(xù)發(fā)送的,那么所有的引用對(duì)象共經(jīng)歷1個(gè)RTT延遲,而不像非水線方式那樣,每個(gè)引用都必須有1個(gè)RTT延遲。

這種方式減少了TCP 連接中的空閑時(shí)間,提高了效率。


4 HTTP報(bào)文結(jié)構(gòu)

在瀏覽器和服務(wù)器之間的請(qǐng)求與響應(yīng)的交互,必須遵循規(guī)定的格式和規(guī)則,這些格式和規(guī)則就是HTTP。因此 HTTP有兩類報(bào)文:請(qǐng)求報(bào)文和響應(yīng)報(bào)文。我們做爬蟲,正是通過獲取并分析這些報(bào)文來分辨是否是我們要獲得的信息。

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie
【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie

HTTP有兩種報(bào)文,請(qǐng)求報(bào)文和響應(yīng)報(bào)文,結(jié)構(gòu)如上圖所示。
HTTP請(qǐng)求報(bào)文和響應(yīng)報(bào)文都由三個(gè)部分組成。從圖中可以看出,這兩種報(bào)文格式的區(qū)別就是開始行不同。本節(jié)主要介紹每個(gè)字段的意義以及存儲(chǔ)的內(nèi)容,下一篇文章通過實(shí)戰(zhàn),帶你了解在瀏覽器中看一下這些報(bào)文到底在哪。

  • 開始行

用于區(qū)分是請(qǐng)求報(bào)文還是響應(yīng)報(bào)文。在請(qǐng)求報(bào)文中的開始行稱為請(qǐng)求行,而在響應(yīng)報(bào)文中的開始行稱為狀態(tài)行。開始行的三個(gè)字段之間都以空格分隔,最后的“CR”和“LF”分別代表“回車”和“換行”。

請(qǐng)求報(bào)文的“請(qǐng)求行”有三個(gè)內(nèi)容:方法、請(qǐng)求資源的URL及HTTP的版本。其中,“方法”是對(duì)所請(qǐng)求對(duì)象進(jìn)行的操作,這些方法實(shí)際上也就是一些命令。下表給出了HTTP請(qǐng)求報(bào)文中常用的幾個(gè)方法。

方法(操作) 意義
GET 請(qǐng)求讀取由URL標(biāo)識(shí)的信息
HEAD 請(qǐng)求讀取由URL標(biāo)識(shí)的信息的首部
POST 給服務(wù)器添加信息(如注釋)
CONNECT 用于代理服務(wù)器
  • 首部行

用來說明瀏覽器、服務(wù)器或報(bào)文主體的一些信息。首部可以有幾行,但也可以不使用。

在每個(gè)首部行中都有首部字段名和它的值,每一行在結(jié)束的地方都要有“回車”和“換行”。整個(gè)首部行結(jié)束時(shí),還有一空行將首部行和后面的實(shí)體主體分開。

  • 狀態(tài)碼

響應(yīng)報(bào)文中的狀態(tài)行中有一個(gè)狀態(tài)碼字段,它描述了請(qǐng)求的結(jié)果。下表說明了主要的狀態(tài)碼和對(duì)應(yīng)的意義

狀態(tài)碼 意義
200 OK 請(qǐng)求成功,信息在返回的響應(yīng)報(bào)文中
201 Created 請(qǐng)求成功,并在服務(wù)器上創(chuàng)建了新資源
204 No Content 請(qǐng)求成功,但響應(yīng)中沒有返回任何內(nèi)容
301 Moved Permanently 請(qǐng)求的對(duì)象已經(jīng)被永遠(yuǎn)的轉(zhuǎn)移了,新的URL定義在響應(yīng)報(bào)文的Location,首部行中,客戶軟件將自動(dòng)獲取新的URL
400 Bad Request 一個(gè)通用的差錯(cuò)代碼,指示該請(qǐng)求不能被服務(wù)器理解
401 Unauthorized 請(qǐng)求未被授權(quán),需要提供有效的身份驗(yàn)證信息
403 Forbidden 請(qǐng)求被服務(wù)器拒絕,通常是因?yàn)闄?quán)限不足
404 Not Found 被請(qǐng)求的文檔不在服務(wù)器上
500 Internal Server Error 服務(wù)器內(nèi)部發(fā)生錯(cuò)誤,無法完成請(qǐng)求
505 HTTP Version Not Supported 服務(wù)器不支持請(qǐng)求報(bào)文使用的HTTP協(xié)議版本

5 用戶與服務(wù)器的交互:Cookie

我們前面提到了HTTP服務(wù)器是無狀態(tài)的。這簡(jiǎn)化了服務(wù)器的設(shè)計(jì),并且允許工程師們?nèi)ラ_發(fā)可以同時(shí)處理數(shù)以千計(jì)的TCP連接的高性能Web服務(wù)器。

然而有的站點(diǎn)希望根據(jù)不同的用戶推送不同的內(nèi)容,并且在下一次訪問時(shí)可以找到之前的訪問記錄,根據(jù)以前的訪問進(jìn)行本次訪問。為此,HTTP使用了cookie,它允許站點(diǎn)對(duì)用戶進(jìn)行跟蹤。
目前大多數(shù)商務(wù)Web 站點(diǎn)都使用了cookie。

如下圖所示,cookie技術(shù)有4個(gè)組件

  1. 在 HTTP響應(yīng)報(bào)文中的一個(gè)cookie首部行;
  2. 在 HTTP請(qǐng)求報(bào)文中的一個(gè)cookie首部行;
  3. 在用戶端系統(tǒng)中保留有一個(gè)cookie文件,并由用戶的瀏覽器進(jìn)行管理;
  4. 位于Web站點(diǎn)的一個(gè)后端數(shù)據(jù)庫。

并且下圖用一個(gè)例子說明了cookie的工作過程
【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie

從上述過程中我們看到,cookie可以用于標(biāo)識(shí)一個(gè)用戶。

  • 用戶首次訪問一個(gè)站點(diǎn)時(shí),可能需要提供一個(gè)用戶標(biāo)識(shí)(可能是名字)。
  • 在后繼會(huì)話中,瀏覽器向服務(wù)器傳遞一個(gè)cookie首部,從而向該服務(wù)器標(biāo)識(shí)了用戶。
  • 因此cookie可以在無狀態(tài)的HTTP之上建立一個(gè)用戶會(huì)話層

在后續(xù)的爬蟲編程中,我們也會(huì)用到cookie。


6 Web緩存

在本文的以上內(nèi)容中,我們介紹的都是客戶端直接訪問服務(wù)器。但是這樣的操作往往會(huì)使得服務(wù)器的負(fù)擔(dān)較重,這時(shí),如果有一個(gè)代理,能夠?qū)⒁徊糠謨?nèi)容拿出來,幫助Web服務(wù)器完成用戶的訪問,那么無論是對(duì)于用戶還是服務(wù)器來說都是有利的。

Web緩存(Web cache)也稱代理服務(wù)器(proxy server),它是能夠代表初始Web服務(wù)器來滿足HTTP請(qǐng)求的網(wǎng)絡(luò)實(shí)體。Web緩存器有自己的磁盤存儲(chǔ)空間,并在存儲(chǔ)空間中保存最近請(qǐng)求過的對(duì)象的副本。

【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie
使用Web緩存處理客戶端請(qǐng)求的過程

  1. 瀏覽器創(chuàng)建一個(gè)到Web 緩存器的 TCP連接,并向Web緩存器中的對(duì)象發(fā)送一個(gè)HTTP請(qǐng)求。
  2. Web緩存器進(jìn)行檢查,看看本地是否存儲(chǔ)了該對(duì)象副本。如果有,Web緩存器就向客戶瀏覽器用HTTP響應(yīng)報(bào)文返回該對(duì)象。
  3. 如果 Web緩存器中沒有該對(duì)象,它就打開一個(gè)與該對(duì)象的初始服務(wù)器的TCP連接。Web緩存器則在這個(gè)緩存器到服務(wù)器的TCP連接上發(fā)送一個(gè)對(duì)該對(duì)象的HTTP請(qǐng)求。在收到該請(qǐng)求后,初始服務(wù)器向該Web緩存器發(fā)送具有該對(duì)象的HTTP響應(yīng)
  4. 當(dāng)Web緩存器接收到該對(duì)象時(shí),它在本地存儲(chǔ)空間存儲(chǔ)一份副本,并向客戶的瀏覽器用HTTP 響應(yīng)報(bào)文發(fā)送該副本(通過現(xiàn)有的客戶瀏覽器和Web緩存器之間的TCP 連接)。

建立Web緩存的好處

  • 可以大大減少對(duì)客戶請(qǐng)求的響應(yīng)時(shí)間。
  • 能夠大大減少一個(gè)機(jī)構(gòu)的接入鏈路到因特網(wǎng)的通信量,從而不必增加帶寬,降低了費(fèi)用。

7 條件GET方法

雖然Web緩存可以幫助我們減少請(qǐng)求時(shí)間以及服務(wù)器的負(fù)擔(dān),但是存在一個(gè)缺點(diǎn):當(dāng)上次請(qǐng)求的內(nèi)容在服務(wù)器中已經(jīng)修改,則此時(shí)的內(nèi)容與Web緩存中的內(nèi)容不一致,為此,我們必須知道該內(nèi)容在服務(wù)器中是否進(jìn)行的修改,這種機(jī)制就是條件GET方法(conditional GET)。

如果請(qǐng)求報(bào)文使用GET方法;并且,請(qǐng)求報(bào)文中包含一個(gè)“If-Modified-Since:”首部行。那么,這個(gè)HTTP請(qǐng)求報(bào)文就是一個(gè)條件GET請(qǐng)求報(bào)文。

操作流程文章來源地址http://www.zghlxwxcb.cn/news/detail-519727.html

  • 首先,代理服務(wù)器代表一個(gè)請(qǐng)求瀏覽器,向某個(gè)Web服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文
    【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie
  • 其次,該Web服務(wù)器向緩存發(fā)送具有被請(qǐng)求的對(duì)象的響應(yīng)報(bào)文
    【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie
  • 該緩存器在將對(duì)象轉(zhuǎn)發(fā)到請(qǐng)求的瀏覽器的同時(shí),也在本地緩存了該對(duì)象。
  • 重要的是,緩存器在存儲(chǔ)該對(duì)象時(shí)也存儲(chǔ)了最后修改日期
  • 最后,一個(gè)星期后,另一個(gè)用戶經(jīng)過該緩存器請(qǐng)求同一個(gè)對(duì)象,該對(duì)象仍在這個(gè)緩存器中。
  • 由于在過去的一個(gè)星期中位于Web服務(wù)器上的該對(duì)象可能已經(jīng)被修改了,該緩存器通過發(fā)送一個(gè)條件GET 執(zhí)行最新檢查。下面是該緩存器發(fā)送的報(bào)文:
    【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie
  • 在If-Modified-Sincce字段中,首部行的值正好等于一星期錢服務(wù)器發(fā)送的響應(yīng)報(bào)文中的Last-Modified
  • 則Web服務(wù)器向該緩存中發(fā)送一個(gè)響應(yīng)報(bào)文:
    【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP),python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn),計(jì)算機(jī)網(wǎng)絡(luò),python,爬蟲,計(jì)算機(jī)網(wǎng)絡(luò),http,web,websocket,cookie
  • 作為該條件GET方法的響應(yīng),服務(wù)器仍發(fā)送一個(gè)響應(yīng)報(bào)文,但是并沒有在該響應(yīng)報(bào)文中包含所請(qǐng)求的對(duì)象

到了這里,關(guān)于【Python爬蟲開發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)概念解釋

    計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)概念解釋

    ? ? 1. 什么是網(wǎng)絡(luò) 隨著時(shí)代的發(fā)展,越來越需要計(jì)算機(jī)之間互相通信,共享軟件和數(shù)據(jù),即以多個(gè)計(jì)算機(jī)協(xié)同?作來完成業(yè)務(wù),于是有了網(wǎng)絡(luò)互連。 網(wǎng)絡(luò)互連:將多臺(tái)計(jì)算機(jī)連接在?起,完成數(shù)據(jù)共享。 數(shù)據(jù)共享本質(zhì)是網(wǎng)絡(luò)數(shù)據(jù)傳輸,即計(jì)算機(jī)之間通過網(wǎng)絡(luò)來傳輸數(shù)據(jù),也

    2024年01月24日
    瀏覽(24)
  • 【網(wǎng)絡(luò)】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)概念入門

    【網(wǎng)絡(luò)】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)概念入門

    ?? 個(gè)人主頁——??個(gè)人主頁 ????? ???????????????? ?????????????? ???????????????????????? 感謝點(diǎn)贊和關(guān)注 ,每天進(jìn)步一點(diǎn)點(diǎn)!加油! 目錄 一、什么是網(wǎng)絡(luò) 二、互聯(lián)網(wǎng)的組成 三、計(jì)算機(jī)網(wǎng)絡(luò)分類 3.1 按照網(wǎng)絡(luò)的作用范圍分類 3.2 按照網(wǎng)絡(luò)的使

    2024年02月08日
    瀏覽(20)
  • 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)第四章

    計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)第四章

    主要任務(wù)是把 分組 從源端傳到目的端,為分組交換網(wǎng)上的不同主機(jī)提供通信服務(wù)。網(wǎng)絡(luò)層傳輸單位是 數(shù)據(jù)報(bào) 。 功能一:路由選擇與分組轉(zhuǎn)發(fā)( 最佳路徑 ) 功能二:異構(gòu)網(wǎng)絡(luò)互聯(lián) 功能三:擁塞控制(若所有結(jié)點(diǎn)都來不及接受分組,而要丟棄大量分組的話,網(wǎng)絡(luò)就處于 擁塞

    2024年02月16日
    瀏覽(22)
  • 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)指南

    計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)指南

    ? 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)是研發(fā)/運(yùn)維工程師都需掌握的知識(shí),但往往會(huì)被忽略。 今天,我將對(duì)計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)進(jìn)行詳細(xì)闡述,涵蓋 TCP / UDP協(xié)議、Http協(xié)議、Socket等,希望你們會(huì)喜歡。 1.1 簡(jiǎn)介 定義 計(jì)算機(jī)網(wǎng)絡(luò)的各層 + 其協(xié)議的集合。 作用 定義該計(jì)算機(jī)網(wǎng)絡(luò)的所能完成的功能。

    2024年02月09日
    瀏覽(19)
  • 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)第一章

    計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)第一章

    1.1 計(jì)算機(jī)網(wǎng)絡(luò)的概念 三網(wǎng):有線電視網(wǎng)絡(luò)、電信網(wǎng)絡(luò)、計(jì)算機(jī)網(wǎng)絡(luò)。 三網(wǎng)融合:通過計(jì)算機(jī)網(wǎng)絡(luò)可以將有線電視、電信網(wǎng)絡(luò)通過0/1編碼等方式展現(xiàn)進(jìn)行融合,從而實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)視頻、電話等其他網(wǎng)絡(luò)功能。 四網(wǎng):電網(wǎng)+三網(wǎng)。 四網(wǎng)融合:計(jì)算機(jī)網(wǎng)絡(luò)控制實(shí)現(xiàn)有限電視

    2024年02月13日
    瀏覽(22)
  • 第1章-計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)

    第1章-計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)

    目錄 1. 計(jì)算機(jī)網(wǎng)絡(luò)與計(jì)算機(jī) 2. 計(jì)算機(jī)網(wǎng)絡(luò)的定義和基本功能 2.1. 定義:計(jì)算機(jī)網(wǎng)絡(luò)是一組自治計(jì)算機(jī)互連的集合 2.2. 基本功能 2.3. 計(jì)算機(jī)網(wǎng)絡(luò)的演進(jìn) 2.4. 廣域網(wǎng)(Wide Area Network,WAN) 2.5. 網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu) 2.6. 數(shù)據(jù)交換方式 2.7. 衡量計(jì)算機(jī)網(wǎng)絡(luò)的性能指標(biāo) 2.8. 網(wǎng)絡(luò)標(biāo)準(zhǔn)化組織 ??

    2024年01月25日
    瀏覽(27)
  • 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)第六章

    計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)第六章

    1.1.1 客戶/服務(wù)器(C/S)模型 1.1.2 P2P模型 網(wǎng)際報(bào)文存取協(xié)議IMAP 5.2.1 HTTP協(xié)議的特點(diǎn) 5.2.2 HTTP協(xié)議的連接方式 5.2.3 超文本傳輸協(xié)議HTTP-報(bào)文結(jié)構(gòu)

    2024年02月16日
    瀏覽(18)
  • Linux 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)概論

    Linux 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)概論

    1、網(wǎng)絡(luò) 網(wǎng)絡(luò)是由若干節(jié)點(diǎn)和連接這些結(jié)點(diǎn)的鏈路組成,網(wǎng)絡(luò)中的結(jié)點(diǎn)可以是計(jì)算機(jī)、交換機(jī)、路由器等設(shè)備。通俗地說就是把不同的主機(jī)連接起來就構(gòu)成了一個(gè)網(wǎng)絡(luò),構(gòu)成網(wǎng)路的目的是為了信息交互、資源共享。 網(wǎng)絡(luò)設(shè)備有:交換機(jī)、路由器、集線器 傳輸介質(zhì)有:雙絞線、

    2024年02月11日
    瀏覽(27)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)】第3章 習(xí)題

    現(xiàn)在大量的計(jì)算機(jī)是通過諸如以太網(wǎng)這樣的局域網(wǎng)連入廣域網(wǎng)的,而局域網(wǎng)與廣城網(wǎng)的互聯(lián)是通過( A )實(shí)現(xiàn)的。 A. 路由器 B. 資源子網(wǎng) C. 橋接器 D. 中繼器 下列不屬于數(shù)據(jù)鏈路層功能的是( B )。 A. 幀定界功能 B. 電路管理功能 C. 差錯(cuò)控制功能 D. 流量控制功能 對(duì)于信道比較可靠

    2024年02月09日
    瀏覽(21)
  • 001計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)習(xí)題+答案+解析

    001計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)習(xí)題+答案+解析

    一、填空題(每空2分,共 20 分) _ 數(shù)據(jù)鏈路 ? 層的主要任務(wù)是在相鄰結(jié)點(diǎn)間的線路上無差錯(cuò)地傳送以幀為單位的數(shù)據(jù)。 解析:應(yīng)用層的任務(wù)是:通過應(yīng)用進(jìn)程間的交互來完成特定網(wǎng)絡(luò)應(yīng)用。 運(yùn)輸層的任務(wù)是:負(fù)責(zé)向兩臺(tái)主機(jī)中進(jìn)程之間的通信提供通用的數(shù)據(jù)傳輸服分。 網(wǎng)

    2024年02月02日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包