tomcat一次完整請求流程
阿新 • • 發佈:2019-01-02
1 首先通過域名查詢IP地址
順序是從 瀏覽器快取-主機快取-hosts-路由快取-DNS伺服器-根域名伺服器,得到域名的真實IP地址
2 開始TCP/IP 三次握手
主要資料包括 (1)序號:Seq序號,佔32位,用來標識從TCP源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記。(2)確認序號:Ack序號,佔32位,只有ACK標誌位為1時,確認序號欄位才有效,Ack=Seq+1。
(3)標誌位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
(A)URG:緊急指標(urgent pointer)有效。
(B)ACK:確認序號有效。
(C)PSH:接收方應該儘快將這個報文交給應用層。
(D)RST:重置連線。
(E)SYN:發起一個新連線。
(F)FIN:釋放一個連線。
標記為ACK
3 tomcat
1) 請求被髮送到本機埠8080,被在那裡偵聽的Coyote HTTP/1.1 Connector獲得
2) Connector把該請求交給它所在的Service的Engine來處理,並等待來自Engine的迴應
3) Engine獲得請求localhost/專案/頁面.jsp,匹配它所擁有的所有虛擬主機Host
5) localhost Host獲得請求/專案/頁面.jsp,匹配它所擁有的所有Context
6) Host匹配到路徑為/專案的Context(如果匹配不到就把該請求交給路徑名為””的Context去處理)
7) path=”/專案”的Context獲得請求/頁面.jsp,在它的mapping table中尋找對應的servlet
8) Context匹配到URL PATTERN為*.jsp的servlet,對應於JspServlet類
9) 構造HttpServletRequest物件和HttpServletResponse物件,作為引數呼叫JspServlet的doGet或doPost方法
10)Context把執行完了之後的HttpServletResponse物件返回給Host
11)Host把HttpServletResponse物件返回給Engine
12)Engine把HttpServletResponse物件返回給Connector
13)Connector把HttpServletResponse物件返回給客戶browser