http協(xié)議:超文本傳輸協(xié)議
html:超文本標(biāo)記語言;
應(yīng)用層協(xié)議格式:文本(http/sftp),二進(jìn)制(memcache)
http服務(wù)器程序:
httpd
Nginx
lighttpd 輕量級(jí)應(yīng)用程序服務(wù)器:不僅能處理靜態(tài)資源已脓,還能處理動(dòng)態(tài)資源;
IIS .net
Tomcat jsphttp協(xié)議版本:
HTTP/0.9 只支持GET方法
HTTP/1.0 引入MIME,支持傳輸多媒體异袄;引入cache,支持更多的Method
HTTP/1.1 增強(qiáng)了緩存玛臂,開始支持持久連接功能烤蜕;
HTTP/2.0 借鑒了SPDY封孙,增強(qiáng)了性能;
MIME:多用途互聯(lián)網(wǎng)郵件擴(kuò)展讽营;Multipurpose Internet Mail Extension
主要作用:傳輸非文本格式的數(shù)據(jù)虎忌;
major/minor
HTML格式的文本:text/html
普通ASCII文本:text/plain
JPEG格式的圖片:image/jpeg
WEB資源的分類:
- 靜態(tài)資源:圖片,txt文本橱鹏,css膜蠢,mp3,html
- 動(dòng)態(tài)資源:客戶端請(qǐng)求的是程序文件莉兰,需要服務(wù)器端的應(yīng)用程序運(yùn)行后返回運(yùn)行的結(jié)果挑围;
注意:一個(gè)站點(diǎn)由眾多的資源構(gòu)成,每個(gè)資源都需要單獨(dú)請(qǐng)求糖荒;
URL:唯一標(biāo)識(shí)服務(wù)器端某特定資源的存放位置杉辙;
語法格式:scheme://server[:port]/path/to/source
。 URI 統(tǒng)一資源標(biāo)識(shí)符捶朵;URL和URN(統(tǒng)一資源名)是URI的子集蜘矢;httpd協(xié)議本事是無狀態(tài)的,無法永久存儲(chǔ)用戶的信息综看,所以引用了cookie和session機(jī)制
品腹。Cookie:保存在客戶端;由服務(wù)器發(fā)送給客戶端寓搬,唯一標(biāo)識(shí)用戶的信息珍昨;
。 胖cookie 信息量大句喷,可能會(huì)泄露用戶信息
镣典。瘦cookie 僅記錄個(gè)人用戶信息Session:保存在服務(wù)器端
一次完整的http請(qǐng)求過程:
1.接收客戶端的連接,如果不希望與這個(gè)客戶端建立連接唾琼,就直接關(guān)閉兄春;
2.接收來自客戶端的http請(qǐng)求;
3.處理請(qǐng)求:分析請(qǐng)求報(bào)文中的首部信息锡溯,并采取相應(yīng)的行動(dòng)赶舆;
4.訪問資源:發(fā)起系統(tǒng)調(diào)用,獲取請(qǐng)求的資源祭饭;
5.構(gòu)建http響應(yīng)報(bào)文并發(fā)送給客戶端芜茵;
6.記錄到日志文件中
并發(fā)響應(yīng)模型:(c10K問題)
1.單進(jìn)程i/o模型:啟動(dòng)一個(gè)進(jìn)程處理所有用戶的請(qǐng)求;
2.多進(jìn)程i/o模型:并行啟動(dòng)多個(gè)進(jìn)程倡蝙,每個(gè)進(jìn)程處理一個(gè)請(qǐng)求九串;
3.復(fù)用的i/o模型:
多線程模型:一個(gè)進(jìn)程產(chǎn)生多個(gè)線程,一個(gè)線程處理一個(gè)請(qǐng)求;
事件驅(qū)動(dòng)機(jī)制:一個(gè)進(jìn)程直接響應(yīng)n個(gè)請(qǐng)求猪钮;
4.復(fù)用的多進(jìn)程i/o模型:啟動(dòng)m個(gè)進(jìn)程品山,每個(gè)進(jìn)程生成n個(gè)線程;則烤低,響應(yīng)請(qǐng)求數(shù)量為m*n
- http事務(wù):一次http事務(wù)=一次請(qǐng)求+一次響應(yīng)的過程肘交;
。 request報(bào)文首部:
<method><URL><vsersion>
<HEADERS>(name:value)
<request body>
扑馁。 response報(bào)文首部:
<vsrsion><status><reson-phrase>
<HEADERS>
<body>
Method:
GET,HEAD,POST,PUT,DELETE,TRACE(跟蹤資源經(jīng)過的代理服務(wù)器)涯呻,OPTIONS(返回服務(wù)器對(duì)資源支持使用的method)status:
。 1xx 信息類
腻要。2xx 成功類
魄懂。 3xx 重定向類;
闯第。 4xx 客戶端錯(cuò)誤
市栗。 5xx 服務(wù)器端錯(cuò)誤常用狀態(tài)瑪:
。200 請(qǐng)求成功咳短;OK
填帽。301 永久重定向;Moved Permanently
咙好。302 臨時(shí)重定向篡腌;Found
。304 請(qǐng)求資源未發(fā)生改變勾效;Not Modified
嘹悼。401 輸入賬號(hào)密碼后才能訪問資源;Unauthorized
层宫。403 請(qǐng)求被禁止杨伙;Forbidden
。404 服務(wù)器找不到客戶端請(qǐng)求的資源萌腿;Not Found
限匣。500 服務(wù)器內(nèi)部錯(cuò)誤;Internal Server Error
毁菱。502 代理服務(wù)器從后端服務(wù)器收到一條偽響應(yīng);Bad Gateway
米死。504 超時(shí)
。499 Nginx自定義狀態(tài)碼贮庞;客戶端向Nginx服務(wù)器發(fā)請(qǐng)求峦筒,服務(wù)端還未處理完成,響應(yīng)還沒完成窗慎∥锱纾客戶端就主動(dòng)斷開了;
HEADER:
通用首部:
請(qǐng)求首部:
條件式請(qǐng)求首部:IF-Modified-Since,If-None-Match
響應(yīng)首部:
實(shí)體首部:
擴(kuò)展首部:通用首部:既可以用在請(qǐng)求報(bào)文中又可以用在響應(yīng)報(bào)文中
Date:報(bào)文的創(chuàng)建時(shí)間
Connection:連接方式,如keep-alive,Close
Via:顯示報(bào)文經(jīng)過的中間節(jié)點(diǎn)
Cache-Control:控制緩存的生效機(jī)制
Pragma:兼容Http 1.0脯丝,緩存相關(guān)請(qǐng)求首部
Accept:通知服務(wù)器自己可以接受的媒體類型
Accept-Charset:可以接受的字符集
Accept-Encoding:通知服務(wù)器自己接受的編碼格式,如gzip
Accept-Language:接受的語言
Client-IP:客戶端IP
Host:請(qǐng)求的服務(wù)器名稱和端口號(hào)
Referer:包含當(dāng)前正在請(qǐng)求資源的上一級(jí)資源
User-Agent:客戶端代理條件式請(qǐng)求首部
Expect 期望服務(wù)器端發(fā)送什么類型信息
If-Modified-Since 自從指定的時(shí)間之后伏伐,請(qǐng)求的資源是否發(fā)生過修改
If-Unmodfied-Since 自從指定的時(shí)間之后宠进,請(qǐng)求的資源是否沒有修改
If-None-Match 緩存中存儲(chǔ)的文檔ETag標(biāo)簽是否與服務(wù)器端文檔Etag不匹配安全請(qǐng)求首部
Authorization 向服務(wù)器發(fā)送認(rèn)證信息
Cookie/Cookie2 客戶端向服務(wù)器發(fā)送Cookie代理請(qǐng)求首部
Proxy-Authorization:向代理服務(wù)器認(rèn)證響應(yīng)首部:
。信息性
Age:響應(yīng)持續(xù)時(shí)長
Server:服務(wù)器程序軟件名稱和版本協(xié)商首部:某資源有多種表示方法時(shí)使用
Accept-Ranges:服務(wù)器可接受的請(qǐng)求范圍類型
Vary:服務(wù)器查看的其他首部列表藐翎,服務(wù)器根據(jù)首部內(nèi)容挑選出最合適的資源版本發(fā)送給客戶端(當(dāng)代理服務(wù)器收到了客戶端的請(qǐng)求時(shí)候材蹬,如果請(qǐng)求首部字段的值與?Vary?的值相同,才會(huì)從代理服務(wù)器的緩存中返回請(qǐng)求吝镣,反之就會(huì)向源服務(wù)器重新發(fā)送請(qǐng)求)安全響應(yīng)首部
Set-Cookie:向客戶端設(shè)置Cookie
Set-Cookie2
WWW-Authenticate:來自服務(wù)器的對(duì)客戶端的質(zhì)詢認(rèn)證表單實(shí)體首部
堤器。 Allow 列出對(duì)此實(shí)體可使用的請(qǐng)求方法
。 Location 告訴客戶端真正的實(shí)體位于何處
末贾。Content-Encoding 內(nèi)容的編碼格式
闸溃。Content-Language 內(nèi)容的使用語言
。 Content-Length 主體的長度
拱撵。 Content-Location 實(shí)體真正所處位置
辉川。 Content-type 主體的對(duì)象類型緩存相關(guān)
。 Etag 實(shí)體的擴(kuò)展標(biāo)簽
拴测。 Expires 實(shí)體的過期時(shí)間
乓旗。 Last-Modified 最后一次修改的時(shí)間
- Web頁面:
。一個(gè)頁面由多個(gè)資源組成集索;
屿愚。PV:page view 入口頁面被視為一個(gè)pv
。UV:user view 每個(gè)獨(dú)立的ip地址被視為一個(gè)uv务荆;
認(rèn)證:
妆距。基于ip認(rèn)證:
函匕∫愫瘢基于用戶認(rèn)證:basic,digest資源映射:
浦箱。 Alias
吸耿。 DocumentRoothttpd:MPM
。prefork:一個(gè)主進(jìn)程酷窥,生成多個(gè)子進(jìn)程咽安,每個(gè)子進(jìn)程處理一個(gè)請(qǐng)求;
蓬推。 worker:一個(gè)主進(jìn)程妆棒,生成多個(gè)子進(jìn)程,每個(gè)子進(jìn)程生成多個(gè)線程,每個(gè)線程處理一個(gè)請(qǐng)求糕珊;
动分。 event:一個(gè)主進(jìn)程,生成多個(gè)子進(jìn)程红选,每個(gè)子進(jìn)程處理多個(gè)請(qǐng)求澜公;-
I/O類型:
同步和異步:
--關(guān)注的是消息通知機(jī)制:被調(diào)用者的狀態(tài)
。同步:調(diào)用發(fā)出之后不會(huì)立即返回喇肋,但一旦返回坟乾,則返回既是最終結(jié)果;
蝶防。異步:調(diào)用發(fā)出之后甚侣,被調(diào)用方立即返回消息,但返回的并非是最終結(jié)果:被調(diào)用者通過狀態(tài)间学,通知機(jī)制等來通知調(diào)用者殷费,或通過回掉函數(shù)來處理結(jié)果;阻塞和非阻塞:block,nonblock
-- 關(guān)注的是調(diào)用者等待被調(diào)用者返回調(diào)用結(jié)果使得狀態(tài)低葫;
宗兼。 阻塞:調(diào)用結(jié)果返回之前,調(diào)用者會(huì)被掛起氮采;調(diào)用者只有在得到返回結(jié)果之后才能繼續(xù)殷绍;
。非阻塞:調(diào)用者在結(jié)果返回之前鹊漠,不會(huì)被掛起主到,即調(diào)用不會(huì)阻塞調(diào)用者;
I/O模型:
躯概。 blocking IO 阻塞式IO
登钥。 nonblocking IO 非阻塞式I/O
。 IO multiplexing 復(fù)用型IO
娶靡。 signal dirven IO 事件驅(qū)動(dòng)式IO
牧牢。 asynchronous IO 異步IO