日韩性视频-久久久蜜桃-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 软件原理简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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