介紹HTTP協議的傳輸過程


1.HTTP是面向事物的應用層協議,它使用TCP連接進行可靠傳輸,服務器默認監聽在80端口

2.服務流程

從協議執行過程來說,當瀏覽器要訪問www服務器時,首先要對服務器進行域名解析(DNS協議)。一旦建立獲得IP地址,瀏覽器要通過TCP三次握手和服務器建立連接[1]。每個服務器都有一個服務進程,它不斷監聽TCP端口號80,當監聽到瀏覽器請求后便和瀏覽器建立連接。TCP連接建立后,瀏覽器就向服務器發送某個HTTP請求。如localhost/test/index.jsp 。服務器收到請求后,將構建的服務頁面返回給瀏覽器,瀏覽器對信息進行解釋后,返回給客戶[2]。

【1】什么是TCP三次握手?四次揮手

TCP建立連接時需要進行TCP三次握手,釋放連接時需要TCP四次揮手。首先,客戶端需要發送請求建立數據包,其中SYN=1,假設包的數據字段序號seq=n,然后服務器需要發確認連接數據包,SYN=1(SYNb標志位置1),ACK=1,ack = n+1,數據字段起始序號seq假設m,最后,客戶端也發送確認連接數據包,ACK=1,ack = m+1,seq=n+1。

TCP釋放連接的四次揮手:客戶端主動發送請求釋放連接數據包:FIN=1,seq=u,服務器端發送確認釋放連接數據包:FIN = 1,seq = v,ack = u+1,此時,客戶端到服務器端的連接以經釋放,服務器端不在接受客戶端的數據,當服務器端不在給客戶端發送數據時,服務器端請求釋放數據包:FIN = 1,seq = w,ACK = 1,ack = u+1,客戶端發送確認釋放連接數據包:ACK = 1,ack = w+1,seq=u+1

【2】請求進入服務器端中的容器中是如何被處理的?

 

 

描述:

1、用戶點擊網頁內容,請求被發送到本機端口8080,被在那里監聽的Coyote HTTP/1.1 Connector獲得。 2、Connector把該請求交給它所在的Service的Engine來處理,並等待Engine的回應。 3、Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host。 4、(容器先解析請求的虛擬主機host,然后在主機中解析請求,匹配上下文)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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM