一、概念
HTTP協(xié)議:即超文本傳輸協(xié)議(Hypertext transfer protocol)。是一種詳細(xì)規(guī)定了瀏覽器和Web服務(wù)器之間互相通信的規(guī)則,它允許將超文本標(biāo)記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器。
它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。
HTTP是一個應(yīng)用層協(xié)議,由請求和響應(yīng)構(gòu)成,是一個標(biāo)準(zhǔn)的客戶端服務(wù)器模型。HTTP是一個無狀態(tài)的協(xié)議。
在Internet中所有的傳輸都是通過TCP/IP進(jìn)行的。HTTP協(xié)議作為TCP/IP模型中應(yīng)用層的協(xié)議也不例外。HTTP協(xié)議通常承載于TCP協(xié)議之上,有時也承載于TLS或SSL協(xié)議層之上,這個時候,就成了我們常說的HTTPS。
HTTP是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。它于1990年提出,經(jīng)過幾年的使用與發(fā)展,得到不斷地完善和擴(kuò)展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規(guī)范化工作正在進(jìn)行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經(jīng)提出。
無狀態(tài)協(xié)議:
協(xié)議的狀態(tài)是指下一次傳輸可以“記住”這次傳輸信息的能力。
HTTP是不會為了下一次連接而維護(hù)這次連接所傳輸?shù)男畔?為了保證服務(wù)器內(nèi)存。
比如客戶獲得一張網(wǎng)頁之后關(guān)閉瀏覽器,然后再一次啟動瀏覽器,再登陸該網(wǎng)站,但是服務(wù)器并不知道客戶關(guān)閉了一次瀏覽器。
由于Web服務(wù)器要面對很多瀏覽器的并發(fā)訪問,為了提高Web服務(wù)器對并發(fā)訪問的處理能力,在設(shè)計HTTP協(xié)議時規(guī)定Web服務(wù)器發(fā)送HTTP應(yīng)答報文和文檔時,不保存發(fā)出請求的Web瀏覽器進(jìn)程的任何狀態(tài)信息。這有可能出現(xiàn)一個瀏覽器在短短幾秒之內(nèi)兩次訪問同一對象時,服務(wù)器進(jìn)程不會因為已經(jīng)給它發(fā)過應(yīng)答報文而不接受第二期服務(wù)請求。由于Web服務(wù)器不保存發(fā)送請求的Web瀏覽器進(jìn)程的任何信息,因此HTTP協(xié)議屬于無狀態(tài)協(xié)議(Stateless Protocol)。
HTTP協(xié)議是無狀態(tài)的和Connection: keep-alive的區(qū)別:
無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力,服務(wù)器不知道客戶端是什么狀態(tài)。從另一方面講,打開一個服務(wù)器上的網(wǎng)頁和你之前打開這個服務(wù)器上的網(wǎng)頁之間沒有任何聯(lián)系。
HTTP是一個無狀態(tài)的面向連接的協(xié)議,無狀態(tài)不代表HTTP不能保持TCP連接,更不能代表HTTP使用的是UDP協(xié)議(無連接)。
從HTTP/1.1起,默認(rèn)都開啟了Keep-Alive,保持連接特性,簡單地說,當(dāng)一個網(wǎng)頁打開完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會關(guān)閉,如果客戶端再次訪問這個服務(wù)器上的網(wǎng)頁,會繼續(xù)使用這一條已經(jīng)建立的連接。
Keep-Alive不會永久保持連接,它有一個保持時間,可以在不同的服務(wù)器軟件(如Apache)中設(shè)定這個時間。
HTTP中文譯名問題
HTTP超文本傳輸協(xié)議,聽上去像是傳輸層的協(xié)議一樣,但事實上大家都知道HTTP和FTP一樣都是屬于應(yīng)用層的協(xié)議。既然是應(yīng)用層的協(xié)議,怎 么就取這樣一個誤導(dǎo)人的名稱?在對TCP/IP協(xié)議還不熟悉的時候,這很容易讓人誤解和納悶的。在wiki上有這么一段話:
HTTP在中國大陸被翻譯為“超文本傳輸協(xié)議”,因為“transfer”在中文里有“傳輸”的含意。但依據(jù) HTTP 定制者之一的 Roy Fielding博士的論文(6.5.3節(jié)),作者專門強(qiáng)調(diào)“transfer”表示的是“(表述狀態(tài)的)轉(zhuǎn)移” (Representational State Transfer),而不是“傳輸”(transport)。故其中文譯名“超文本傳輸協(xié)議”恰恰反映了這種誤解。更符合原義的譯名應(yīng)該為“超文本轉(zhuǎn)移協(xié)議”。
二、特點
HTTP協(xié)議的主要特點可概括如下:
支持客戶/服務(wù)器模式。支持基本認(rèn)證和安全認(rèn)證。
簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
HTTP 0.9和1.0使用非持續(xù)連接:限制每次連接只處理一個請求,服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。
HTTP 1.1使用持續(xù)連接:不必為每個Web對象創(chuàng)建一個新的連接,一個連接可以傳送多個對象,采用這種方式可以節(jié)省傳輸時間。
無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。
永遠(yuǎn)都是客戶端發(fā)起請求,服務(wù)器回送響應(yīng)。這樣就限制了使用HTTP協(xié)議,無法實現(xiàn)在客戶端沒有發(fā)起請求的時候,服務(wù)器將消息推送給客戶端。
HTTP默認(rèn)的端口號為80,HTTPS的端口號為443。
三、工作流程
一次HTTP操作稱為一個事務(wù),其工作過程可分為四步:
首先客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個超級鏈接,HTTP的工作開始。
建立連接后,客戶機(jī)發(fā)送一個請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號,后邊是MIME信息包括請求修飾符、客戶機(jī)信息和可能的內(nèi)容。
服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務(wù)器信息、實體信息和可能的內(nèi)容。
客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機(jī)與服務(wù)器斷開連接。
如果在以上過程中的某一步出現(xiàn)錯誤,那么產(chǎn)生錯誤的信息將返回到客戶端,有顯示屏輸出。對于用戶來說,這些過程是由HTTP自己完成的,用戶只要用鼠標(biāo)點擊,等待信息顯示就可以了。
HTTP是基于傳輸層的TCP協(xié)議,而TCP是一個端到端的面向連接的協(xié)議。所謂的端到端可以理解為進(jìn)程到進(jìn)程之間的通信。所以HTTP在開始傳輸之前,首先需要建立TCP連接,而TCP連接的過程需要所謂的“三次握手”。在TCP三次握手之后,建立了TCP連接,此時HTTP就可以進(jìn)行傳輸了。一個重要的概念是面向連接,既HTTP在傳輸完成之間并不斷開TCP連接。在HTTP1.1中(通過Connection頭設(shè)置)這是默認(rèn)行為。
四、頭域
每個頭域由一個域名,冒號(:)和域值三部分組成。域名是大小寫無關(guān)的,域值前可以添加任何數(shù)量的空格符,頭域可以被擴(kuò)展為多行,在每行開始處,使用至少一個空格或制表符。
HTTP消息由客戶端到服務(wù)器的請求和服務(wù)器到客戶端的響應(yīng)組成。請求消息和響應(yīng)消息都是由開始行(對于請求消息,開始行就是請求行,對于響應(yīng)消息,開始行就是狀態(tài)行),消息報頭(可選),空行(只有CRLF的行),消息正文(可選)組成。
1、 請求消息
HTTP請求由三部分組成,分別是:請求行、消息報頭、請求正文。發(fā)出的請求消息格式如下:
請求行,例如GET /images/logo.gif HTTP/1.1,表示從/images目錄下請求logo.gif這個文件。
請求頭,每一個報頭域都是由名字+“:”+空格+值 組成,消息報頭域的名字是大小寫無關(guān)的。例如Accept-Language: en
可選的消息體 請求行和標(biāo)題必須以
(1)請求行
以一個請求方法開頭,以空格分開,后面跟著請求的URI和協(xié)議的版本。
格式如下:Method Request-URI HTTP-Version CRLF
Method表示請求方法;
Request-URI是一個統(tǒng)一資源標(biāo)識符;
HTTP-Version表示請求的HTTP協(xié)議版本;
CRLF表示回車和換行(除了作為結(jié)尾的CRLF外,不允許出現(xiàn)單獨的CR或LF字符)。
a.請求方法:
HTTP/1.1協(xié)議中共定義了八種方法(有時也叫“動作”)來表明Request-URI指定的資源的不同操作方式: GET 向特定的資源發(fā)出請求。注意:GET方法不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中,例如在web app.中。其中一個原因是GET可能會被網(wǎng)絡(luò)蜘蛛等隨意訪問。 POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。 HEAD 向服務(wù)器索要與GET請求相一致的響應(yīng),只不過響應(yīng)體將不會被返回。這一方法可以在不必傳輸整個響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息。該方法常用于測試超鏈接的有效性,是否可以訪問,以及最近是否更新。 PUT 向指定資源位置上傳其最新內(nèi)容。 DELETE 請求服務(wù)器刪除Request-URI所標(biāo)識的資源。 TRACE 回顯服務(wù)器收到的請求,主要用于測試或診斷。 CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。 OPTIONS 返回服務(wù)器針對特定資源所支持的HTTP請求方法。也可以利用向Web服務(wù)器發(fā)送'*'的請求來測試服務(wù)器的功能性。 注:HTTP服務(wù)器至少應(yīng)該實現(xiàn)GET和HEAD方法,其他方法都是可選的。此外,除了上述方法,特定的HTTP服務(wù)器還能夠擴(kuò)展自定義的方法。
b.GET和POST的區(qū)別:
GET提交的數(shù)據(jù)會放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中。
GET提交的數(shù)據(jù)大小有限制,最多只能有1024字節(jié)(因為瀏覽器對URL的長度有限制),而POST方法提交的數(shù)據(jù)沒有限制。
GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值。
GET方式提交數(shù)據(jù),會帶來安全問題,比如一個登錄頁面,通過GET方式提交數(shù)據(jù)時,用戶名和密碼將出現(xiàn)在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機(jī)器,就可以從歷史記錄獲得該用戶的賬號和密碼。
(2)請求報頭
請求報頭允許客戶端向服務(wù)器端傳遞請求的附加信息以及客戶端自身的信息。
2、響應(yīng)消息
HTTP響應(yīng)由三部分組成,分別是:狀態(tài)行、響應(yīng)報頭、響應(yīng)正文。 客戶端向服務(wù)器發(fā)送一個請求,服務(wù)器以一個狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括:消息協(xié)議的版本、成功或者錯誤編碼、服務(wù)器信息、實體元信息以及必要的實體內(nèi)容。根據(jù)響應(yīng)類別的類別,服務(wù)器響應(yīng)里可以含實體內(nèi)容,但不是所有的響應(yīng)都有實體內(nèi)容。
(1)狀態(tài)行
響應(yīng)頭第一行也稱為狀態(tài)行,格式如下:
HTTP-Version 空格 Status-Code 空格 Reason-Phrase CRLF
HTTP-Version表示HTTP版本,例如為HTTP/1.1。
Status-Code是結(jié)果狀態(tài)響應(yīng)碼,用三個數(shù)字表示。
Reason-Phrase是個簡單的文本描述,解釋Status-Code的具體原因。Status-Code用于機(jī)器自動識別,Reason-Phrase用于人工理解。Status-Code的第一個數(shù)字代表響應(yīng)類別,可能取5個不同的值。后兩個數(shù)字沒有分類作用。Status-Code的第一個數(shù)字代表響應(yīng)的類別,后續(xù)兩位描述在該類響應(yīng)下發(fā)生的具體狀況
a.狀態(tài)響應(yīng)碼: 無論你何時瀏覽一個網(wǎng)頁,你的電腦都會通過一個使用HTTP協(xié)議的服務(wù)器來獲取所請求的數(shù)據(jù)。在你請求的網(wǎng)頁顯示在瀏覽器之前,支配網(wǎng)頁的網(wǎng)站服務(wù)器會返回一個包含有狀態(tài)碼的HTTP頭文件。這個狀態(tài)碼提供了有關(guān)所請求網(wǎng)頁的相關(guān)條件信息。如果一切正常,一個標(biāo)準(zhǔn)網(wǎng)頁會收到一條諸如200的狀態(tài)碼。當(dāng)然我們的目的不是去研究200響應(yīng)碼,而是去探討那些代表出現(xiàn)錯誤信息的服務(wù)器頭文件響應(yīng)碼,例如表示“未找到指定網(wǎng)頁”的404碼。
(2)響應(yīng)報頭
服務(wù)器需要傳遞許多附加信息,這些信息不能全放在狀態(tài)行里。因此,需要另行定義響應(yīng)報頭,用來描述這些附加信息。響應(yīng)報頭主要描述服務(wù)器的信息和Request-URI的信息。
五、緩存的實現(xiàn)原理
Web緩存(cache)位于Web服務(wù)器和客戶端之間,緩存會根據(jù)請求保存輸出內(nèi)容的副本,例如html頁面,圖片,文件,當(dāng)下一個請求來到的時候:如果是相同的URL,緩存直接使用副本響應(yīng)訪問請求,而不是向源服務(wù)器再次發(fā)送請求。 HTTP協(xié)議定義了相關(guān)的消息頭來使Web緩存盡可能好的工作。
1.緩存的優(yōu)點 減少相應(yīng)延遲:因為請求從緩存服務(wù)器(離客戶端更近)而不是源服務(wù)器被相應(yīng),這個過程耗時更少,讓W(xué)eb服務(wù)器看上去相應(yīng)更快。 減少網(wǎng)絡(luò)帶寬消耗:當(dāng)副本被重用時會減低客戶端的帶寬消耗;客戶可以節(jié)省帶寬費用,控制帶寬的需求的增長并更易于管理。
2.客戶端緩存生效的常見流程 服務(wù)器收到請求時,會在200OK中回送該資源的Last-Modified和ETag頭,客戶端將該資源保存在cache中,并記錄這兩個屬性。當(dāng)客戶端需要發(fā)送相同的請求時,會在請求中攜帶If-Modified-Since和If-None-Match兩個頭。兩個頭的值分別是響應(yīng)中Last-Modified和ETag頭的值。服務(wù)器通過這兩個頭判斷本地資源未發(fā)生變化,客戶端不需要重新下載,返回304響應(yīng)。
3.Web緩存機(jī)制
HTTP/1.1中緩存的目的是為了在很多情況下減少發(fā)送請求,同時在許多情況下可以不需要發(fā)送完整響應(yīng)。前者減少了網(wǎng)絡(luò)回路的數(shù)量;HTTP利用一個“過期(expiration)”機(jī)制來為此目的。后者減少了網(wǎng)絡(luò)應(yīng)用的帶寬;HTTP用“驗證(validation)”機(jī)制來為此目的。 HTTP定義了3種緩存機(jī)制:
(1)、Freshness:允許一個回應(yīng)消息可以在源服務(wù)器不被重新檢查,并且可以由服務(wù)器和客戶端來控制。例如,Expires回應(yīng)頭給了一個文檔不可用的時間。Cache-Control中的max-age標(biāo)識指明了緩存的最長時間;
(2)、Validation:用來檢查以一個緩存的回應(yīng)是否仍然可用。例如,如果一個回應(yīng)有一個Last-Modified回應(yīng)頭,緩存能夠使用If-Modified-Since來判斷是否已改變,以便判斷根據(jù)情況發(fā)送請求;
(3)、Invalidation:在另一個請求通過緩存的時候,常常有一個副作用。例如,如果一個URL關(guān)聯(lián)到一個緩存回應(yīng),但是其后跟著POST、PUT和DELETE的請求的話,緩存就會過期。
六、應(yīng)用
1. 斷點續(xù)傳的實現(xiàn)原理
HTTP協(xié)議的GET方法,支持只請求某個資源的某一部分; 206 Partial Content 部分內(nèi)容響應(yīng); Range 請求的資源范圍; Content-Range 響應(yīng)的資源范圍; 在連接斷開重連時,客戶端只請求該資源未下載的部分,而不是重新請求整個資源,來實現(xiàn)斷點續(xù)傳。 分塊請求資源實例:
Eg1:Range: bytes=306302- :請求這個資源從306302個字節(jié)到末尾的部分; Eg2:Content-Range: bytes 306302-604047/604048:響應(yīng)中指示攜帶的是該資源的第306302-604047的字節(jié),該資源共604048個字節(jié); 客戶端通過并發(fā)的請求相同資源的不同片段,來實現(xiàn)對某個資源的并發(fā)分塊下載。從而達(dá)到快速下載的目的。目前流行的FlashGet和迅雷基本都是這個原理。
2. 多線程下載的原理
下載工具開啟多個發(fā)出HTTP請求的線程; 每個HTTP請求只請求資源文件的一部分:Content-Range: bytes 20000-40000/47000; 合并每個線程下載的文件。
3.HTTP代理
HTTP代理服務(wù)器:
代理服務(wù)器英文全稱是Proxy Server,其功能就是代理網(wǎng)絡(luò)用戶去取得網(wǎng)絡(luò)信息。形象的說:它是網(wǎng)絡(luò)信息的中轉(zhuǎn)站。
代理服務(wù)器是介于瀏覽器和Web服務(wù)器之間的一臺服務(wù)器,有了它之后,瀏覽器不是直接到Web服務(wù)器去取回網(wǎng)頁而是向代理服務(wù)器發(fā)出請求,Request信號會先送到代理服務(wù)器,由代理服務(wù)器來取回瀏覽器所需要的信息并傳送給你的瀏覽器。
而且,大部分代理服務(wù)器都具有緩沖的功能,就好象一個大的Cache,它有很大的存儲空間,它不斷將新取得數(shù)據(jù)儲存到它本機(jī)的存儲器上,如果瀏覽器所請求的數(shù)據(jù)在它本機(jī)的存儲器上已經(jīng)存在而且是最新的,那么它就不重新從Web服務(wù)器取數(shù)據(jù),而直接將存儲器上的數(shù)據(jù)傳送給用戶的瀏覽器,這樣就能顯著提高瀏覽速度和效率。更重要的是:Proxy Server(代理服務(wù)器)是Internet鏈路級網(wǎng)關(guān)所提供的一種重要的安全功能,它的工作主要在開放系統(tǒng)互聯(lián)(OSI)模型的對話層。 HTTP代理服務(wù)器的主要功能:
(1)、突破自身IP訪問限制,訪問國外站點。如:教育網(wǎng)、169網(wǎng)等網(wǎng)絡(luò)用戶可以通過代理訪問國外網(wǎng)站;
(2)、訪問一些單位或團(tuán)體內(nèi)部資源,如某大學(xué)FTP(前提是該代理地址在該資源的允許訪問范圍之內(nèi)),使用教育網(wǎng)內(nèi)地址段免費代理服務(wù)器,就可以用于對教育 網(wǎng)開放的各類FTP下載上傳,以及各類資料查詢共享等服務(wù);
(3)、突破中國電信的IP封鎖:中國電信用戶有很多網(wǎng)站是被限制訪問的,這種限制是人為的,不同Serve對地址的封鎖是不同的。所以不能訪問時可以換一個國外的代理服務(wù)器試試;
(4)、提高訪問速度:通常代理服務(wù)器都設(shè)置一個較大的硬盤緩沖區(qū),當(dāng)有外界的信息通過時,同時也將其保存到緩沖區(qū)中,當(dāng)其他用戶再訪問相同的信息時,則直接由緩沖區(qū)中取出信息,傳給用戶,以提高訪問速度;
(5)、隱藏真實IP:上網(wǎng)者也可以通過這種方法隱藏自己的IP,免受攻擊。 對于客戶端瀏覽器而言,HTTP代理服務(wù)器相當(dāng)于服務(wù)器。 而對于Web服務(wù)器而言,HTTP代理服務(wù)器又擔(dān)當(dāng)了客戶端的角色。
4.虛擬主機(jī)
虛擬主機(jī):是在網(wǎng)絡(luò)服務(wù)器上劃分出一定的磁盤空間供用戶放置站點、應(yīng)用組件等,提供必要的站點功能與數(shù)據(jù)存放、傳輸功能。
所謂虛擬主機(jī),也叫“網(wǎng)站空間”就是把一臺運(yùn)行在互聯(lián)網(wǎng)上的服務(wù)器劃分成多個“虛擬”的服務(wù)器,每一個虛擬主機(jī)都具有獨立的域名和完整的Internet服務(wù)器(支持WWW、FTP、E-mail等)功能。一臺服務(wù)器上的不同虛擬主機(jī)是各自獨立的,并由用戶自行管理。但一臺服務(wù)器主機(jī)只能夠支持一定數(shù)量的虛擬主機(jī),當(dāng)超過這個數(shù)量時,用戶將會感到性能急劇下降。
虛擬主機(jī)的實現(xiàn)原理: 虛擬主機(jī)是用同一個Web服務(wù)器,為不同域名網(wǎng)站提供服務(wù)的技術(shù)。Apache、Tomcat等均可通過配置實現(xiàn)這個功能。 相關(guān)的HTTP消息頭:Host。 例如:Host: luyucheng.cnblogs.com 客戶端發(fā)送HTTP請求的時候,會攜帶Host頭,Host頭記錄的是客戶端輸入的域名。這樣服務(wù)器可以根據(jù)Host頭確認(rèn)客戶要訪問的是哪一個域名。
審核編輯:劉清
-
TCP
+關(guān)注
關(guān)注
8文章
1374瀏覽量
79153 -
Web服務(wù)器
+關(guān)注
關(guān)注
0文章
138瀏覽量
24439 -
HTTP協(xié)議
+關(guān)注
關(guān)注
0文章
66瀏覽量
9749 -
TLS
+關(guān)注
關(guān)注
0文章
44瀏覽量
4261
原文標(biāo)題:架構(gòu)基礎(chǔ)之了解一下HTTP協(xié)議
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論