自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTTP最基礎(chǔ)的內(nèi)容,面試還不會?

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
HTTP 是一種無狀態(tài)協(xié)議,也就是說服務(wù)器并不會維護(hù)客戶端的狀態(tài)信息。所以就有了 Cookie 和 Session 的出現(xiàn)了。而 Cookie 和 Session 就是用來維持狀態(tài)的。

我們都知道關(guān)于 HTTP 一直都是面試?yán)锩娼?jīng)常被問到的內(nèi)容,也是在開發(fā)的時(shí)候遇到的一些關(guān)于 HTTP 的狀態(tài)碼的問題,從而來定位解決問題。今天了不起就來說一下這個(gè)關(guān)于 HTTP 的相關(guān)知識。

HTTP

什么是 HTTP 呢?

HTTP 稱為 超文本傳輸協(xié)議(Hypertext Transfer Protocol,HTTP)是一個(gè)簡單的請求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上。它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。

HTTP 的迭代:

  • 0.9

0.9協(xié)議是適用于各種數(shù)據(jù)信息的簡潔快速協(xié)議,但是遠(yuǎn)不能滿足日益發(fā)展的各種應(yīng)用的需要。0.9協(xié)議就是一個(gè)交換信息的無序協(xié)議,僅僅限于文字。由于無法進(jìn)行內(nèi)容的協(xié)商,在雙發(fā)的握手和協(xié)議中,并有規(guī)定雙發(fā)的內(nèi)容是什么,也就是圖片是無法顯示和處理的。

  • 1.0

到了1.0協(xié)議階段,也就是在1982年,Tim Berners-Lee提出了HTTP/1.0。在此后的不斷豐富和發(fā)展中,HTTP/1.0成為最重要的面向事務(wù)的應(yīng)用層協(xié)議。該協(xié)議對每一次請求/響應(yīng)建立并拆除一次連接。其特點(diǎn)是簡單、易于管理,所以它符合了大家的需要,得到了廣泛的應(yīng)用。

  • 1.1

在1.0協(xié)議中,雙方規(guī)定了連接方式和連接類型,這已經(jīng)極大擴(kuò)展了HTTP的領(lǐng)域,但對于互聯(lián)網(wǎng)最重要的速度和效率,并沒有太多的考慮。畢竟,作為協(xié)議的制定者,當(dāng)時(shí)也沒有想到HTTP會有那么快的普及速度。

  • 2.0

HTTP2.0的前身是HTTP1.0和HTTP1.1。雖然之前僅僅只有兩個(gè)版本,但這兩個(gè)版本所包含的協(xié)議規(guī)范之龐大,足以讓任何一個(gè)有經(jīng)驗(yàn)的工程師為之頭疼。網(wǎng)絡(luò)協(xié)議新版本并不會馬上取代舊版本。實(shí)際上,1.0和1.1在之后很長的一段時(shí)間內(nèi)一直并存,這是由于網(wǎng)絡(luò)基礎(chǔ)設(shè)施更新緩慢所決定的。

HTTP 工作原理

HTTP是基于客戶/服務(wù)器模式,且面向連接的。典型的HTTP事務(wù)處理有如下的過程:

  • 客戶與服務(wù)器建立連接;
  • 客戶向服務(wù)器提出請求;
  • 服務(wù)器接受請求,并根據(jù)請求返回相應(yīng)的文件作為應(yīng)答;
  • 客戶與服務(wù)器關(guān)閉連接。

其實(shí)也可以理解為下面的五個(gè)步驟

  • 客戶端向服務(wù)器發(fā)送請求消息,請求消息中包含請求方法、URL、協(xié)議版本以及請求頭等信息。
  • 服務(wù)器接收到請求消息后,根據(jù)請求消息的URL和相應(yīng)的處理邏輯,生成服務(wù)器響應(yīng)消息,并將其發(fā)送給客戶端。
  • 響應(yīng)消息中包含協(xié)議版本、狀態(tài)碼、響應(yīng)頭和響應(yīng)體等信息。
  • 客戶端接收到響應(yīng)消息之后,會根據(jù)自身的處理方式進(jìn)行處理,例如如果是網(wǎng)頁,客戶端會解析響應(yīng)體中的HTML代碼并渲染出網(wǎng)頁。
  • 如果需要繼續(xù)與服務(wù)器通信,客戶端可以發(fā)起新的請求,并重復(fù)上述步驟。

而且 在HTTP協(xié)議中,客戶端和服務(wù)器之間不會保持持久連接,每次請求需要重新與服務(wù)器建立連接。

又因?yàn)?HTTP 是一種無狀態(tài)協(xié)議,也就是說服務(wù)器并不會維護(hù)客戶端的狀態(tài)信息。所以就有了 Cookie 和 Session 的出現(xiàn)了。而 Cookie 和 Session 就是用來維持狀態(tài)的。

