2018-06-13 http服務 1

1霉颠、套接字

在建立通信連接的每一端,進程間的傳輸要有兩個標志:
IP地址和端口號荆虱,合稱為套接字地址socket address 蒿偎,套接字文件定義了ip地址和端口號,用于不同進程間通信使用怀读。比如mysql服務器端的進程和客戶端的進程進行通訊诉位。
客戶機套接字地址定義了一個唯一的客戶進程
服務器套接字地址定義了一個唯一的服務器進程

  • Socket:套接字,進程間通信IPC的一種實現(xiàn)菜枷,允許位于不同主機(或同一主機)上不同進程之間進行通信和數(shù)據(jù)交換苍糠。
  • Socket Domain:根據(jù)其所使用的地址
    AF_INET:Address Family,IPv4
    AF_INET6:IPv6
    AF_UNIX:同一主機上不同進程之間通信時使用
  • 套接字相關的系統(tǒng)調(diào)用:
    socket(): 創(chuàng)建一個套接字
    bind():綁定IP和端口
    listen():監(jiān)聽
    accept():接收請求
    connect():請求連接建立
    write():發(fā)送
    read():接收
    close():關閉連接

2啤誊、HTTP通信過程

http: Hyper Text Transfer Protocol, 80/tcp岳瞭,超文本傳輸協(xié)議。
html: Hyper Text Markup Language 超文本標記語言蚊锹,編程語言瞳筏,是http協(xié)議傳輸?shù)囊环N文件格式。

image.png

image.png

MIME:Multipurpose Internet Mail Extensions
多用途互聯(lián)網(wǎng)郵件擴展 /etc/mime.types
格式:major/minor
text/plain
text/html ---也就是傳輸?shù)奈募牟煌袷?br> text/css
image/jpeg
image/png
video/mp4
application/javascript
參考:http://www.w3school.com.cn/media/media_mimeref.asp

3牡昆、Web資源:web resource

一個網(wǎng)頁由多個資源構(gòu)成姚炕,打開一個頁面,會有多個資源展示出來丢烘,但是每個資源都要單獨請求柱宦。因此,一個“Web 頁面”通常并不是單個資源铅协,而是一組資源的集合
靜態(tài)文件:無需服務端做出額外處理
文件后綴:.jpg, .html, .txt, .js, .css, .mp3, .avi
動態(tài)文件:服務端執(zhí)行程序捷沸,返回執(zhí)行的結(jié)果
文件后綴:.asp, .php, .jsp

4、URI

URI: Uniform Resource Identifier 統(tǒng)一資源標識狐史,分為URL和URN
URN: Uniform Resource Naming痒给,統(tǒng)一資源命名
示例:P2P下載使用的磁力鏈接是URN的一種實現(xiàn)
magnet:?xt=urn:btih:660557A6890EF888666
URL: Uniform Resorce Locator,統(tǒng)一資源定位符骏全,用于描述某服務器某特定資源位置
兩者區(qū)別:URN如同一個人的名稱苍柏,而URL代表一個人的住址。換言之姜贡,URN定義某事物的身份试吁,而URL提供查找該事物的方法。URN僅用于命名,而不指定地址
URL組成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
schame:方案熄捍,訪問服務器以獲取資源時要使用哪種協(xié)議
user:用戶烛恤,某些方案訪問資源時需要的用戶名
password:密碼,用戶對應的密碼余耽,中間用:分隔
Host:主機缚柏,資源宿主服務器的主機名或IP地址
port:端口,資源宿主服務器正在監(jiān)聽的端口號,很多方案有默認端口號
path:路徑,服務器資源的本地名碟贾,由一個/將其與前面的URL組件分隔
params:參數(shù)币喧,指定輸入的參數(shù),多個參數(shù)袱耽,用;分隔
query:查詢杀餐,傳遞參數(shù)給程序,如數(shù)據(jù)庫朱巨,用史翘?分隔,多個查詢用&分隔
frag:片段,一小片或一部分資源的名字冀续,此組件在客戶端使用恶座,用#分隔,可以在當前頁進行跳轉(zhuǎn)沥阳,跳轉(zhuǎn)至當前網(wǎng)頁的特定行,比如當前頁面篇幅比較長時自点,可以跳轉(zhuǎn)到當前頁面的指定位置桐罕。

5、網(wǎng)站訪問量

