天天看點

HTTP入門知識

http: HyperText Transfer Protocol: 超文本傳輸協定

html: HyperText Mark Language:超文本标記語言。

http:監聽在80/tcp

request封包請求

response封包響應

封包傳輸過程:應用層協定發送get指令,ftp協定對get指令進行封裝,封包傳輸到tcp層之後,在這一層為其添加目标端口和源端口,就标記了程序的位址,然後封包被送到ip層,再為其封裝一個ip首部,就标記了源ip位址和目标ip位址,就能夠找到目标主機。再通過鍊路層傳送,最終通過實體層到達目的地。

封包接收:核心監控得知網卡接收封包,核心将封包進行處理,首先判斷實體位址是否對應,對應了再看看目标ip位址是否對應,看完後再檢查端口,這樣就找到了對應的服務。

動态端點:

   用戶端動态:極不安全

   applet

   伺服器端動态:

   CGI: Common Gateway Interface :通用網關接口

web資源:

  web object

http版本:

   http/0.9: stateless 僅能響應文本

   http/1.0: MIME, keep-alive (保持連接配接), 緩存

      Multipurpose Internet Mail Extesions, 多功能,多用途網際網路郵件擴充

   将非文本資訊編碼成二進制格式,由smtp進行傳送,傳送過去由浏覽器解碼檢視。浏覽器隻能識别html格式的内容,是以還要調用外部的工具進行檢視。或者浏覽器自己有插件,這樣也能檢視内容了。

MIME:

   major/minor(主格式/次格式)

   image/jpg jpg格式的圖檔

   image/gif  gif格式的圖檔

   text/html 純文字格式

   video/quicktime視訊流

   appliation/x-httpd-php

http/1.1: 更多的請求方法,更精細的緩存控制,持久連接配接(persistent connection)

    URI: Uniform Resource Identifier:統一資源辨別符

    URL:Uniform Resource Locator:統一資源定位符

 格式:scheme://[username:password@]HOST:port/path/to/source

     例如:http://www.magedu.com/downloads/nginx-1.5.tar.gz

  URN:統一資源命名符

HTTP事務:一個請求以及與其對應的響應封包

HTTP方法:

  GET: 完整請求一個資源

  HEAD: 僅請求響應首部

  POST:送出表單

  PUT: (webdav)

  DELETE:(webdav)

  OPTIONS:傳回請求的資源所支援的方法的方法

  TRACE: 追蹤一個資源請求中間所經過的代理

HTTP緩存機制:

     私有緩存

     公共緩存

HTTP的響應碼:

   1xx: 資訊性狀态碼

        100, 101

   2xx: 成功狀态碼

        200:OK

   3xx: 重定向狀态碼

        301: 永久重定向, Location響應首部的值仍為目前URL,是以為隐藏重定向;

        302: 臨時重定向,顯式重定向, Location響應首部的值為新的URL

        304:Not Modified:沒有修改(在條件請求中用到)

   4xx: 用戶端錯誤狀态碼

        404: Not Found

   5xx: 伺服器端錯誤狀态碼

        500: Internal Server Error(伺服器在執行、配置上有問題)

        502: Bad Gateway(任何一個代理找不到上一級的代理的時候)

        503:服務不可用

        504:Gateway Timeout:網關逾時

HTTP封包格式:

    起始行

    首部:标簽加上一個值。例如:Host: www.magedu.com

    主體

請求格式:request:

            <method> <request-URL> <version>

             請求方法    請求的URL    協定版本

            <headers>

               首部

            <entity-body>

                主體

例如:在浏覽器搜素172.16.0.1/centos6.repo可以通路到檔案内容

  Google浏覽器F12鍵可以評估網頁的性能,IE 浏覽器需要安裝htpwatch

#telnet 172.16.0.1 80 向172.16.0.1站點的80号端口發送請求

GET  /  http/1.1

Host: 172.16.0.1

<a target="_blank" href="http://blog.51cto.com/attachment/201308/172001713.png"></a>

GET  /centos6.repo  http/1.1

得到結果:

<a target="_blank" href="http://blog.51cto.com/attachment/201308/172026391.png"></a>

響應格式:response:

           &lt;version&gt; &lt;status&gt; &lt;reason-phrase&gt;

              版本     狀态碼    原因短語

           &lt;headers&gt;

                首部

           &lt;entity-body&gt;

              主體部分

version: HTTP/major.minor, 如HTTP/1.0

