一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - 什么是http服務器

什么是http服務器

2020-04-13 21:29嗶嗶小子 服務器知識

本篇文章旨在從服務器后臺開發(fā)的角度剖析一個簡單的http服務器的運行原理,讓你了解什么是http服務器

什么是http服務器

我們知道瀏覽器是http(s)的客戶端,目的是連接遠程的http服務器,然后服務器返回瀏覽器數(shù)據(jù).瀏覽器接收數(shù)據(jù)解析數(shù)據(jù)之后展現(xiàn)出來.我們看到的外在表現(xiàn)就是,瀏覽器訪問一個url,然后就得到相應的web頁面.

同樣我們知道,瀏覽器與http服務器是通過http協(xié)議,傳輸層是tcp協(xié)議,因為他是有連接,可靠的協(xié)議.關于http協(xié)議簡單的介紹一下:


一個標準的HTTP請求由以下幾個部分組成

  1. <request-line> 
  2. <headers> 
  3. <CRLF> 
  4. [<request-body><CRLF>] 

在HTTP請求中,第一行是請求行(request-line),用來說明請求類型、要訪問的資源(URL)以及使用的HTTP版本; 緊接著是多行頭部(headers)信息,用來說明服務器要使用的附加信息; 頭部信息之后是一個回車換行符( ),用于標明頭部信息的結(jié)束。 以上是必須內(nèi)容,根據(jù)需要可在頭部信息結(jié)束之后增加主體數(shù)據(jù)(request-body);

主體數(shù)據(jù)之后是一個回車換行符( ),用于標明主體數(shù)據(jù)的結(jié)束。

例如,我們可以在IE瀏覽器上輸入下面的網(wǎng)址:

  1. http://localhost:8000/hello/index.html 