IP(獨立IP):記錄遠程客戶機IP地址的計算機訪問網(wǎng)站的次數(shù)桂敛,是衡量網(wǎng)站流量的重要指標功炮,一天內(nèi)來自相同客戶機IP地址只計算一次。
PV(訪問量):即Page View, 頁面瀏覽量或點擊量术唬,用戶每次刷新即被計算一次薪伏,PV反映的是瀏覽某網(wǎng)站的頁面數(shù),PV與來訪者的數(shù)量成正比粗仓,PV并不是頁面的來訪者數(shù)量嫁怀,而是網(wǎng)站被訪問的頁面數(shù)量
UV(獨立訪客):即Unique Visitor,訪問某網(wǎng)站的電腦的數(shù)量借浊。網(wǎng)站判斷來訪電腦的身份是通過來訪電腦的cookies實現(xiàn)的塘淑。如果更換了IP后但不清除cookies,再訪問相同網(wǎng)站蚂斤,該網(wǎng)站的統(tǒng)計中UV數(shù)是不變的存捺。
網(wǎng)站統(tǒng)計:http://www.alexa.cn/rank/

6、一次完整的http請求處理過程

1曙蒸、建立連接:接收或拒絕連接請求捌治,即三次握手的過程岗钩。
2、接收請求:接收客戶端請求報文中對某資源的一次請求的過程
Web訪問響應模型(Web I/O)
單進程I/O模型:啟動一個進程處理用戶請求肖油,而且一次只處理一個兼吓,多個請求被串行響應
多進程I/O模型:并行啟動多個進程,每個進程響應一個連接請求
復用I/O結(jié)構(gòu):啟動一個進程,同時響應N個連接請求
實現(xiàn)方法:多線程模型和事件驅(qū)動
多線程模型:一個進程生成N個線程构韵,每線程響應一個連接請求
事件驅(qū)動:一個進程處理N個請求
復用的多進程I/O模型:啟動M個進程周蹭,每一個進程開多個線程,每個線程響應多個連接請求
3疲恢、處理請求:服務器對請求報文進行解析凶朗,并獲取客戶端請求的資源及請求的方法等相關信息,根據(jù)方法显拳,資源棚愤,首部和可選的主體部分對請求進行處理
HTTP常用請求方式Method:GET、POST杂数、HEAD宛畦、PUT、DELETE揍移、TRACE次和、OPTIONS
4、訪問資源:負責向請求者提供對方請求的靜態(tài)資源那伐,或動態(tài)運行后生成的資源踏施,用戶將指令發(fā)送給內(nèi)核,內(nèi)核到磁盤上去調(diào)取客戶端要訪問的資源數(shù)據(jù)到內(nèi)核空間罕邀,再將資源發(fā)送到用戶的內(nèi)存空間畅形。
5、構(gòu)建響應報文:一旦Web服務器識別從出了資源诉探,就執(zhí)行請求方法中描述的動作日熬,封裝http的頭部信息的響應報文,并返回響應報文肾胯。響應報文中包含有響應狀態(tài)碼竖席、響應首部,如果生成了響應主體的話阳液,還包括響應主體怕敬。
1)響應實體:如果事務處理產(chǎn)生了響應主體,就將內(nèi)容放在響應報文中回送過去帘皿。響應報文中通常包括:
描述了響應主體MIME類型的Content-Type首部
描述了響應主體長度的Content-Length
實際報文的主體內(nèi)容

此命令可以查看響應報文的頭部信息
[root@centos6 network-scripts]#curl -I www.qq.com
HTTP/1.1 200 OK
Server: squid/3.5.20
Content-Type: text/html; charset=GB2312
Cache-Control: max-age=60
Expires: Tue, 26 Sep 2017 12:34:04 GMT
Date: Tue, 26 Sep 2017 12:33:04 GMT
Connection: keep-alive

2)URL重定向:web服務構(gòu)建的響應并非客戶端請求的資源东跪,而是資源另外一個訪問路徑
永久重定向:http://www.360buy.com ---用戶訪問這個網(wǎng)站的時候會跳轉(zhuǎn)到https://www.jd.com/這個網(wǎng)站。
臨時重定向:http://www.taobao.com
6、發(fā)送響應報文
7虽填、記錄日志
最后丁恭,當事務結(jié)束時,Web服務器會在日志文件中添加一個條目斋日,來描述已執(zhí)行的事務

