介紹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。app

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+1jsp

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

 

 

描述:對象

一、用戶點擊網頁內容,請求被髮送到本機端口8080,被在那裏監聽的Coyote HTTP/1.1 Connector得到。 二、Connector把該請求交給它所在的Service的Engine來處理,並等待Engine的迴應。 三、Engine得到請求localhost/test/index.jsp,匹配全部的虛擬主機Host。 四、(容器先解析請求的虛擬主機host,而後在主機中解析請求,匹配上下文)engine匹配到名爲localhost的Host(即便匹配不到也把請求交給該Host處理,由於該Host被定義爲該Engine的默認主機),名爲localhost的Host得到請求/test/index.jsp,匹配它所擁有的全部的Context。Host匹配到路徑爲/test的Context(若是匹配不到就把該請求交給路徑名爲「 」的Context去處理)。 五、path=「/test」的Context得到請求/index.jsp,在它的mapping table中尋找出對應的Servlet。Context匹配到URL PATTERN爲*.jsp的Servlet,對應於JspServlet類。 六、構造HttpServletRequest對象和HttpServletResponse對象,做爲參數調用JspServlet的doGet()或doPost().執行業務邏輯、數據存儲等程序。 七、Context把執行完以後的HttpServletResponse對象返回給Host。 八、Host把HttpServletResponse對象返回給Engine。 九、Engine把HttpServletResponse對象返回Connector。 十、Connector把HttpServletResponse對象返回給客戶Browser。blog

相關文章
相關標籤/搜索