HTTP介紹和HTML簡介
HTTP介紹
HTTP協議(HyperText Transfer Protocol,超文字傳輸協議)是用於從WWW伺服器傳輸超文字到本地瀏覽器的傳送協議。
它的發展是全球資訊網協會(World Wide Web Consortium)和Internet工作小組IETF(Internet Engineering Task Force)合作的結果。
它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文字文件,還確定傳輸文件中的哪一部分,以及哪部分內容首先顯示(如文字先於圖形)等。
1.1 版本
最常用的是HTTP1.0/1.1
最新版本是HTTP2.0,與1.0/1.1相比,有了更高的效能、安全性和靈活性
以前的版本0.9等
2 HTTP協議
2.1 URL與資源
2.1.1 方案的世界
在TCP/IP模型中,所有的網路連線都要使用方案,方案定義使用什麼協議,比如http、ftp、telnet
一個標準的網路請求包括:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
但在實際使用過程中,對於不同協議可以缺少某些資訊,比如
ftp://192.168.169.121
http://www.baidu.com/index.html
對於http協議,主要的包括scheme(協議)、host(主機)和path(資源路徑)
2.1.2 URI、URL和URN
URI:統一資源識別符號,包括URL和URN
URL:統一資源識別符號,比如http://www.baidu.com/index.html就是一個URL
URN:統一資源名,它是無關物理位置的資源名定義,例子urn:ieft:rfc:2141
目前URN處於試驗階段,實際應用還很困難,在沒有特別說明時,一般我們說的URI就代表URL
2.1.3 媒體型別
在HTTP中,不管是word檔案、js檔案或者圖片都是資源,通可以通過URL進行請求,但每種不同的檔案都要進行區分,以便服務端和客戶端進行正確處理,比如播放聲音、顯示文字。
因此,HTTP仔細地給每種要通過http請求響應傳輸的物件都打上名為MIME型別的資料格式標籤。
MIME: Multipurpose Internet Mail Extension 多用途因特網郵件擴充套件
最開始是為了解決電子郵件系統之間的問題,後來用於定義更多型別的多謀體內容。常見的MIME:
html:text/html
Ascii: text/plain
Json:text/json
Jpg:image/jpeg
Gif:image/gif
Ppt: application/vnd.ms-powerpoint
Quicktime:video/quicktime
2.2 協議介紹
2.2.1 協議棧
HTTP在TCP/IP協議棧中的位置
HTTP是基於TCP/IP的應用,因此HTTP無須關心網路定址、資料傳輸和拓撲結構
2.2.2 協議工作流程
在HTTP1.0/1.1中,HTTP採用請求響應模型來處理HTTP事務 HTTP事務有一條請求命令和一個響應結果組成,它們通過HTTP報文進行資料傳輸
注意:請求是從客戶端發往服務端,而響應是從服務端發回客戶端
HTTP的工作過程
(1)客戶端連線到Web伺服器
(2)傳送HTTP請求
(3)伺服器接受請求並返回HTTP響應
(4)釋放連線TCP連線
(5)客戶端瀏覽器解析HTML內容
3 HTTP報文
3.1 報文
HTTP1.0/1.1報文由三部分組成:起始行、首部以及可選、包含資料的主體
其中起始行和首部是由行分隔的ASCII文字
主體是一個可選的資料塊,主體中可以包含文字也可以包含二進位制資料,也可以為空,與首部通過空一行進行區分
請求報文的格式:
響應報文的格式:
具體例子:
3.1.1 起始行
所有的HTTP報文都以一個起始行做為開始
請求報文: 說明要做什麼
響應報文: 說明結果怎樣
method,包括GET/POST/DELETE等等
version,目前絕大多數都是1.0或者1.1
status,表示做的結果
reason-phrase,是對狀態結果的進一步補充說明
3.1.2 首部欄位
HTTP首部欄位向請求和響應報文中新增了一些附加資訊,是一系列 key-value的列表,比如Content-Type:image/jpeg 表示型別是jpeg圖片
首部的分類包括
通用首部:在請求和響應中都出現的資訊
請求首部:只在請求報文中出現的資訊
響應首部:只在響應報文中出現的資訊
實體首部:描述主題的長度、內容等的資訊
擴充套件首部:在HTTP規範中沒有定義的其他資訊
3.1.3 實體
HTTP實體是HTTP報文的負荷,是HTTP要傳輸的資料內容。
3.2 方法
HTTP基本的方法包括:GET/POST/HEAD/PUT/TRACE/OPTIONS,用來告訴服務端要做什麼操作
3.2.1 GET
GET是最常用的方法,通常用於請求伺服器傳送某個資源
3.2.2 POST
POST是常用的方法之一,用於向服務端提交資料,有主體
3.2.3 HEAD
與GET類似,但在響應中只有首部,不返回具體資料,可以用來檢視資源是否存在
3.2.4 PUT/TRACE/OPTIONS/DELETE
PUT:用於向服務端寫入文件
TRACE:用於跟蹤某個請求
OPTIONS:用於查詢服務端支援的方法
DELETE:用於刪除服務端某個資源
3.2.5 其他擴充套件方法
HTTP在設計之初就被設計成可擴充套件的,這樣就可以適應新的特性。
擴充套件方法是在HTTP規範中沒有定義的方法,它們有特別的用處,但需要服務端進行實現:
LOCK:鎖定某個資源
COPY:拷貝某個資源
MOVE:移動某個資源
3.3 狀態碼
狀態碼是響應報文中對請求所做事情的處理結果,以方便客戶端處理響應資料
狀態碼分為五大類:
資訊性狀態碼:100~199
成功狀態碼:200~299
重定向狀態碼:300~399
客戶端錯誤狀態碼:400~499
服務端錯誤狀態碼:500~599
3.3.1 資訊性狀態碼
HTTP1.1引入的狀態碼,目前存在一些爭議
100-Continue:說明收到了請求的初始部分,請客戶端繼續
101-Switching Protocols:說明服務端正在根據客戶端的指定,將協議轉換成Update首部所列的協議
3.3.2 成功狀態碼
客戶端發起的請求大部分是成功,但成功也有不同的區別,所以用一組狀態來區分不同的資訊
200-OK:沒有任何問題
201-Created:對於像PUT方法的響應,表示服務端建立了物件的請求
202-Accepted:請求已經被接受,但未執行任何動作,服務端不保證會完成這個請求
203-Non-Authoritative Information:實體首部包含的資訊不是來自源端伺服器,可能來自中間伺服器,因此沒有進行驗證
204-No Content:沒有主體部分
205-Reset Content:告訴瀏覽器清除當前頁中的所有html元素
206-Partial Content:成功執行了部分請求
3.3.3 重定向狀態碼
重定向狀態碼告訴客戶端使用替代請求來訪問資源,或者返回一個請求以便客戶端使用這個請求訪問所需資源
主要的狀態碼:
302-Found:客戶端使用Location首部給出的URL來訪臨時訪問資源
304-Not Modified:標識請求的內容沒有改變,可以使用快取資料
3.3.4 客戶端錯誤狀態碼
客戶端錯誤狀態碼標識客戶端傳送了一些錯誤的資訊給服務端
比如:
403-Forbidden:請求被服務端拒絕了,有可能是沒有許可權訪問,也有可能是使用者名稱密碼錯誤
414-Request URI Too Long:請求的URL太長了
3.3.5 服務端錯誤狀態碼
標識服務端自身錯誤
比如:
503-Service Unavailable:服務端暫時無法提供服務,可能因為服務端啟動配置錯誤
505-HTTP Version Not Supported:服務端接收到了它無法支援的協議版本,不能處理
3.4 首部
首部和方法配合工作,共同決定了客戶端和服務端能做什麼事情
主要包括:通用首部、請求首部、響應首部、實體首部
3.4.1 通用首部
通用首部是提供了報文的最基本資訊,不論報文的型別,都為其提供一些有用資訊
如上圖的Connection就是通用首部,在請求和響應報文中提供了連線的相關資訊
通用性的首部還包括:Date、MIME-Version、Via、Update等等
HTTP1.0引入了一個允許HTTP應用程式快取物件副本的首部——Cache-Control,叫做通用快取首部
3.4.2 請求首部
請求首部只在請求報文中出現,用於輔助說明誰在傳送請求,請求來自何處等等
比如:
Host:請求主機名和埠號
User-Agent:告訴服務端發起請求的應用程式的名稱
3.4.3 響應首部
響應首部只在響應報文中出現,用於說明客戶端應該怎麼去處理的一些額外資訊
比如:
Expires:該資源的過期時間
Server:伺服器應用程式軟體的名稱和版本
3.4.4 實體首部
實體首部用於標識實體的資訊
比如:
Content-Type:內容的型別
Content-Length:內容的長度
HTML簡介
什麼是HTML?
HTML 是用來描述網頁的一種語言。
l HTML 指的是超文字標記語言 (Hyper Text Markup Language)
l HTML 不是一種程式語言,而是一種標記語言 (markup language)
l 標記語言是一套標記標籤 (markup tag)
l HTML 使用標記標籤來描述網頁
HTML 標籤
HTML 標記標籤通常被稱為 HTML 標籤 (HTML tag)。
l HTML 標籤是由尖括號包圍的關鍵詞,比如 <html>
l HTML 標籤通常是成對出現的,比如 <b>
和 </b>
l 標籤對中的第一個標籤是開始標籤,第二個標籤是結束標籤
l 開始和結束標籤也被稱為開放標籤和閉合標籤
HTML 文件 = 網頁
l HTML 文件描述網頁
l HTML 文件包含 HTML 標籤和純文字
l HTML 文件也被稱為網頁
Web 瀏覽器的作用是讀取 HTML 文件,並以網頁的形式顯示出它們。瀏覽器不會顯示 HTML 標籤,而是使用標籤來解釋頁面的內容:
<html>
<body>
<h1>
我的第一個標題</h1>
<p>
我的第一個段落。</p>
</body>
</html>
例子解釋
l <html>
與 </html>
之間的文字描述網頁
l <body>
與 </body>
之間的文字是可見的頁面內容
l <h1>
與 </h1>
之間的文字被顯示為標題
l <p>
與 </p>
之間的文字被顯示為段落
相關文章
- HTML簡單介紹HTML
- HTML 簡單介紹HTML
- HTTPS 和HTTP的介紹HTTP
- 簡單介紹HTML5 LandmarkHTML
- HTTP簡介HTTP
- HTML簡介HTML
- HTML 簡介HTML
- html-html簡介HTML
- HTML————1、HTML簡介HTML
- http request-01-XMLHttpRequest XHR 簡單介紹HTTPXML
- http REST 簡介HTTPREST
- BookKeeper 介紹(1)--簡介
- HTML-簡介HTML
- 01、HTML 簡介HTML
- HTML 段落簡介HTML
- HTML 框架簡介HTML框架
- HTML 表格簡介HTML
- HTML 列表簡介HTML
- JSON簡介和Ajax簡介--bea這兩篇文章介紹的不錯JSON
- 從docker介紹及其簡介Docker
- HTTP 協議簡介HTTP協議
- Http協議簡介HTTP協議
- HTTP 與 HTTPS 簡介HTTP
- http2 簡介HTTP
- html 01前沿-web介紹HTMLWeb
- HTML的介紹與seoHTML
- HTML常用標籤介紹HTML
- 001-html簡介HTML
- HTML5簡介HTML
- HTML 標題簡介HTML
- HTML 連結簡介HTML
- HTML 速查列表簡介HTML
- HTML 指令碼簡介HTML指令碼
- ARouter簡單入門和介紹
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- Html 5.2 的簡單介紹及新增元素 <dialog></dialog>HTML
- Flownet 介紹 及光流的簡單介紹
- http代理使用分類介紹HTTP