7牲览、Httpd特性和MPM工作模式

  • 高度模塊化:core + modules
  • DSO: Dynamic Shared Object 動態(tài)加/卸載
  • MPM:multi-processing module多路處理模塊
    這些特性和內(nèi)核很相似。
  • MPM工作模式
    ①prefork:多進程I/O模型恶守,每個進程響應一個請求第献,默認模型
    一個主進程:生成和回收n個子進程,創(chuàng)建套接字兔港,不響應請求
    多個子進程:工作work進程庸毫,每個子進程處理一個請求;系統(tǒng)初始時衫樊,預先生成多個空閑進程飒赃,等待請求,最大不超過1024個
    ②worker:復用的多進程I/O模型,多進程多線程科侈,IIS使用此模型
    一個主進程:生成m個子進程载佳,每個子進程負責生個n個線程,每個線程響應一個請求臀栈,并發(fā)響應請求:m*n
    ③event:事件驅(qū)動模型(worker模型的變種)
    一個主進程:生成m個子進程蔫慧,每個進程生成n個線程來響應n個請求,有專門的服務線程來管理這些keep-alive類型的線程权薯,當有真實請求時藕漱,將請求傳遞給服務線程,執(zhí)行完畢后崭闲,又允許釋放。這樣增強了高并發(fā)場景下的請求處理能力
    httpd-2.2: event測試版威蕉,centos6
    httpd-2.4:event穩(wěn)定版刁俭,centos7


    image.png

    image.png

    image.png

8、httpd的功能特性

虛擬主機
IP韧涨、Port牍戚、FQDN
一個物理服務器上可以額搭建多個web網(wǎng)站。
CGI:Common Gateway Interface虑粥,通用網(wǎng)關接口
網(wǎng)關用來解決不同網(wǎng)段如孝、不同協(xié)議之間的通信。
反向代理
假如有好幾個服務器提供相同的web服務娩贷,并且網(wǎng)站信息都是一樣的第晰,反向代理服務器的作用相當于一個調(diào)度器,將用戶發(fā)送的請求轉(zhuǎn)發(fā)給相應的服務器。
正向代理
比如用戶要訪問一個網(wǎng)站茁瘦,它先把請求發(fā)送給正向代理服務器品抽,然后代理服務器去替你去訪問這個網(wǎng)站,并且下載網(wǎng)站的資源甜熔,一份發(fā)送給你圆恤,一份保存到自己的緩存中,當有下一個用戶要訪問相同的網(wǎng)頁資源時腔稀,因為代理服務器上已經(jīng)有緩存盆昙,就直接將資源發(fā)送給用戶,節(jié)省了帶寬焊虏。
負載均衡
路徑別名
豐富的用戶認證機制
basic
digest
支持第三方模塊

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淡喜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炕淮,更是在濱河造成了極大的恐慌拆火,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涂圆,死亡現(xiàn)場離奇詭異们镜,居然都是意外死亡,警方通過查閱死者的電腦和手機润歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門模狭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人踩衩,你說我怎么就攤上這事嚼鹉。” “怎么了驱富?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵锚赤,是天一觀的道長。 經(jīng)常有香客問我褐鸥,道長线脚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任叫榕,我火速辦了婚禮浑侥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晰绎。我一直安慰自己寓落,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布荞下。 她就那樣靜靜地躺著伶选,像睡著了一般史飞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上考蕾,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天祸憋,我揣著相機與錄音,去河邊找鬼肖卧。 笑死蚯窥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的塞帐。 我是一名探鬼主播拦赠,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葵姥!你這毒婦竟也來了荷鼠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤榔幸,失蹤者是張志新(化名)和其女友劉穎允乐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體削咆,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡牍疏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拨齐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳞陨。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞻惋,靈堂內(nèi)的尸體忽然破棺而出厦滤,到底是詐尸還是另有隱情,我是刑警寧澤歼狼,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布掏导,位于F島的核電站,受9級特大地震影響羽峰,放射性物質(zhì)發(fā)生泄漏碘菜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一限寞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仰坦,春花似錦履植、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凿滤。三九已至,卻和暖如春庶近,著一層夾襖步出監(jiān)牢的瞬間翁脆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工鼻种, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留反番,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓叉钥,卻偏偏與公主長得像罢缸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子投队,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容