日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebServer 软件原理简介

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebServer 软件原理简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


一. B/S結構? 和 C/S結構簡介

1.1 C/S結構

所謂C/S 就是 Client - Server ,

在Client端有個界面程序.?? User會通過這個Client端程序來讀寫? 存放在Server端的數據.


我們常用的需要聯網桌面程序例如 郵件客戶端ThurderBird,? 聊天工具Pidgin都是C/S結構的.


1.2 B/S結構

而B/S 結構 就是Browser - Server

User只需要通過瀏覽器就能讀寫 存放在Server端的的數據.


B/S結構無需在終端機器安裝Client程序, 只需要1個瀏覽器.

網上很多網站, 例如論壇,? 網頁郵件客戶端這些就是B/S結構的程序.



二, 什么是WebServer 和? WebServer軟件

所謂webserver 就是 B/S結構的server.


而C/S 結構的Server作用跟webserver類似, 但是一般叫webserver.

所以本文是針對B/S機構來講的.


所謂webserver軟件就是能令1個Webserver啟動http(https)服務的軟件.

常見的webserver軟件有:

IIS(微軟),

JBoss,

WebLogic(收費)

Tomcat

等等


三, http網頁瀏覽的原理.

在討論WebServer的機制前, 我覺得有必要詳述一下http網頁瀏覽的原理.



3.1 網絡傳輸協議簡介


我們知道瀏覽器是可以打開本地html文件(網頁文件)的.


而瀏覽一個網站,? 只不過是利用瀏覽器遠程打開 放在Webserver的網頁文件而已.

問題來了, 那么我怎么打開1個網絡上的server上的文件呢.


可能有人覺得很簡單,? 大家都利用ftp打開過的機器的文件吧.


只需要ip地址 以及 文件在機器上的目錄就可以了?


實際上是不足夠的.


實際上, 需要的元素要三樣

1. server的ip地址

2. server的傳輸協議(例如ftp, sftp...等)

3. 對方開放的端口(port)


如果對方不開ftp服務, 你即使知道ip地址以及文件路徑也沒用.

就好如 你知道老王家的書柜上有一本好書,? 但是如果老王不想讓你看, 你也看不了的.


*首先你得知道老王家哪里.

*而ftp服務就如老王提供了1個看書服務.

* 端口就如老王家里開了一個窗口, 你可以通過這個窗口來申請借書..???? 你必須通過這個窗口才能借到書.?? 老王很可能開通其他窗口提供借酒, 借錢什么的...



而http協議跟ftp協議優點類似, 但是http只能通過瀏覽器訪問, 而且只能打開網頁文件.




3.2 http協議工作步驟.

好了假如服務器WebServer 有1個網頁文件.

而我家里的及機器有一個瀏覽器.


那么我到底怎么才能通過這個瀏覽器來打開webServer上的網頁文件呢.


大概原理如下圖:



3.2.1 WebServer 啟動 webserver(http協議)

作為網頁服務器,? 必須啟動webserver服務, 例如啟動Tomcat , 同時指定訪問端口.



3.2.2 Client端利用browser發送1個連接請求(request) 到WebServer的指定端口.


例如我用FireFox 打開1個網頁, 可以見到瀏覽器其實發送了1個get請求到Webserver的80端口(如果不在地址欄制定端口, 就會使用默認的http端口80)




在上面截圖右下角, 就見到Request header信息, 這些就是瀏覽器發送給Webserver的信息.

它包括:

1. Host:? 就是webserver的地址,? dns服務器會根據這個地址轉換成真正的ip來找到指定的WebServer

2. User-Agent: 就是瀏覽者所使用的瀏覽器和操作系統信息, Webserver可以利用這些信息做一些邏輯上的分支處理.

3. Accept: 就是這個瀏覽器能支持顯示什么內容.

還有Language, cookie等信息, 以后有機會再詳解.


注意, 絕大部分的連接請求都是通過TCP/IP協議發出的.



3.2.3 WebServer受到browser的申請后, 把對應的網頁文件附帶一些信息發送回瀏覽器.(利用Socket的Stream)

一旦WebServer受到請求.

相當于構造了1個Socket對象.(后面會講),? 然后利用這個Socket對象發送回對應的網頁文件,

那么瀏覽器就得到這個網頁文件并顯示給瀏覽者了.


下面就是webserver發送回的頭文件信息:


包括壓縮方式,

內容大小

內容格式

最近更新日期.

Server(webserver 軟件)類型等.


最后, 還會吧網頁文件的內容發送過來:






四, WebServer軟件的工作職責.

通過, 上面的例子.

我們可以大概清楚WebServer軟件的工作職責


1. 監聽訪問端口.

2. 一但有連接請求通過端口發送過來, 就建立一條與對方瀏覽器的通道(InputStream & OutputStream)

3. 把網頁內容和相關信息發送給瀏覽器.


當然, 真正使用的webserver軟件絕對沒有上面寫的這么簡單, 但最關鍵的步驟原理都是一樣的.


五, 利用java自己寫1個webserver軟件小程序.

我們知道了webserver 軟件的運行原理.

也可以嘗試自己寫1個簡單的webserver小程序出來了:

5.1 寫1個html文件

<html> <body><h1>My webserver mainPage</h1><p>hello world</p></body> </html>
存放在某個目錄, 例如:

