摘要:一般由三部組成協(xié)議或稱為服務方式存有該資源的主機地址有時也包括端口號主機資源的具體地址。上面的和都是的示例。服務器應答客戶機向服務器發(fā)出請求后,服務器會客戶機回送應答,,應答的第一部分是協(xié)議的版本號和應答狀態(tài)碼。
HTTP常見面試題 Http與Https的區(qū)別:
Http與Https的區(qū)別:
HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 標準端口是80 ,而 HTTPS 的標準端口是443
在OSI 網(wǎng)絡模型中,HTTP工作于應用層,而HTTPS 的安全傳輸機制工作在傳輸層
HTTP 無法加密,而HTTPS 對傳輸?shù)臄?shù)據(jù)進行加密
HTTP無需證書,而HTTPS 需要CA機構(gòu)頒發(fā)的SSL證書
什么是Http協(xié)議無狀態(tài)協(xié)議?怎么解決Http協(xié)議無狀態(tài)協(xié)議?
無狀態(tài)協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息
也就是說,當客戶端一次HTTP請求完成以后,客戶端再發(fā)送一次HTTP請求,HTTP并不知道當前客戶端是一個”老用戶“。
可以使用Cookie來解決無狀態(tài)的問題,Cookie就相當于一個通行證,第一次訪問的時候給客戶端發(fā)送一個Cookie,當客戶端再次來的時候,拿著Cookie(通行證),那么服務器就知道這個是”老用戶“。
URI和URL的區(qū)別URI和URL的區(qū)別
URI,是uniform resource identifier,統(tǒng)一資源標識符,用來唯一的標識一個資源。
Web上可用的每種資源如HTML文檔、圖像、視頻片段、程序等都是一個來URI來定位的
URI一般由三部組成:
①訪問資源的命名機制
②存放資源的主機名
③資源自身的名稱,由路徑表示,著重強調(diào)于資源。
URL是uniform resource locator,統(tǒng)一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明了如何locate這個資源。
URL是Internet上用來描述信息資源的字符串,主要用在各種WWW客戶程序和服務器程序上,特別是著名的Mosaic。
采用URL可以用一種統(tǒng)一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。URL一般由三部組成:
①協(xié)議(或稱為服務方式)
②存有該資源的主機IP地址(有時也包括端口號)
③主機資源的具體地址。如目錄和文件名等
URN,uniform resource name,統(tǒng)一資源命名,是通過名字來標識資源,比如mailto:[email protected]。
URI是以一種抽象的,高層次概念定義統(tǒng)一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統(tǒng)地說,每個 URL 都是 URI,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類,即統(tǒng)一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
在Java的URI中,一個URI實例可以代表絕對的,也可以是相對的,只要它符合URI的語法規(guī)則。而URL類則不僅符合語義,還包含了定位該資源的信息,因此它不能是相對的。
在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。
相反的是,URL類可以打開一個到達資源的流。
常用的HTTP方法有哪些?常用的HTTP方法有哪些?
GET: 用于請求訪問已經(jīng)被URI(統(tǒng)一資源標識符)識別的資源,可以通過URL傳參給服務器
POST:用于傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
PUT: 傳輸文件,報文主體中包含文件內(nèi)容,保存到對應URI位置。
HEAD: 獲得報文首部,與GET方法類似,只是不返回報文主體,一般用于驗證URI是否有效。
DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。
OPTIONS:查詢相應URI支持的HTTP方法。
HTTP請求報文與響應報文格式HTTP請求報文與響應報文格式
請求報文包含四部分:
a、請求行:包含請求方法、URI、HTTP版本信息
b、請求首部字段
c、請求內(nèi)容實體
d、空行
響應報文包含四部分:
a、狀態(tài)行:包含HTTP版本、狀態(tài)碼、狀態(tài)碼的原因短語
b、響應首部字段
c、響應內(nèi)容實體
d、空行
常見的首部:
通用首部字段(請求報文與響應報文都會使用的首部字段)
Date:創(chuàng)建報文時間
Connection:連接的管理
Cache-Control:緩存的控制
Transfer-Encoding:報文主體的傳輸編碼方式
請求首部字段(請求報文會使用的首部字段)
Host:請求資源所在服務器
Accept:可處理的媒體類型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的內(nèi)容編碼
Accept-Language:可接受的自然語言
響應首部字段(響應報文會使用的首部字段)
Accept-Ranges:可接受的字節(jié)范圍
Location:令客戶端重新定向到的URI
Server:HTTP服務器的安裝信息
實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)
Allow:資源可支持的HTTP方法
Content-Type:實體主類的類型
Content-Encoding:實體主體適用的編碼方式
Content-Language:實體主體的自然語言
Content-Length:實體主體的的字節(jié)數(shù)
Content-Range:實體主體的位置范圍,一般用于發(fā)出部分請求時使用
HTTPS工作原理HTTPS工作原理
一、首先HTTP請求服務端生成證書,客戶端對證書的有效期、合法性、域名是否與請求的域名一致、證書的公鑰(RSA加密)等進行校驗;
二、客戶端如果校驗通過后,就根據(jù)證書的公鑰的有效, 生成隨機數(shù),隨機數(shù)使用公鑰進行加密(RSA加密);
三、消息體產(chǎn)生的后,對它的摘要進行MD5(或者SHA1)算法加密,此時就得到了RSA簽名;
四、發(fā)送給服務端,此時只有服務端(RSA私鑰)能解密。
五、解密得到的隨機數(shù),再用AES加密,作為密鑰(此時的密鑰只有客戶端和服務端知道)。
具體的參考鏈接:http://blog.csdn.net/sean_cd/article/details/6966130
一次完整的HTTP請求所經(jīng)歷的7個步驟一次完整的HTTP請求所經(jīng)歷的7個步驟
HTTP通信機制是在一次完整的HTTP通信過程中,Web瀏覽器與Web服務器之間將完成下列7個步驟:
建立TCP連接
在HTTP工作開始之前,Web瀏覽器首先要通過網(wǎng)絡與Web服務器建立連接,該連接是通過TCP來完成的,該協(xié)議與IP協(xié)議共同構(gòu)建 Internet,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網(wǎng)絡。HTTP是比TCP更高層次的應用層協(xié)議,根據(jù)規(guī)則, 只有低層協(xié)議建立之后才能,才能進行更層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號是80。
Web瀏覽器向Web服務器發(fā)送請求行
一旦建立了TCP連接,Web瀏覽器就會向Web服務器發(fā)送請求命令。例如:GET /sample/hello.jsp HTTP/1.1。
Web瀏覽器發(fā)送請求頭
瀏覽器發(fā)送其請求命令之后,還要以頭信息的形式向Web服務器發(fā)送一些別的信息,之后瀏覽器發(fā)送了一空白行來通知服務器,它已經(jīng)結(jié)束了該頭信息的發(fā)送。
Web服務器應答
客戶機向服務器發(fā)出請求后,服務器會客戶機回送應答, HTTP/1.1 200 OK ,應答的第一部分是協(xié)議的版本號和應答狀態(tài)碼。
Web服務器發(fā)送應答頭
正如客戶端會隨同請求發(fā)送關于自身的信息一樣,服務器也會隨同應答向用戶發(fā)送關于它自己的數(shù)據(jù)及被請求的文檔。
Web服務器向瀏覽器發(fā)送數(shù)據(jù)
Web服務器向瀏覽器發(fā)送頭信息后,它會發(fā)送一個空白行來表示頭信息的發(fā)送到此為結(jié)束,接著,它就以Content-Type應答頭信息所描述的格式發(fā)送用戶所請求的實際數(shù)據(jù)。
Web服務器關閉TCP連接
一般情況下,一旦Web服務器向瀏覽器發(fā)送了請求數(shù)據(jù),它就要關閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼:
Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài),于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求。保持連接節(jié)省了為每個請求建立新連接所需的時間,還節(jié)約了網(wǎng)絡帶寬。
建立TCP連接->發(fā)送請求行->發(fā)送請求頭->(到達服務器)發(fā)送狀態(tài)行->發(fā)送響應頭->發(fā)送響應數(shù)據(jù)->斷TCP連接
最具體的HTTP請求過程:http://blog.51cto.com/linux5588/1351007
常見的HTTP相應狀態(tài)碼常見的HTTP相應狀態(tài)碼
200:請求被正常處理
204:請求被受理但沒有資源可以返回
206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執(zhí)行GET方法,相應報文中通過Content-Range指定范圍的資源。
301:永久性重定向
302:臨時重定向
303:與302狀態(tài)碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上
304:發(fā)送附帶條件的請求時,條件不滿足時返回,與重定向無關
307:臨時重定向,與302類似,只是強制要求使用POST方法
400:請求報文語法有誤,服務器無法識別
401:請求需要認證
403:請求的對應資源禁止被訪問
404:服務器無法找到對應資源
500:服務器內(nèi)部錯誤
503:服務器正忙
HTTP1.1版本新特性HTTP1.1版本新特性
a、默認持久連接節(jié)省通信量,只要客戶端服務端任意一端沒有明確提出斷開TCP連接,就一直保持連接,可以發(fā)送多次HTTP請求
b、管線化,客戶端可以同時發(fā)出多個HTTP請求,而不用一個個等待響應
c、斷點續(xù)傳
實際上就是利用HTTP消息頭使用分塊傳輸編碼,將實體主體分塊傳輸。
HTTP優(yōu)化方案我下面就簡要概括一下:
TCP復用:TCP連接復用是將多個客戶端的HTTP請求復用到一個服務器端TCP連接上,而HTTP復用則是一個客戶端的多個HTTP請求通過一個TCP連接進行處理。前者是負載均衡設備的獨特功能;而后者是HTTP 1.1協(xié)議所支持的新功能
內(nèi)容緩存:將經(jīng)常用到的內(nèi)容進行緩存起來,那么客戶端就可以直接在內(nèi)存中獲取相應的數(shù)據(jù)了。
壓縮:將文本數(shù)據(jù)進行壓縮,減少帶寬
SSL加速(SSL Acceleration):使用SSL協(xié)議對HTTP協(xié)議進行加密,在通道內(nèi)加密并加速
TCP緩沖:通過采用TCP緩沖技術,可以提高服務器端響應時間和處理效率,減少由于通信鏈路問題給服務器造成的連接負擔。
詳情參考:
http://blog.51cto.com/virtualadc/580832
http://www.cnblogs.com/cocowool/archive/2011/08/22/2149929.html
如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章的同學,可以關注微信公眾號:Java3y
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70981.html
摘要:當被實例化后,會調(diào)用方法初始化這個對象處理服務。方式可以在請求的實體內(nèi)容中向服務器發(fā)送數(shù)據(jù),傳送的數(shù)據(jù)量無限制。不存在敏感信息泄露問題。并且依賴于名為的,該默認的屬性為。 下面是我整理下來的Servlet知識點: showImg(https://segmentfault.com/img/bV3c9e);? 圖上的知識點都可以在我其他的文章內(nèi)找到相應內(nèi)容。 Tomcat常見面試題 Tom...
摘要:當被實例化后,會調(diào)用方法初始化這個對象處理服務。方式可以在請求的實體內(nèi)容中向服務器發(fā)送數(shù)據(jù),傳送的數(shù)據(jù)量無限制。不存在敏感信息泄露問題。并且依賴于名為的,該默認的屬性為。 下面是我整理下來的Servlet知識點: showImg(https://segmentfault.com/img/bV3c9e);? 圖上的知識點都可以在我其他的文章內(nèi)找到相應內(nèi)容。 Tomcat常見面試題 Tom...
摘要:是什么是什么也是常用的技術,用于將一個文件轉(zhuǎn)換為另一種,或者其他的格式。也可以很方便地把一種文件轉(zhuǎn)換為另一種文檔如果文章有錯的地方歡迎指正,大家互相交流。 XML+JSON常見面試題 什么是JSON和XML 什么是JSON和XML JSON:JavaScript Object Notation 【JavaScript 對象表示法】. XML:extensiable markup lan...
摘要:是什么是什么也是常用的技術,用于將一個文件轉(zhuǎn)換為另一種,或者其他的格式。也可以很方便地把一種文件轉(zhuǎn)換為另一種文檔如果文章有錯的地方歡迎指正,大家互相交流。 XML+JSON常見面試題 什么是JSON和XML 什么是JSON和XML JSON:JavaScript Object Notation 【JavaScript 對象表示法】. XML:extensiable markup lan...
閱讀 736·2023-04-25 19:43
閱讀 3981·2021-11-30 14:52
閱讀 3807·2021-11-30 14:52
閱讀 3871·2021-11-29 11:00
閱讀 3802·2021-11-29 11:00
閱讀 3904·2021-11-29 11:00
閱讀 3580·2021-11-29 11:00
閱讀 6183·2021-11-29 11:00