HTTP封包首部:

   通用首部:請求和響應均可使用:例如:

            Connection: 指定連接配接選項

            Date: 封包建立日期和時間

            Via: 所經過的代理伺服器

   請求首部:

            Host: 所請求的主機

            Referer: 提供了包含目前請求URI文檔的URL

            Accept: 接受的MIME類型

            Accept-Charset:所接受的字元集

            Accept-Encoding: 接受的編碼方式

            Accept-Lanague: 告訴伺服器能夠發送哪些語言

   條件請求首部:

            If-Modified-Since

            If-None-Match

   安全請求首部:

            Authorization: 用戶端提供給伺服器的認證資訊;

            Cookie: 追蹤使用者狀态

            Cookie2:

   響應首部:

            Age: 從最初建立開始,響應持續時間

            Server: 伺服器軟體名稱及版本

            Vary: 會影響緩存機制(是否壓縮等)

            Set-Cookie:設定Cookie

            Set-Cookie2

   實體首部:

            Allow: 允許的請求方法

            Location: 資源的實際位置

            Content-Language: 内容是那種語言

            Content-Location: 内容位置

            Content-Type: 内容類型。例如:MIME

            ETag: 實體标記

            Expires: 過期的緩存

            Last-Mofified:上次修改的時間

一次HTTP事務的完成過程:

1、建立連接配接

2、接收請求

3、處理請求

4、擷取資源

5、建構響應

6、回送響應

7、記錄日志

高度子產品化: DSO(動态共享對象)

MPM:Multipath Processing Module:多路處理子產品

      prefork: 一個程序響應一個請求

      worker:一個程序生成多個線程,一個線程響應一個請求

      event:事件驅動模式

        httpd-1.3非常穩定,但沒有許多新的性能。官方不再維護

        httpd-2.0和httpd-1.3很相近

        httpd-2.2   centos6預設所帶的

        httpd-2.4最新的系列

httpd:

    alias 路徑别名

    Auth使用者認證

    virtual host虛拟主機

    Mpm子產品屬性定義

版本:HTTP/0.9, HTTP/1.0, HTTP/1.1

httpd的相關資訊:

    服務腳本:/etc/rc.d/init.d/httpd

    運作目錄:/etc/httpd

    配置檔案:/etc/httpd/conf/

    主配置檔案:httpd.conf

    擴充配置:/etc/httpd/conf.d/*.conf

    監聽端口socket: http: 80/tcp, https: 443/tcp

    網頁檔案目錄(DocumentRoot):/var/www/html

    CGI: /var/www/cgi-bin/

安裝并啟動web服務

需要注意的是httpd的預設安裝會試圖通過反解目前主機的ip位址來為httpd伺服器提供一個主機名稱,如果反解是失敗的它就會報錯,并且告訴你主機名稱解析失敗,使用127.16.4.1當做目前主機的主機名。是以為避免此問題,建議先編輯/etc/hosts

安裝httpd

   #service httpd start重新開機服務

   #chkconfig --list httpd 檢視運作級别

   #chkconfig httpd on 打開2 3 4 5級别

預設首頁面:index.html

直接以127.16.4.1 通路的時候,顯示的是測試頁面,即預設的首頁面。我們編輯/var/www/html/index.html檔案

&lt;html&gt;

     &lt;title&gt; Test Page&lt;/title&gt;

     &lt;body&gt;

          &lt;h1&gt; Hello&lt;/h1&gt;

            Hello word

     &lt;/body&gt;

&lt;/html&gt;

這樣我們打開的就是我們所編輯的内容了。

如果我們不對/var/www/html/index.html檔案進行編輯,又不想顯示歡迎界面,那就需要修改配置頁面了。

(1)在/etc/httpd/conf/httpd.conf中修改

(2)将/etc/httpd/conf.d目錄下的welcome.conf删除或檔案名改變

配置httpd的工作屬性:vim /etc/httpd/conf/httpd.conf

指令不區分字元大小寫,但約定俗成的習慣:單詞的首字母大寫;指令的值很有可能區分大小寫;有些指令可以重使用多次;

配置檔案的構成:主伺服器和虛拟主機不能同時啟用

   全局配置:對主伺服器或虛拟機都有效,且有些功能是伺服器自身工作屬性;

   主伺服器:主站屬性;

   虛拟主機:虛拟主機及屬性定義

配置檔案文法測試:

    # service httpd configtest 檢查文法是否有錯誤

    # httpd -t

大多數配置修改後,使用service httpd reload即能生效;

而修改監聽的位址和端口通常需要重新開機服務,使用指令service httpd restart

本文轉自 宋鵬超 51CTO部落格,原文連結:http://blog.51cto.com/qidian510/1280126,如需轉載請自行聯系原作者

繼續閱讀