說到狀態(tài),我們就又想到了狀態(tài)碼,那么 HTTP 的狀態(tài)碼都有哪些呢?

了不起直接就想到了 200,404 ,500 這些狀態(tài)碼,那么我們再來看一下 HTTP 的狀態(tài)碼有多少吧。

HTTP狀態(tài)碼

不得不說,還真挺多,不看不知道,一看嚇一跳那種。

1xx(信息性狀態(tài)碼)

  • 100 Continue
  • 101 Switching Protocols
  • 102 Processing

2xx(成功狀態(tài)碼)

  • 200 OK
  • 201 Created
  • 202 Accepted

204 No Content

  • 207 Multi-Status

3xx(重定向狀態(tài)碼)

  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 307 Temporary Redirect

4xx(客戶端錯(cuò)誤狀態(tài)碼)

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 405 Method Not Allowable
  • 408 Request Time-Out

5xx(服務(wù)器錯(cuò)誤狀態(tài)碼)

  • 500 Internal Server Error
  • 501 NotImplemented
  • 502 Bad Gateway
  • 503 Service Unavailable

既然都了解了 HTTP  那么必然就引出了 HTTPS 為什么呢?因?yàn)槟阍陂_發(fā)的過程中有沒有遇到過的那種,有些頁面訪問地址是 HTTP 也有些頁面是 HTTPS 的,那么 HTTP 和 HTTPS 有什么區(qū)別和聯(lián)系呢?

HTTPS

HTTPS :是以安全為目標(biāo)的HTTP通道, 通俗說就是安全版本的HTTP

為啥叫做HTTPS , S的含義, SSL:加密,在HTTP下加入SSL層

那加入 SSL 層的意義在哪呢?

因?yàn)镠TTP的請求信息是明文傳輸, 容易被竊取 HTTP不會驗(yàn)證對方的信息, 存在被冒充的風(fēng)險(xiǎn) 數(shù)據(jù)的完整性沒有校驗(yàn), 容易被中間人篡改,所以就會增加了 SSL 來保證安全。

SSL操作步驟:

  • 驗(yàn)證服務(wù)器端
  • 允許客戶端和服務(wù)端選擇加密算法和密碼, 確保雙方都支持
  • 驗(yàn)證客戶端
  • 使用公鑰加密技術(shù)來生成共享加密數(shù)據(jù)
  • 創(chuàng)建一個(gè)加密的SSL連接
  • 基于該SSL連接傳遞HTTP請求

**HTTP 和 HTTPS 的區(qū)別

  • https協(xié)議需要 ca申請證書,一般免費(fèi)的證書較少,因而是需要一定費(fèi)用的]
  • http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的SSL加密傳輸協(xié)議
  • http 和 https使用的是完全不同的連接方式,用的端口也是不一樣的。前者是80端口 后者是443端口
  • http的連接很簡單,是無狀態(tài)的;https協(xié)議是由 SSL + HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸,身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全.
  • 在OSI模型中,HTTP工作在應(yīng)用層,而HTTPS工作在傳輸層。

關(guān)于 HTTP 你了解了么?

責(zé)任編輯:武曉燕 來源: Java極客技術(shù)
相關(guān)推薦

2020-03-10 08:33:04

HTTP演變協(xié)議

2019-12-19 09:08:42

HTTP瀏覽器緩存

2022-01-27 07:39:57

進(jìn)程操作系統(tǒng)Linux

2022-08-01 08:17:46

mysqlwindows系統(tǒng)

2025-02-27 07:47:09

2021-03-16 15:12:57

CompletableFuture機(jī)制java

2022-09-09 14:56:18

Linuxcpu

2024-01-01 15:30:59

JavaScriptWeb 應(yīng)用程序開發(fā)

2021-11-10 07:47:48

Traefik邊緣網(wǎng)關(guān)

2024-03-07 08:53:01

前端異步Promise

2023-04-07 08:46:41

Stream流map()Java8

2023-11-08 08:27:30

泛型Java

2019-03-24 19:45:44

JavaScriptHtml5移動端Web

2019-07-24 09:22:45

Elasticsear數(shù)據(jù)Oracle

2024-09-09 08:36:36

Java操作遠(yuǎn)程服務(wù)器

2010-07-01 16:01:05

HTTP協(xié)議

2020-05-14 08:59:28

API網(wǎng)關(guān)性能

2017-08-07 10:02:03

DNS服務(wù)基礎(chǔ)

2023-09-13 08:37:56

程序員面試catch

2022-02-22 08:25:51

typeScript泛型概念泛型使用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號