http協議

1.背景介紹

2.知識剖析

3.常見問題

4.解決方案

5.編碼實戰

6.擴展思考

7.參考文獻

8.更多討論

1.背景介紹

什么是http協議?

http協議(HyperText Transfer Protocol,超文本傳協議)是一種用于分布式,協作式和超媒體信息系統的應用層協議,

是用于從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。

特點:

1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。

請求方法常用的有GET、HEAD、POST等。每種方法規定了客戶與服務器聯系的類型不同。由于HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。

靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

3.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。

4.無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

5、支持B/S及C/S模式。

2.知識剖析

URL

HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。URL是一種特殊類型的URI,全稱是UniformResourceLocator,

中文叫統一資源定位符,是互聯網上用來標識某一處資源的地址,包含了用于查找某個資源的足夠的信息。

以下面這個URL為例,介紹下普通URL的各部分組成:

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

1.協議部分:該URL的協議部分為“http:”,這代表網頁使用的是HTTP協議。在Internet中可以使用多種協議,如HTTP,FTP等等本例中使用的是HTTP協議。在"HTTP"后面的“//”為分隔符。

2.域名部分:該URL的域名部分為“www.aspxfans.com”。一個URL中,也可以使用IP地址作為域名使用。

3.端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口。

4.虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”

5.文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。

本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名

6.錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分。

7.參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。

3.常見問題

http請求content-Type有幾種?

Content-Type,內容類型,用于定義網絡文件的類型和網頁的編碼,瀏覽器根據該參數來決定數據的打開方式。

Content-Type使用的是 “主類型/子類型; 額外參數” (? [type]/[subtype]; parameter )的數值格式。

“主類型” (type)主要有以下幾種:

1. text:用于標準化地表示的文本信息,文本消息可以是多種字符集和或者多種格式的; 默認是text/plain。

2. multipart:用于連接消息體的多個部分構成一個消息,這些部分可以是不同類型的數據; 默認是multipart/mixed。

3. application:用于傳輸應用程序數據或者二進制數據; 默認是application/octet-stream。

4. message:用于包裝一個E-mail消息。

5. image:用于傳輸靜態圖片數據。

6. audio:用于傳輸音頻或者音聲數據。

7. video:用于傳輸動態影像數據,可以是與音頻編輯在一起的視頻數據格式。

“子類型” (subtype)用于指定"主類型"的詳細形式。 其中以x-開頭表示該類別尚未標準化 。當客戶端不能確定“子類型”時,會根據“主類型”來獲取默認的子類型。

"額外參數" (parameter)用于指定請求/響應內容的字符編碼格式。例如text/html;charset=utf-8;

http狀態碼

1開頭代表消息,代表請求已被接收,需要繼續處理,這類響應只是臨時響應

2開頭代表成功,這一類型的狀態碼代表請求已成功被服務器接收,理解

3開頭代表重定向.這類狀態碼代表需要客戶端采取進一步的操作才能完成請求,通常,這些狀態碼用來重定向,后續的地址(重定向目標)在本次響應的location域中指明

4開頭代表請求錯誤,這類狀態碼代表客戶端看起來可能發生了錯誤,妨礙了服務器的處理

5開頭代表服務器在處理請求的過程有錯誤或者異常狀態發生

常見的狀態碼

200:請求已成功,請求所希望的響應頭或數據體將隨此響應返回。

404:請求失敗,請求所希望得到的資源未被在服務器上發現,出現這個錯誤的最有可能的原因是服務器端沒有這個頁面。

500:服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在服務器端的源代碼出現錯誤時出現。

Get和post請求方法有什么區別?

根據HTTP標準,HTTP請求可以使用多種請求方法,到HTTP1.1包括八種方法:

GET, POST,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT。

4.解決方案

區別:

1.GET提交的數據會放在URL之后,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數據放在HTTP包的Body中.

2.GET提交的數據大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制。

3.GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值。

4.GET方式提交數據,會帶來安全問題,比如一個登錄頁面,通過GET方式提交數據時,用戶名和密碼將出現在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該用戶的賬號和密碼。

5.編碼實戰

6.擴展思考

http協議適用場景

缺點:

1.傳輸速度慢,數據包大。

2.如實現實時交互,服務器性能壓力大

3.數據傳輸安全性差

1.公司oa系統:Office Automation System ,意為辦公自動化系統。使用局域網,較為安全。

2.各種互聯網服務。

7.參考文獻

https://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

http://blog.csdn.net/kfanning/article/details/6062118/

更多討論:

長連接和短連接?

HTTP1.1規定了默認保持長連接(HTTP persistent connection ,也有翻譯為持久連接),數據傳輸完成了保持TCP連接不斷開(不發RST包、不四次握手),等待在同域名下繼續用這個通道傳輸數據;相反的就是短連接。

http協議和tcp協議的區別是什么?

術語TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議?!癐P”代表網際協議,TCP和UDP使用該協議從一個網絡傳送數據包到另一個網絡。把IP想像成一種高速公路,它允許其它協議在上面行駛并找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等。

Http協議中Http1.0與1.1區別?

http://blog.csdn.net/elifefly/article/details/3964766/

PPT地址:

https://ptteng.github.io/PPT/PPT-java/JAVA-task2-http.xml.html#/

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,413評論 6 152
  • Http協議詳解 標簽(空格分隔): Linux 聲明:本片文章非原創,內容來源于博客園作者MIN飛翔的HTTP協...
    Sivin閱讀 5,251評論 3 82
  • HTTP概述 超文本傳輸協議(HTTP,HyperText Transfer Protocol) 是互聯網上應用最...
    曹淵說創業閱讀 3,861評論 2 61
  • (原話)談談對HTTP協議的理解:超文本傳輸協議,應用于OSI網絡模型中的應用層,是用于服務器傳輸超文本到本地瀏覽...
    24_yu閱讀 906評論 0 1
  • 前言:最近發現自己在網絡相關這一塊基礎很是欠缺,所以準備花時間了解一下,本文主要是講http協議的一些基礎,和一些...
    justCode_閱讀 2,109評論 0 23