<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      http學習

      參考的是http菜鳥教程:[https://www.runoob.com/http/http-tutorial.html](https://www.runoob.com/http/http-tutorial.html)
      @[TOC](文章目錄)
      # 一、前言
      ## 1.1 TCP/IP基礎概念學習

      **TCP/IP**-傳輸控制協議/網際協議:是指能夠在**多個**不同網絡間實現信息傳輸的**協議簇**。是Internet最基本的協議。
      - **TCP/IP協議不僅僅指的是TCP 和IP兩個協議**,而是指一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇, 只是因為在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱為TCP/IP協議。
      - 嚴格來說是一個四層的體系結構,**應用層**、**傳輸層**、**網絡層**和**數據鏈路層**都包含其中

      ## 1.2 TCP/IP四層的體系結構

      - **應用層**:主要協議有**HTTP、Telnet、FTP(文件傳輸協議)、SMTP、DNS(域名系統,就是IP與域名互相轉換)**,是用來接收來自傳輸層的數據或者按不同應用要求與方式將數據傳輸至傳輸層;(**注**:**HTTP 屬于應用層**,但是是基于傳輸層的 TCP 協議實現的。HTTP1.0, HTTP1.1, HTTP2.0 均為TCP, HTTP3 基于 UDP 實現)
      - **傳輸層**:主要協議有**UDP(面向無連接的,用戶數據報協議)、TCP(面向連接的,傳輸控制協議)**,是使用者使用平臺和計算機信息網內部數據結合的通道,可以實現數據傳輸與數據共享;
      - **網絡層**:主要協議有**ICMP、IP、IGMP**,主要負責網絡中數據包的傳送等;
      - **鏈路層**:也叫**網絡接口層**或**網絡訪問層**,主要協議有**ARP、RARP**,主要功能是處理網絡的硬件部分,比如,網卡,通信線路(光纖,電纜)
      ![在這里插入圖片描述](https://img-blog.csdnimg.cn/58d13d84c1d145f990cb29cb6c785def.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMTjkvaDno4rlk6U=,size_20,color_FFFFFF,t_70,g_se,x_16)

      這是整個通信過程中數據流的走向,同時經過每層協議時,都會加上相應的首部,每個首部都會有相應的功能。各個分層之間相互協作,當一個部分出現問題,可以找到相應的層次來處理問題,而不是把整個協議都去檢查一遍。從上圖也可以看出,HTTP協議作為TCP/IP協議族應用層的重要成員,在通信過程中起著非常重要的角色。


      # 二、HTTP 簡介:

      超文本傳輸協議(英語:HyperText Transfer Protocol,縮寫:HTTP)

      - HTTP 是用于分布式、協作式和超媒體信息系統的**應用層**協議,是因特網上應用最為廣泛的一種網絡傳輸協議,所有的 WWW 文件都必須遵守這個標準
      - HTTP 是為 **Web 瀏覽器與 Web 服務器之間的通信**而設計的,但也可以用于其他目的
      - HTTP 是一個基于 **TCP/IP** 通信協議來傳遞數據的(HTML 文件、圖片文件、查詢結果等)

      > 所以得學習一下什么是**TCP/IP**


      ## 2.1 HTTP 工作原理

      HTTP協議工作于客戶端-服務端架構上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。
      Web服務器有:Apache服務器,IIS服務器(Internet Information Services)等。
      Web服務器根據接收到的請求后,向客戶端發送響應信息。
      HTTP默認端口號為80,但是你也可以改為8080或者其他端口。

      **HTTP三點注意事項:**

      - **HTTP是無連接** :無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
      - **HTTP是媒體獨立的**:這意味著,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
      - **HTTP是無狀態**:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
      - 以下圖表展示了HTTP協議通信流程![在這里插入圖片描述](https://img-blog.csdnimg.cn/2bfb558cff234c27b3f566f07778744a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMTjkvaDno4rlk6U=,size_11,color_FFFFFF,t_70,g_se,x_16)

      > 1.**CGI**(Common Gateway Interface) 是 HTTP 服務器與你的或其它機器上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上。
      > 絕大多數的 CGI 程序被用來解釋處理來自表單的輸入信息,并在服務器產生相應的處理,或將相應的信息反饋給瀏覽器。CGI 程序使網頁具有交互功能。
      >
      > 2.瀏覽器顯示的內容都有 HTML、XML、GIF、Flash 等,瀏覽器是通過 MIME Type 區分它們,決定用什么內容什么形式來顯示。
      > 注釋:MIME Type 是該資源的媒體類型,MIME Type 不是個人指定的,是經過互聯網(IETF)組織協商,以RFC(是一系列以編號排定的文件,幾乎所有的互聯網標準都有收錄在其中) 的形式作為建議的標準發布在網上的,大多數的 Web服務器和用戶代理都會支持這個規范 (順便說一句,Email 附件的類型也是通過 MIME Type 指定的)。媒體類型通常通過 HTTP 協議,由 Web 服務器告知瀏覽器的,更準確地說,是通過 Content-Type來表示的。例如:Content-Type:text/HTML。通常只有一些在互聯網上獲得廣泛應用的格式才會獲得一個 MIME Type,如果是某個客戶端自己定義的格式,一般只能以application/x- 開頭。

      ## 2.2 HTTP 消息結構
      - HTTP是基于**客戶端/服務端**(C/S)的架構模型,通過一個可靠的鏈接來交換信息,是一個無狀態的請求/響應協議。

      - 一個HTTP"客戶端"是一個應用程序(Web瀏覽器或其他任何客戶端),通過連接到服務器達到向服務器發送一個或多個HTTP的請求的目的。
      - 一個HTTP"服務器"同樣也是一個應用程序(通常是一個Web服務,如Apache Web服務器或IIS服務器等),通過接收客戶端的請求并向客戶端發送HTTP響應數據。

      - HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。

      - 一旦建立連接后,數據消息就通過類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴展(MIME)[RFC2045]來傳送。

      **客戶端請求消息**
      客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:**請求行(request line)**、**請求頭部(header)**、**空行**和**請求數據**四個部分組成,下圖給出了請求報文的一般格式。
      ![在這里插入圖片描述](https://img-blog.csdnimg.cn/5042233385a34a279be4c760e76b4208.png)
      **服務器響應消息**
      HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。
      ![在這里插入圖片描述](https://img-blog.csdnimg.cn/184435fe3ccd4f7baa85919db0f1a975.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMTjkvaDno4rlk6U=,size_20,color_FFFFFF,t_70,g_se,x_16)

      **實例**:下面實例是一點典型的使用GET來傳遞數據的實例
      客戶端請求:
      ```java
      GET /hello.txt HTTP/1.1
      User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
      Host: www.example.com
      Accept-Language: en, mi
      ```

      服務端響應:

      ```java
      HTTP/1.1 200 OK
      Date: Mon, 27 Jul 2009 12:28:53 GMT
      Server: Apache
      Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
      ETag: "34aa387-d-1568eb00"
      Accept-Ranges: bytes
      Content-Length: 51
      Vary: Accept-Encoding
      Content-Type: text/plain
      ```

      輸出結果:

      ```css
      Hello World! My payload includes a trailing CRLF.
      ```

      # 三、HTTP 請求方法
      > **HTTP 協議的 9 種【請求方法】介紹**
      > HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD 方法。
      > HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

      | 方法| 描述|
      |--|--|
      | GET | 請求指定的頁面信息,并返回實體主體。 |
      | HEAD| 類似于 GET 請求,只不過返回的響應中沒有具體的內容,用于獲取報頭。 |
      | POST| 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改。 |
      | PUT|從客戶端向服務器傳送的數據取代指定的文檔的內容。 |
      | DELETE| 請求服務器刪除指定的頁面。 |
      | CONNECT| HTTP/1.1 協議中預留給能夠將連接改為管道方式的代理服務器。 |
      | OPTIONS| 允許客戶端查看服務器的性能。 |
      | TRACE| 回顯服務器收到的請求,主要用于測試或診斷。 |
      | PATCH| 是對 PUT 方法的補充,用來對已知資源進行局部更新 。 |
      > HTTP 協議中共定義了九種方法或者叫“動作”來表明對 **Request-URI** 指定的資源的不同操作方式,我們在實際應用中常用的也就是 **get 和post**,其他請求方式也都可以通過這兩種方式間接的來實現。

      # 四、HTTP 響應頭信息
      HTTP請求頭提供了關于請求,響應或者其他的發送實體的信息。
      在本章節中我們將具體來介紹HTTP響應頭信息

      參考官網文檔(建議轉中文) [https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept-Encoding](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type)
      | 應答頭| 說明 |
      |--|--|
      | Allow | 首部字段用于枚舉資源所支持的 HTTP 方法的集合 (**Allow: GET, POST, HEAD**),若服務器返回狀態碼 405 Method Not Allowed,則該首部字段亦需要同時返回給客戶端。如果 Allow 首部字段的值為空,說明資源不接受使用任何 HTTP 方法的請求。這是可能的,比如服務器需要臨時禁止對資源的任何訪問|
      | Content-Encoding|文檔的編碼(Encode)方法。只有在解碼之后才可以得到Content-Type頭指定的內容類型。利用gzip壓 縮文檔能夠顯著地減少HTML文檔的下載時間。Java的GZIPOutputStream可以很方便地進行gzip壓縮,但只有Unix上的 Netscape和Windows上的IE 4、IE 5才支持它。因此,Servlet應該通過查看Accept-Encoding頭(即request.getHeader(“Accept- Encoding”))檢查瀏覽器是否支持gzip,為支持gzip的瀏覽器返回經gzip壓縮的HTML頁面,為其他瀏覽器返回普通頁面。(**Content-Encoding: gzip;Content-Encoding: compress ;Content-Encoding: deflate ;Content-Encoding: br**)。(多個,按應用的編碼順序列出**Content-Encoding: deflate, gzip**)
      | Content-Length |表示內容長度。只有當瀏覽器使用持久HTTP連接時才需要這個數據。如果你想要利用持久連接的優勢,可以把輸出文檔寫入 ByteArrayOutputStram,完成后查看其大小,然后把該值放入Content-Length頭,最后通過 byteArrayStream.writeTo(response.getOutputStream()發送內容| 3 |4 |
      |Content-Type |表示后面的文檔屬于什么MIME類型(**Content-Type: text/html; charset=utf-8Content-Type: multipart/form-data; boundary=something**)。Servlet默認為text/plain,但通常需要顯式地指定為text/html。由于經常要設置Content-Type,因此HttpServletResponse提供了一個專用的方法setContentType;瀏覽器會在某些情況下進行MIME查找,并不一定遵循此標題的值; 為了防止這種行為,可以將標題 X-Content-Type-Options 設置為 nosniff |
      | Date |當前的GMT時間。你可以用setDateHeader來設置這個頭以避免轉換時間格式的麻煩 |

      # 五、HTTP 狀態碼
      當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。當瀏覽器接收并顯示網頁前,此網頁所在的服務器會返回一個包含 HTTP 狀態碼的信息頭(server header)用以響應瀏覽器的請求。
      HTTP 狀態碼的英文為 HTTP Status Code。。
      下面是常見的 HTTP 狀態碼:
      - 200 - 請求成功
      - 301 - 資源(網頁等)被永久轉移到其它URL
      - 404 - 請求的資源(網頁等)不存在
      - 500 - 內部服務器錯誤

      ## 5.1 HTTP 狀態碼分類
      HTTP 狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型。響應分為五類:
      - **信息響應(100–199)** 信息,服務器收到請求,需要請求者繼續執行操作
      - **成功響應(200–299)** 成功,操作被成功接收并處理
      - **重定向(300–399)** 重定向,需要進一步的操作以完成請求
      - **客戶端錯誤(400–499)** 客戶端錯誤,請求包含語法錯誤或無法完成請求
      - **服務器錯誤 (500–599)** 服務器錯誤,服務器在處理請求的過程中發生了錯誤

      ## 5.2 HTTP狀態碼列表:
      | 狀態碼 | 狀態碼英文名稱 | 中文描述 |
      |--|--|--|
      | 100 | Continue | 繼續。客戶端應繼續其請求|
      | 101 | Switching Protocols | 切換協議。服務器根據客戶端的請求切換協議。只能切換到更高級的協議,例如,切換到HTTP的新版本協議 |
      | 200 | OK | 請求成功。一般用于GET與POST請求 |
      | 201 | Created | 已創建。成功請求并創建了新的資源 |
      | 202 | Accepted | 已接受。已經接受請求,但未處理完成|
      | 203 | Non-Authoritative Information | 非授權信息。請求成功。但返回的meta信息不在原始的服務器,而是一個副本 |
      | 204 | No Content | 無內容。服務器成功處理,但未返回內容。在未更新網頁的情況下,可確保瀏覽器繼續顯示當前文檔|
      | 205 | Reset Content | 重置內容。服務器處理成功,用戶終端(例如:瀏覽器)應重置文檔視圖。可通過此返回碼清除瀏覽器的表單域 |
      | 206 | Partial Content | 部分內容。服務器成功處理了部分GET請求|
      | 300 | Multiple Choices | 多種選擇。請求的資源可包括多個位置,相應可返回一個資源特征與地址的列表用于用戶終端(例如:瀏覽器)選擇|
      | 301 | Moved Permanently | 永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。今后任何新的請求都應使用新的URI代替 |
      | 302 | Found | 臨時移動。與301類似。但資源只是臨時被移動。客戶端應繼續使用原有URI |
      | 303 | See Other | 查看其它地址。與301類似。使用GET和POST請求查看 |
      | 304 | Not Modified | 未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端通常會緩存訪問過的資源,通過提供一個頭信息指出客戶端希望只返回在指定日期之后修改的資源|
      | 305 | Use Proxy | 使用代理。所請求的資源必須通過代理訪問 |
      | 306 | Unused | 已經被廢棄的HTTP狀態碼|
      | 307 | Temporary Redirect | 臨時重定向。與302類似。使用GET請求重定向|
      | 400 | Bad Request | 客戶端請求的語法錯誤,服務器無法理解 |
      | 401 | Unauthorized | 請求要求用戶的身份認證|
      | 402 | Payment Required | 保留,將來使用|
      | 403 | Forbidden | 服務器理解請求客戶端的請求,但是拒絕執行此請求 |
      | 404 | Not Found | 服務器無法根據客戶端的請求找到資源(網頁)。通過此代碼,網站設計人員可設置"您所請求的資源無法找到"的個性頁面 |
      | 405 | Method Not Allowed | 客戶端請求中的方法被禁止|
      | 406 | Not Acceptable | 服務器無法根據客戶端請求的內容特性完成請求|
      | 407 | Proxy Authentication Required|請求要求代理的身份認證,與401類似,但請求者應當使用代理進行授權 |
      | 408 | Request Time-out | 服務器等待客戶端發送的請求時間過長,超時|
      | 409 | Conflict | 服務器完成客戶端的 PUT 請求時可能返回此代碼,服務器處理請求時發生了沖突 |
      | 410 | Gone | 客戶端請求的資源已經不存在。410不同于404,如果資源以前有現在被永久刪除了可使用410代碼,網站設計人員可通過301代碼指定資源的新位置|
      | 411 | Length Required | 服務器無法處理客戶端發送的不帶Content-Length的請求信息 |
      | 412 | Precondition Failed | 客戶端請求信息的先決條件錯誤 |
      | 413 | Request Entity Too Large | 由于請求的實體過大,服務器無法處理,因此拒絕請求。為防止客戶端的連續請求,服務器可能會關閉連接。如果只是服務器暫時無法處理,則會包含一個Retry-After的響應信息 |
      | 414 | Request-URI Too Large | 請求的URI過長(URI通常為網址),服務器無法處理 |
      | 415 | Unsupported Media Type | 服務器無法處理請求附帶的媒體格式|
      | 416 | Requested range not satisfiable | 客戶端請求的范圍無效 |
      | 417 | Expectation Failed | 服務器無法滿足Expect的請求頭信息|
      | 500 | Internal Server Error | 服務器內部錯誤,無法完成請求 |
      | 501 | Not Implemented | 服務器不支持請求的功能,無法完成請求 |
      | 502 | Bad Gateway | 作為網關或者代理工作的服務器嘗試執行請求時,從遠程服務器接收到了一個無效的響應 |
      | 503 | Service Unavailable | 由于超載或系統維護,服務器暫時的無法處理客戶端的請求。延時的長度可包含在服務器的Retry-After頭信息中|
      | 504 | Gateway Time-out | 充當網關或代理的服務器,未及時從遠端服務器獲取請求|
      | 505 | HTTP Version not supported | 服務器不支持請求的HTTP協議的版本,無法完成處理|

      # 六、HTTP content-type 內容類型

      > Content-Type(內容類型),一般是指網頁中存在的 Content-Type,用于定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件,這就是經常看到一些 PHP 網頁點擊的結果卻是下載一個文件或一張圖片的原因。Content-Type 標頭告訴客戶端實際返回的內容的內容類型。

      語法格式:

      > Content-Type: text/html; charset=utf-8
      Content-Type: multipart/form-data; boundary=something

      實例:
      ![在這里插入圖片描述](https://img-blog.csdnimg.cn/e01d938fa77644399236505c310aae33.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAMTjkvaDno4rlk6U=,size_20,color_FFFFFF,t_70,g_se,x_16)

      ## 6.1 媒體格式類型

      **6.1.1** 常見的媒體格式類型如下:
      - text/html : HTML格式
      - text/plain :純文本格式
      - text/xml : XML格式
      - image/gif :gif圖片格式
      - image/jpeg :jpg圖片格式
      - image/png:png圖片格式

      **6.1.2** 以application開頭的媒體格式類型:

      - application/xhtml+xml :XHTML格式
      - application/xml: XML數據格式
      - application/atom+xml :Atom XML聚合格式
      - application/json: JSON數據格式
      - application/pdf:pdf格式
      - application/msword : Word文檔格式
      - application/octet-stream : 二進制流數據(如常見的文件下載)
      - application/x-www-form-urlencoded : <form encType=””>中默認的encType,form表單數據被編碼為key/value格式發送到服務器(表單默認的提交數據的格式)

      **6.1.3** 另外一種常見的媒體格式是上傳文件之時使用的:

      - multipart/form-data : 需要在表單中進行文件上傳時,就需要使用該格式

      posted @ 2022-04-22 17:35  忙忙碌碌但一無所獲  閱讀(63)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 人妻系列中文字幕精品| 韩国无码AV片午夜福利| 精品国产一区av天美传媒| 国产精品国产亚洲区久久| 国产对白老熟女正在播放| 男女啪啪高潮激烈免费版| 久章草这里只有精品| 麻豆亚洲精品一区二区| 亚洲第一香蕉视频啪啪爽| 亚洲色大成网站WWW国产| 亚洲精品第一页中文字幕| 国产色a在线观看| 无码人妻aⅴ一区二区三区69岛 | 精品久久精品久久精品久久| 亚洲欧洲日产国码高潮αv| 国色天香成人一区二区| 国产成人亚洲综合91精品| 肉大榛一进一出免费视频| 激情亚洲专区一区二区三区| 亚洲国产中文字幕精品| 人妻熟女av一区二区三区| 精品综合一区二区三区四区| 国产麻豆精品久久一二三| 亚洲综合伊人久久大杳蕉| 国产精品乱一区二区三区| 国产一区国产精品自拍| 蜜臀av一区二区三区精品| 高清无码爆乳潮喷在线观看| 精品少妇av蜜臀av| 亚洲黄色第一页在线观看| 欧美大bbbb流白水| 亚洲高潮喷水无码AV电影| 国产亚洲精品aaaa片app| 国产自产一区二区三区视频| 91毛片网| 国产亚洲精品VA片在线播放| 欧洲亚洲成av人片天堂网| 国产精品免费看久久久无码 | 日韩一区二区三区不卡片| 日韩有码中文字幕国产| 国产羞羞的视频一区二区|