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:
<version> <status> <reason-phrase>
版本 狀态碼 原因短語
<headers>
首部
<entity-body>
主體部分
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檔案
<html>
<title> Test Page</title>
<body>
<h1> Hello</h1>
Hello word
</body>
</html>
這樣我們打開的就是我們所編輯的内容了。
如果我們不對/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,如需轉載請自行聯系原作者