HTTP請求的頭部信息如下:

 

  1. GET /hello/index.html HTTP/1.1 
  2. Accept: */* 
  3. Accept-Language: zh-cn 
  4. Accept-Encoding: gzip, deflate 
  5. Host: localhost:8000 
  6. Connection: Keep-Alive 
  7. Cookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6 

收到請求數(shù)據(jù)之后,服務器解析,畢竟是明文字符,這個簡單.然后服務器就知道了客戶端的要求--獲取目錄hello/index.html文件.服務器讀取文件內(nèi)容發(fā)送給瀏覽器就好了.

后來隨著業(yè)務邏輯越來越復雜,單單獲取某個html文件功能早已不能滿足需求,個性化需求呼之欲出.比如在線問卷調(diào)查表,他究竟是怎么把我們填寫的數(shù)據(jù)傳遞給服務器的呢?

你可能會說那不是一樣,客戶端發(fā)送什么內(nèi)容,服務器就接收什么內(nèi)容.可是你想過沒有,每個網(wǎng)站的需求是不一樣的,本來服務器接收到瀏覽器的請求數(shù)據(jù)已經(jīng)是夠復雜的了,還讓服務器來解析數(shù)據(jù)并響應不同的數(shù)據(jù)處理,這不太現(xiàn)實.

一般的,服務器最好只接收數(shù)據(jù),如果讓服務器也處理數(shù)據(jù)邏輯,勢必會讓服務器變得很復雜,穩(wěn)定性也得不到保證.

另外一個角度是為了讓程序復用,提高生產(chǎn)效率.也就是說,如果不關注業(yè)務邏輯,只注重接收數(shù)據(jù),那么服務器程序可以給任何一個開發(fā)者使用.換句話說,我們不用從頭開始寫.直接使用現(xiàn)有的高性能的服務器就可以滿足需求了.例如公司白領中午要吃飯,不可能跑回家自己去做飯吃,自己叫外賣就好了.

但是現(xiàn)實問題仍然沒有解決,通過什么方式去處理業(yè)務邏輯呢?

你要給手機充電時,把插頭插入插線板就能獲取電了.插線板有接口,提供了電.

同理服務器程序最好也提供接口,瀏覽器通過統(tǒng)一的接口給服務器,然后我們從服務器接口中獲取我們想要的數(shù)據(jù).獲取數(shù)據(jù)之后我們可以把數(shù)據(jù)交給第三方程序來處理邏輯,這樣就做到與服務器業(yè)務分離了,good iead.

事實上,現(xiàn)在的http服務器就是這么做的,不過很復雜而已.下一篇開始為您介紹這些接口.

附錄:HTTP Request Header 請求頭

 

 

Header

解釋

示例

Accept

指定客戶端能夠接收的內(nèi)容類型

Accept: text/plain, text/html

Accept-Charset

瀏覽器可以接受的字符編碼集。

Accept-Charset: iso-8859-5

Accept-Encoding

指定瀏覽器可以支持的web服務器返回內(nèi)容壓縮編碼類型。

Accept-Encoding: compress, gzip

Accept-Language

瀏覽器可接受的語言

Accept-Language: en,zh

Accept-Ranges

可以請求網(wǎng)頁實體的一個或者多個子范圍字段

Accept-Ranges: bytes

Authorization

HTTP授權(quán)的授權(quán)證書

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Cache-Control

指定請求和響應遵循的緩存機制

Cache-Control: no-cache

Connection

表示是否需要持久連接。(HTTP 1.1默認進行持久連接)

Connection: close

Cookie

HTTP請求發(fā)送時,會把保存在該請求域名下的所有cookie值一起發(fā)送給web服務器。

Cookie: $Version=1; Skin=new;

Content-Length

請求的內(nèi)容長度

Content-Length: 348

Content-Type

請求的與實體對應的MIME信息

Content-Type: application/x-www-form-urlencoded

Date

請求發(fā)送的日期和時間

Date: Tue, 15 Nov 2010 08:12:31 GMT

Expect

請求的特定的服務器行為

Expect: 100-continue

From

發(fā)出請求的用戶的Email

From: [email protected]

Host

指定請求的服務器的域名和端口號

Host: www.zcmhi.com

If-Match

只有請求內(nèi)容與實體相匹配才有效

If-Match: “737060cd8c284d8af7ad3082f209582d”

If-Modified-Since

如果請求的部分在指定時間之后被修改則請求成功,未被修改則返回304代碼

If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT

If-None-Match

如果內(nèi)容未改變返回304代碼,參數(shù)為服務器先前發(fā)送的Etag,與服務器回應的Etag比較判斷是否改變

If-None-Match: “737060cd8c284d8af7ad3082f209582d”

If-Range

如果實體未改變,服務器發(fā)送客戶端丟失的部分,否則發(fā)送整個實體。參數(shù)也為Etag

If-Range: “737060cd8c284d8af7ad3082f209582d”

If-Unmodified-Since

只在實體在指定時間之后未被修改才請求成功

If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT

Max-Forwards

限制信息通過代理和網(wǎng)關傳送的時間

Max-Forwards: 10

Pragma

用來包含實現(xiàn)特定的指令

Pragma: no-cache

Proxy-Authorization

連接到代理的授權(quán)證書

Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Range

只請求實體的一部分,指定范圍

Range: bytes=500-999

Referer

先前網(wǎng)頁的地址,當前請求網(wǎng)頁緊隨其后,即來路

Referer: http://www.zcmhi.com/archives/71.html

TE

客戶端愿意接受的傳輸編碼,并通知服務器接受接受尾加頭信息

TE: trailers,deflate;q=0.5

Upgrade

向服務器指定某種傳輸協(xié)議以便服務器進行轉(zhuǎn)換(如果支持)

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

User-Agent

User-Agent的內(nèi)容包含發(fā)出請求的用戶信息

User-Agent: Mozilla/5.0 (Linux; X11)

Via

通知中間網(wǎng)關或代理服務器地址,通信協(xié)議

Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

Warning

關于消息實體的警告信息

Warn: 199 Miscellaneous warning

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品一久久香蕉国产线看播放 | 高清国产精品久久 | 羞羞私人影院可以直接免费观影吗 | 色哟哟哟在线精品观看视频 | 色综合97天天综合网 | 加勒比一本大道在线 | 好吊色青青青国产综合在线观看 | 婷婷99av综合 | 免费a漫 - 禁密天堂 | 成人高清网站 | 日本精品久久久久久久久免费 | 亚洲H成年动漫在线观看不卡 | 韩国久播影院理论片不卡影院 | 久久综合老色鬼网站 | 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 5566中文字幕亚洲精品 | ass日本乱妇ass | 国产一区二区精品久久91 | 欧美日韩国产手机在线观看视频 | 免费黄色网站视频 | 亚洲欧美日韩天堂 | 四虎在线视频免费观看视频 | 国产资源视频在线观看 | 香蕉91视频 | 日本高清在线播放 | 皇上好大好硬好涨好深好爽 | 国内自拍网红在线综合 | 美女脱了内裤让男桶爽 | 国内精品在线观看视频 | 我与旗袍老师疯狂床震 | 奇米色7777 | 99久久国产综合精品1尤物 | 操美女| 男人j桶进女人p桶爽 | 日本aa大片在线播放免费看 | 欧美黑人成人免费全部 | 99热精品国产麻豆 | 99热久久这里只有精品23 | 免费永久观看美女视频网站网址 | 亚洲国产精品牛在线 | 日韩在线成人 |