/home/gateman/Studies/Java/java_start/single/mywebserver/index.html


5.2 利用java編寫MyWebServer.java


代碼:

public class MyWebServer{public static int port = 10010;public static String mainPagePath = "/home/gateman/Studies/Java/java_start/single/mywebserver/index.html";public static void main(String[] args){try{serverStart();}catch(Exception e){e.printStackTrace();}}public static void serverStart() throws Exception{ServerSocket ss = new ServerSocket(port);File fileMainPage = new File(mainPagePath);byte[] bArr = new byte[8];int len;while(true){Socket s = ss.accept();System.out.println("get a Connection request!"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileMainPage));BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());len = bis.read(bArr);while(-1 != len){bos.write(bArr,0,len); //maybe there's some previous data after len of the bArr len = bis.read(bArr);}bos.flush();bos.close(); bis.close();s.close(); }} }


步驟很簡單:

1. 首先在類里指定所使用的端口.

2. 指定主頁網頁文件的位置.

3. 根據端口構建1個 ServerSocket對象(如果對這個類不了解, 請參考我另一篇博文:? http://blog.csdn.net/nvd11/article/details/42847601)

4. 利用while循環監聽這個端口

5, 一旦有連接請求, 構造1個socket對象

6. 利用socket對象的outputstream, 把網頁文件內容發送過去.



5.4 測試執行

利用javac 編譯這個類

然后利用java命令來執行


那么這個程序就在監聽端口了.


然后我們可以打開另1個虛擬機, 輸入在瀏覽器輸入ip地址和端口(192.168.1.107:10010), 就見到瀏覽器里顯示了那個網頁文件的內容:




5.5 小結

其實這個MyWebServer功能相當弱啦, 而且是沒有執行相應標準的, 只是能用瀏覽器簡單顯示網頁文件的內容, 并沒有正確地顯示網頁文件.


常用的WebServer 軟件例如Tomcat, Weblogic功能強大得多也健壯得多, 但是基本原理是相似的.















































總結

以上是生活随笔為你收集整理的WebServer 软件原理简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91免费网站在线观看 | 欧美日韩一级大片 | 日韩偷拍一区 | 日韩欧美国产网站 | 亚洲精品乱码久久久久久蜜桃图片 | 国产高潮在线 | 国产一区二区三区免费看 | 日韩美女三级 | 国产大奶在线观看 | 精品国产黄色 | av色播| 日韩中文字幕免费 | 日韩欧美一区二区三区免费观看 | 色欲AV无码精品一区二区久久 | 国产激情自拍视频 | 久久精品国内 | 欧产日产国产精品98 | 久久夜色av | 国产精选第一页 | jizz性欧美15 | 亚洲麻豆av | 久9精品 | www.国产.com | 朝桐光在线视频 | 北条麻妃一区二区三区在线观看 | www.黄色在线观看 | 亚洲91久久 | 成人一区二区在线 | 网址你懂的在线 | 综合天堂av久久久久久久 | 精品国语对白 | 欧美巨乳在线 | 成人免费福利视频 | 18禁网站免费无遮挡无码中文 | 3d动漫精品啪啪一区二区三区免费 | 亚洲精品乱 | 亚洲精品人妻av | 理论片午午伦夜理片影院99 | 91色视频在线观看 | 亚洲天堂自拍 | 欧美xxxxx性| 影音先锋国产在线 | 三上悠亚人妻中文字幕在线 | 国内视频一区二区三区 | 女裸全身无奶罩内裤内衣内裤 | 佐佐木明希av在线 | 麻豆国产一区二区三区四区 | www插插插无码免费视频网站 | 美女网站视频在线观看 | jizz高潮| 久久久国产精品久久久 | 亚洲视频二区 | 又黄又爽视频 | 国产在线精品自拍 | 性一交一乱一伧老太 | 中国黄色一级片 | 亚洲经典一区二区三区四区 | 久草五月 | 成人美女在线观看 | 日韩一二三四区 | 超碰97国产| 天堂一区在线 | 欧美老肥妇做.爰bbww视频 | 亚洲自拍偷拍精品视频 | 国产精品免费精品一区 | 欧美激情一区 | 成熟女人毛片www免费版在线 | 夜夜骑狠狠干 | 在线看片福利 | 日韩一区二区三区在线观看 | 在线看a级片 | av免费网 | 国产人久久人人人人爽 | 女同激情久久av久久 | 在线观看一二三区 | 日韩欧美少妇 | 性色av蜜臀av浪潮av老女人 | 人人澡人人看 | 国产一区视频观看 | 国产二区电影 | 日xxxx| 国产中文网 | 欧美精品在欧美一区二区少妇 | 国产精品亚洲综合 | 永久免费av无码网站性色av | 朝桐光一区二区三区 | 性――交――性――乱 | 中文字幕25页 | proumb性欧美在线观看 | 欧美视频中文字幕 | 精品国产精品三级精品av网址 | 国产精品偷伦视频免费观看了 | av动漫网 | 免费黄色看片 | 亚洲片在线观看 | 风流少妇按摩来高潮 | 亚洲香蕉视频 | 亚洲成av人片在线观看无码 | 3d动漫精品啪啪一区二区下载 |