超文本傳輸協議-HTTP

    超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式、協作式和超媒體信息系統的應用層協議。HTTP是萬維網的數據通信的基礎。

    設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。通過HTTP或者HTTPS協議請求的資源由統一資源標識符(Uniform Resource Identifiers,URI)來標識。

協議概述

    HTTP是一個客戶端終端(用戶)和服務器端(網站)請求和應答的標準(TCP)。通過使用網頁瀏覽器、網絡爬蟲或者其它的工具,客戶端發起一個HTTP請求到服務器上指定端口(默認端口為80)。我們稱這個客戶端為用戶代理程序(user agent)。應答的服務器上存儲著一些資源,比如HTML文件和圖像。我們稱這個應答服務器為源服務器(origin server)。在用戶代理和源服務器中間可能存在多個“中間層”,比如代理服務器、網關或者隧道(tunnel)。

    盡管TCP/IP協議是互聯網上最流行的應用,HTTP協議中,并沒有規定必須使用它或它支持的層。事實上,HTTP可以在任何互聯網協議上,或其他網絡上實現。HTTP假定其下層協議提供可靠的傳輸。因此,任何能夠提供這種保證的協議都可以被其使用。因此也就是其在TCP/IP協議族使用TCP作為其傳輸層。

    通常,由HTTP客戶端發起一個請求,創建一個到服務器指定端口(默認是80端口)的TCP連接。HTTP服務器則在那個端口監聽客戶端的請求。一旦收到請求,服務器會向客戶端返回一個狀態,比如”HTTP/1.1 200 OK”,以及返回的內容,如請求的文件、錯誤消息、或者其它信息。

請求方法

    HTTP/1.1協議中共定義了八種方法(也叫“動作”)來以不同方式操作指定的資源:

    GET向指定的資源發出“顯示”請求。使用GET方法應該只用在讀取數據,而不應當被用于產生“副作用”的操作中,例如在Web Application中。其中一個原因是GET可能會被網絡蜘蛛等隨意訪問。參見安全方法

    HEAD與GET方法一樣,都是向服務器發出指定資源的請求。只不過服務器將不傳回資源的本文部分。它的好處在于,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中“關于該資源的信息”(元信息或稱元數據)。

    POST向指定資源提交數據,請求服務器進行處理(例如提交表單或者上傳文件)。數據被包含在請求本文中。這個請求可能會創建新的資源或修改現有資源,或二者皆有。

    PUT向指定資源位置上傳其最新內容。

    DELETE請求服務器刪除Request-URI所標識的資源。

    TRACE回顯服務器收到的請求,主要用于測試或診斷。

    OPTIONS這個方法可使服務器傳回該資源所支持的所有HTTP請求方法。用’*’來代替資源名稱,向Web服務器發送OPTIONS請求,可以測試服務器功能是否正常運作。

    CONNECTHTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。通常用于SSL加密服務器的鏈接(經由非加密的HTTP代理服務器)。

    方法名稱是區分大小寫的。當某個請求所針對的資源不支持對應的請求方法的時候,服務器應當返回狀態碼405(Method Not Allowed),當服務器不認識或者不支持對應的請求方法的時候,應當返回狀態碼501(Not Implemented)。

    HTTP服務器至少應該實現GET和HEAD方法,其他方法都是可選的。當然,所有的方法支持的實現都應當匹配下述的方法各自的語義定義。此外,除了上述方法,特定的HTTP服務器還能夠擴展自定義的方法。例如:

    PATCH(由 RFC 5789 指定的方法)用于將局部修改應用到資源。

原創文章,作者:HGG,如若轉載,請注明出處:http://www.www58058.com/83466

(1)
HGGHGG
上一篇 2017-07-31 07:59
下一篇 2017-07-31 09:54

相關推薦

  • Keepalived介紹 , 配置說明 , 及實際應用

    1. Keepalived介紹 Keepalived是一個基于VRRP協議來實現的服務高可用方案,可以利用其來避免IP單點故障,類似的工具還有heartbeat、corosync、pacemaker。但是它一般不會單獨出現,而是與其它負載均衡技術(如lvs、haproxy、nginx)一起工作來達到集群的高可用。 1.1 VRRP協議 VRRP全稱 Virt…

    Linux干貨 2016-11-04
  • Homework Week-9 bash腳本之順序、選擇、循環

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash #Elephant echo "nologin users:" user1=$(cat /etc/passwd&n…

    Linux干貨 2016-10-17
  • 20160803用戶權限作業

    三種權限rwx對文件和目錄的不同意義 文件:r:可以cat查看文件中的內容,可以查看文件的屬性          w:可以ll查看文件的屬性,也可以往文件中寫入內容,如果其父目錄具有寫和執行權限就可刪除其內部文件        &…

    Linux干貨 2016-08-07
  • 用戶、組、權限管理練習

    用戶、組管理練習 一、創建的內容:        1、組Rockets,Knicks,Cavaliers,他們的GID分別是501,540,530。    2、用戶James(theBeard),Chris(CP3),Lebron(King),Carmelo(Melo),他們的uid分別是…

    Linux干貨 2017-09-03
  • M20-1 8月5號作業

    作業:    1、取本機IP地址;    2、取各分區利用率的數值;    3、統計/etc/init.d/functions 文件中每個單詞出現的次數,并按頻率從高到低顯示;    4、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/fu…

    Linux干貨 2016-08-15
  • Linux基礎知識——SHELL之循環

    1、寫一個腳本,判斷當前系統用戶shell是否都為可登陸shell(即非/sbin/nologin),分別計算兩類用戶的個數(通過比較字符串實現) #!/bin/bash #       check the user could login&nbsp…

    Linux干貨 2016-12-13
欧美性久久久久