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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

tomcat原理详解和请求过程(涉及网卡、套接字等)

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat原理详解和请求过程(涉及网卡、套接字等) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是tomcat

? ? ? ? ? 想要了解tomcat 原理我們首先要了解tomcat是什么,有什么功能,在什么地方起作用?

一、網卡

? ? ? ? ?首先我們知道如果一臺計算機如果想要其他計算機交換數據的話,必須要走網卡的端口交換數據。網卡能夠把把物理電信號轉化成計算機能夠識別的數字信號。

網卡是一塊被設計用來允許計算機在計算機網絡上進行通訊的計算機硬件。由于其擁有MAC地址,因此屬于OSI模型的第2層。它使得用戶可以通過電纜或無線相互連接。每一個網卡都有一個被稱為MAC地址的獨一無二的48位串行號,它被寫在卡上的一塊ROM中。在網絡上的每一個計算機都必須擁有一個獨一無二的MAC地址。沒有任何兩塊被生產出來的網卡擁有同樣的地址。這是因為電氣電子工程師協會(IEEE)負責為網絡接口控制器(網卡)銷售商分配唯一的MAC地址。

?

網卡的三個功能

1、數據的封裝與解封

發送時將上一層傳遞來的數據加上首部和尾部,成為以太網的幀。接收時將以太網的幀剝去首部和尾部,然后送交上一層

2、鏈路管理

主要是通過CSMA/CD(Carrier Sense Multiple Access with Collision Detection ,帶沖突檢測的載波監聽多路訪問)協議來實現

3、數據編碼與譯碼

即曼徹斯特編碼與譯碼。其中曼徹斯特碼,又稱數字雙向碼、分相碼或相位編碼(PE),是一種常用的的二元碼線路編碼方式之一,被物理層使用來編碼一個同步位流的時鐘和數據。在通信技術中,用來表示所要發送比特 流中的數據與定時信號所結合起來的代碼。 常用在以太網通信,列車總線控制,工業總線等領域。

關于網卡端口需要注意的:

計算機如果想跟其他設備進行交互,必須通過端口。一臺計算機最多能開2的16次方個端口(約六萬多個);別看只有六萬多個,但并不會出現不夠使用的情況,因為端口如果開的開的多了,內存會首先撐不住,雖然在邏輯上有2的16次方個端口,但在物理上都是在一個地方。

任何兩個獨立的程序(一個進程)不能使用同一個端口,端口會被進程占用,線程之間也只能占用一個端口但是可以共享數據,進程之間不行。

二、什么是tomcat

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。

訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。

tomcat最初是由Sun的軟件架構師詹姆斯·鄧肯·戴維森開發的。是用java語言寫的,后來他幫助將其變為開源項目,并由Sun貢獻給Apache軟件基金會。

tomcat功能就是是請求分發,對請求進行分配,協調各個網站之間的請求。

socket套接字:

監聽端口,讀取數據,發送數據,是和網卡直接交互的。監聽,輪詢:每隔一段時間看一次,如果有數據,就取走;是通過while循環實現的;socket是一個抽象層,應用程序可以通過它發送或接收數據,可對其進行像對文件一樣的打開、讀寫和關閉等操作。socket會自動包裝網絡協議數據(頭尾標記),也會自動去掉識別協議的數據,提取主要數據。

先談一點個人理解,這樣大家看下面的流程就會變的So easy!

tomcat啟動時會掃描所有.class文件,遍歷是會拿到所以java文件的所有文件名和路徑,帶有WebServlet標記的會背挑出來,注解跟路徑會使用HASh map存儲。

當tomcat拿到一個請求時,會先通過socket套接字,去掉協議數據,提取主要數據,因為是請求都是字符串數據,每個字符串之間會通過換行符隔開,進行字符串處理后會把數據中的請求的URL地址提取出來。

tomcat根據數據中的請求的URL地址,利用java反射確定請求那個servlet,類信息跳出來帶有WebServlet的信息然后存在map結構里( 例如: map.put(“TestDomeServlet”,com.bdrjxy.TestDomeServlet?) )

tomcat

main{

socket.. //提取主要數據

拿到了網絡數據:字符串str,請求之間都是字符串,利用換行符隔開

HttpServletRequest request= 字符串處理函數(str);//字符串處理

HttpServletResponse response = ...? ? ?

DemoServlet ob =new DemoServlet();?

ob.doGet(request,response );//處理get中的請求

String url1=request.getHeader("Request URL");? ? //? 把請求中的URL提取出來

map.put(“TestDomeServlet”,com.bdrjxy.TestDomeServlet?)//把遍歷得到的類信息放到map結構中

map.put(“DomeServlet”,com.bdrjxy.DomeServlet?)

map.get(url1);//得到路徑

"com.bdrjxy.TestDomeServlet?"?--->?class---->newinstance //利用反射對class的類型?實例化

ss.invoke();//涉及代理

}

注意:當需要使用自己寫的框架時,必須將框架先在tomcat注冊才能在tomcat啟動時,同時要開始啟動時遍歷自己所寫方法,才能獲取自己所寫的注解信息

?

tomcat的執行流程:

一個比較詳細的tomcat的容器組件分析和執行流程,有興趣可以看下https://www.cnblogs.com/651434092qq/p/11063158.html

1.用戶在瀏覽器中輸入請求地址;

2.客戶端通過瀏覽器將請求地址發送給WEB容器;

3.WEB容器根據請求地址找到*.jsp文件;

4.將*.jsp文件轉換成*.java文件;

5.將*.java文件經過編譯成*.class文件;

6.服務器執行*.class文件并將結果反饋給瀏覽器。

當請求發生時的流程圖及過程:

1、用戶點擊網頁內容,請求被發送到本機端口8080,被在那里監聽的Coyote HTTP/1.1 Connector獲得。

2、Connector(連接器)把該請求交給它所在的Service的Engine來處理,并等待Engine的回應。

3、Engine(發動)獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host。

4、Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該 Engine的默認主機),

? ? ? 名為localhost的Host獲得請求/test/index.jsp,匹配它所擁有的所有的Context。

? ? ? Host匹配到路徑為/test的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理)。

5、path=“/test”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL PATTERN為*.jsp的Servlet,對應于JspServlet類。

6、構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet()或doPost().執行業務邏輯、數據存儲等程序。

7、Context把執行完之后的HttpServletResponse對象返回給Host。

8、Host把HttpServletResponse對象返回給Engine。

9、Engine把HttpServletResponse對象返回Connector。

10、Connector把HttpServletResponse對象返回給客戶Browser。

?

?

?

總結

以上是生活随笔為你收集整理的tomcat原理详解和请求过程(涉及网卡、套接字等)的全部內容,希望文章能夠幫你解決所遇到的問題。

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