一.web服務機制

web服務機制html

這裏寫圖片描述

咱們先跟着**(Web服務器工做原理整體描述01)這張圖,將一次Web服務的工做流程過一遍,咱們假設以瀏覽器做爲客戶端
(1) 用戶作出了一個操做,能夠是填寫網址敲回車,能夠是點擊連接,能夠是點擊按鍵等,接着瀏覽器獲取了該事件。
(2) 瀏覽器與對端服務程序創建TCP鏈接。
(3) 瀏覽器將用戶的事件按照HTTP協議格式**打包成一個數據包,其實質就是在待發送緩衝區中的一段有着HTTP協議格式的字節流。
(4) 瀏覽器確認對端可寫,並將該數據包推入Internet,該包通過網絡最終遞交到對端服務程序。
(5) 服務端程序拿到該數據包後,一樣以HTTP協議格式解包,而後解析客戶端的意圖。
(6) 得知客戶端意圖後,進行分類處理,或是提供某種文件、或是處理數據。
(7) 將結果裝入緩衝區,或是HTML文件、或是一張圖片等。
(8) 按照HTTP協議格式將(7)中的數據打包
(9) 服務器確認對端可寫,並將該數據包推入Internet,該包通過網絡最終遞交到客戶端。
(10) 瀏覽器拿到包後,以HTTP協議格式解包,而後解析數據,假設是HTML文件。
(11) 瀏覽器將HTML文件展現在頁面
以上爲Web服務器工做基本原理。其實不難發現,這僅僅只是一個簡單的網絡通訊。咱們應該深信,做爲一個服務器,其根本的工做無非有三個java

接收數據 2. 發送數據 3. 數據處理
而Web服務器的本質就是 接收數據 ⇒ HTTP解析 ⇒ 邏輯處理 ⇒ HTTP封包 ⇒ 發送數據
高級的服務器無非就是將這三個部分更加細緻的設計了。web

一.通訊協議apache

1.HTTP/HTTPS 端口號80 / 443瀏覽器

HTTPS就是在tcp層上增長一個ssl/tls層tomcat

2.HTTP請求響應模型服務器

3.解析HTTP報文:請求行,請求頭部,請求體,響應行,響應頭部,響應體網絡

二.套接字通訊多線程

socket是位於應用層和傳輸層之間的中間抽象層,應用層經過調用這些接口來發送和接收數據併發

2.1單播通訊:一對一

2.2組播通訊:一對多

組播通訊主要在於維護主機與路由器以前的關係,負責組成員的加入和退出等。

任意一端向路由器,交換機發送消息,由路由器來轉發消息到每一個節點。

具備步驟:指定組播地址和端口,加入組播組,全部節點都在一個組,每一個節點都有發送和接收組內成員信息的功能。

2.3廣播通訊

廣播通訊在於向全部鏈接路由器的主機發送信息,而再也不關注你是否想要,不用維護組內關係。

三.服務器模型

1.單線程阻塞io:只有一個線程處理請求,阻塞io,服務器在讀寫數據時是阻塞的。

2.多線程阻塞io:支持併發響應,處理能力獲得提升,可是對服務器資源消耗大,線程上下文切換成本高。

3.單線程非阻塞io:在調用讀寫接口後當即返回,不會阻塞

4.多線程非阻塞io:充分利用多核cpu,處理能力獲得很大提升。

 

四.Apache與Tomcat

Apache與Tomcat都是Apache開源組織開發的用於處理HTTP服務的項目,二者都是免費的,均可以作爲獨立的Web服務器運行。Apache是Web服務器而Tomcat是Java應用服務器。

Apache服務器 只處理 靜態HTML;tomcat服務器 靜態HTML 動態 JSP Servlet 都能處理。
通常是把 Apache服務器與tomcat服務器 搭配在一塊兒用。 Apache服務器負責處理全部 靜態的頁面/圖片等信息。Tomcat只處理動態的部分。

Apache:是C語言實現的,專門用來提供HTTP服務。

特性:簡單、速度快、性能穩定、可配置(代理)

一、主要用於解析靜態文本,併發性能高,側重於HTTP服務;

二、支持靜態頁(HTML),不支持動態請求如:CGI、Servlet/JSP、PHP、ASP等;

三、具備很強的可擴展性,能夠經過插件支持PHP,還能夠單向Apache鏈接Tomcat實現連通;

四、Apache是世界使用排名第一的Web服務器。

Tomcat:是Java開發的一個符合JavaEE的Servlet規範的JSP服務器(Servlet容器),是 Apache 的擴展。

特性:免費的Java應用服務器

一、主要用於解析JSP/Servlet,側重於Servlet引擎;

二、支持靜態頁,但效率沒有Apache高;支持Servlet、JSP請求;

三、Tomcat自己也內置了一個HTTP服務器用於支持靜態內容,能夠經過Tomcat的配置管理工具實現與Apache整合。

Apache + Tomcat:

二者整合後優勢:若是請求是靜態網頁則由Apache處理,並將結果返回;若是是動態請求,Apache會將解析工做轉發給Tomcat處理,Tomcat處理後將結果經過Apache返回。這樣能夠達到分工合做,實現負載遠衡,提升系統的性能。

apache是web服務器,tomcat是應用(java)服務器,它只是一個servlet容器,能夠認爲是apache的擴展,可是能夠獨立於apache運行。

換句話說,apache是一輛卡車,上面能夠裝一些東西如html等。可是不能裝水,要裝水必需要有容器(桶),而這個桶也能夠不放在卡車上。

 

 


參考:https://blog.csdn.net/qq_36359022/article/details/81666221
        http://m.blog.csdn.net/uniquewonderq/article/details/46428999

相關文章
相關標籤/搜索