HTTPphp
HTTP:Hyertext Transfer Protocol:超文本傳輸協議(超連接)html
超連接:在文檔中實現跳轉,(基於連接,能在文檔中跳轉)java
Web:
http/0.9:早期:僅支持純文本(超連接,ASCII,python
HTML:編寫超文本的語言,超文本標記語言(將分散在多個服務器中的資源整合成爲一個頁面並被瀏覽器使用)。linux
Browser:瀏覽器:客戶端代理(火狐,IE)nginx
URI:統一資源標識符----定義全局範圍內,獨立惟一資源的命名方式web
統一:路徑格式上的統一chrome
URI的子對象-->URL:統一資源定位符 ----用來描述 在互聯網上的資源的統一表現格式--獲取這個資源的格式和路徑數據庫
protocol://host:port/path/to/fileapache
例如:
http://www.magedu.com/download/linux.tar.gz
web資源(web對象):可讓客戶端進行訪問的文件
http://www.magedu.com/logo.gif
多個資源被整合爲一個html文檔
HTML語言:將分散在多個服務器上的資源整合成一個頁面,而且可以在瀏覽器頁面上進行顯示!
資源獲取的方式:http方法/1.0:PUT(從遠程服務器獲取一個文件到本地),POST(能夠向服務器進行文件的上傳),GET(從遠程服務器獲取文件在頁面上進行顯示),DELETE
http/1.0引進了MIME:多用途互聯網郵件擴展
SMTP:簡單郵件傳輸協議,早期:(傳文本)
MIME:將非文本數據在傳輸前從新編碼爲文本格式,接收方可以用相反的方式將其從新還原爲原來的格式,還可以調用相應的程序來打開此文件
協議首部:
p_w_picpath(圖片)/jpeg
瀏覽器有插件能夠解析對應MIME傳來各類格式的數據,(fLush插件)
動態網頁:activeX,在服務器端存儲的文檔非HTML格式,而是編程語言開發的腳本,腳本接受參數(客戶端的地址和瀏覽器類型)以後在服務器上運行,完成以後,會生成HTML文檔,並把這個生成的文檔發給客戶端,
Java,Applet,JRE(環境)
web:index.php
web-->procotol(協議)-->php(運行index.php)-->生成HTML文檔再返回給web服務器-->再返回給客戶端
流程:客戶端進行客戶請求的時候,不是純文本文檔,是index.PHP格式文檔,此時web服務器會調用PHP解釋器來運行index.php格式的文檔,生成HTML格式的文檔再返回給web服務器,再返回給客戶端,再經過客戶端瀏覽器的插件進行解析成該客戶端請求格式的內容!!)
index.html:
一個網頁 引用N個web對象:URL
動態網頁:包含靜態內容和動態內容
動態內容部分才需運行才能返回給客戶端
http--1.0/一、添加了緩存:
二、引入了長鏈接的機制
IP:首部 source IP Destination IP
TCP:首部 source port Destination port
HTTP首部 GET 2.html(具體路徑)
host:www.magedu.com
HTTP報文:請求報文,響應報文
請求報文語法:
<method-資源獲取方法> <request-URL-請求的資源是什麼> <version資源協議的版本號>
<headers--HTTP協議的首部>
空白行
<entity-body-->報文主體
服務器相應相應報文:
<version--協議><status--狀態碼> <reason-phrase--解釋status的意義>
<headers--相應報文的格式>
<entity-body>
status ----- 狀態代碼:
1xx:純信息
2xx:"成功"類的信息(202)
3xx:重定向類的信息(301--永久重定向,302--臨時重定向,304--沒有發生任何改變)
4xx:客戶端錯誤類的信息(404--客戶端錯誤)
5xx服務器端錯誤的信息 (501,502,503。。。。。。)
請求報文:
GET /HTTP/1.1
host:www.magedu.com
connection: keep-alive
相應報文:
/HTTP/1.1 200 OK
x-Powered-By:php/5.2.17
上面兩個報文的第一行一般稱做報文「起始行(start line)」:後面的標籤格式的內容稱做首部域(header field),每一個首部域都由名稱(name)和值(value)組成,中間用逗號分隔,另外,響應報文一般還有一個稱爲body 的信息主體,即響應給客戶端的內容,
web服務器的主要操做
一、創建鏈接--接受或者拒絕可專斷鏈接請求
二、接受請求--經過網絡讀取HTTP請求報文
三、處理請求--解析請求報文並作出相應的動做
四、訪問資源--訪問請求報文中相關的資源
五、構建相應--使用正確的首部生成HTTP相應報文
六、發送相應--向客戶端發送生成的相應報文
七、記錄日誌--當已經完成的HTTP事務記錄進日誌文件
C/S
C:Clinet Agentg (browser(瀏覽器),spider(搜索引擎))
S:Server
Client->request-server-->
標記用戶資源@URL --報文請求格式
server-response->client
獲取資源的方法 @GET ,HEAD POST PUT ,DELETE,TRACE,OPITIONS, connection.
協議首部
Name:Value
host:www.magedu.com
connection:keep-alive
server 響應模型,
1單進程,單線程
2單進程,多線程
3多進程 ,單線程
4多進程,多線程
httpd: 一、prefork 二、work 三、event
客戶端瀏覽器Client:
一、IE
二、Firefox 火狐
三、chrome 谷歌
四、Opera
五、Safari
服務器端軟件 Server:
一、Apache-->httpd
二、nginx
三、lighttpd 德國研發的一個開源軟件
四、thttpd 一個嵌入式的web服務器
應用程序服務器:
一、IIs ()
二、tomcat(apache,JSP,open source)
三、websphere(IBM,JSP,commodity)
四、weblogic(Oracle,JSP,commodity)
五、JBOSS(RedHat)從新封裝的一個tomcat
www.netcraft.com 最近全球互聯網上web服務器各產品的比例。
apache:
軟件基金會:
FSF:GUN,GPL
ASF:apache software Fundation
web:httpd
一、Hadoop提供並行處理環境,提供高性能框架
二、tomcat:做爲JSP實現規範和參照的應用程序
apahce基金會的主要項目訪問路徑 web:http://httpd.apache.org
httpd服務器軟件:
web server,open Source
各類版本:2.2 2.4 2.0 1.3
httpd具備的特性:
一、事先建立進程----web相應用戶請求的時候,已經啓動進程,空閒狀態,若有請求,即刻可有用
二、按需維持適當的進程----若有很大的訪問請求,如完成請求,會適當關閉一些空閒的進程
三、模塊設計,核心比較小,各類功能都模塊添加(包括php)
------支持運行時配置,支持單獨編譯模塊
四、支持多種方式的虛擬主機配置---
虛擬主機: 物理服務器只有一個,web程序也只有一個,根據用戶不一樣的請求,可是能夠有多個不一樣的站點(scoret:IP.port)
虛擬主機的類型: 1.基於IP的虛擬主機
2.基於端口的虛擬主機
3.基於域名的虛擬主機------
支持https協議 -----經過一個模塊方式mod_ssl
支持用戶認證---
支持基於IP或主機名的ACL(訪問控制)
支持每目錄的訪問控制(訪問特殊目錄的時候須要帳號和密碼)
支持URL重寫,/p_w_picpath/a.jpeg/bbs/p_w_picpaths/abc.jpeg
dhcp的安裝-----3
rpm包的安裝:
源碼編譯安裝
httpd:
/usr/sbin/httpd(多道處理模塊--MPM:prefork)
httpd:root,root(master process--主導進程)
httpd:apache,apache(worker process--工做進程)
服務腳本---/etc/rc.d/init.d/httpd
port:(80/tcp),(ssl:443/tcp)
etc/httpd:工做根目錄,至關於程序安裝目錄
/etc/httpd/conf:配置文件目錄
主配置文件:httpd.conf
/etc/httpd/conf.d/*.conf 也是配置文件目錄
/etc/httpd/modules:模塊目錄
/etc/httpd/log-->/var/log/httpd:日誌目錄
日誌文件有兩類:訪問日誌access_log,錯誤日誌:err_log
客戶端請求服務器的頁面目錄: /var/www/
---html
---cgi-bin 動態頁面所提供的路徑
cgi:common gateway Interface---通用網管接口--就是web服務器與應用程序交流的一種協議
----其實就是跟web服務器可以讓額外的應用程序通訊的一種機制,可以讓web啓動程序來處理動態內容。
Client -->httpd(index.cgi-動態內容)-->spawn Process(發起這個程序進程)(index.cgi)-->httpd-->client
cgi: perl,python,java,(servlet,jsp),php
web靜態服務器與動態程序服務器通訊稱爲:fastcgi
-----當用戶發送請求當中,有靜態和動態請求,靜態請求,web服務器能夠單獨處理相應給用戶,動態內容能夠經過網絡
發給動態程序服務器進行處理,從而能夠把靜態和動態分離處理再返回給客戶,這就是靜態和動態分層次處理,
程序:有指令和數據組成
專業管理數據服務的服務器是數據庫服務器!
httpd:
指令 參數 directive value
指令不區分大小寫,value則根據須要區分大小寫!
MPM:Multi Path Modules 多道處理模塊
一、mpm_winnet win上專用的線程處理機制
二、prefork 在Linux上預先生成進程 -----------一個請求用一個進程相應
三、worker 基於線程工做,一個進程相應多個用戶請求,可是是多個線程來處理請求------一個請求用一個線程相應
四、event 基於事件的請求,一個進程處理多個用戶請求-----一個進程處理多個請求
虛擬主機:
apache服務:
中心主機:
虛擬主機:
一、IP虛擬
二、端口虛擬
三、域名虛擬
一個站點須要哪些東西(獨立的資源):
一、不一樣的目錄--Documentroot
二、servername 主機名
虛擬主機與中心主機不能同時使用,得先取消中心主機,註釋中心主機的DocumentRoot便可。
虛擬主機的定義:
< virtuahost host>
</virtuahost>