1、建立TCP連接
在 HTTP 工作開始之前粒氧,Web 瀏覽器首先要通過網(wǎng)絡(luò)與 Web 服務(wù)器建立連接僧界,該連接是通過TCP來完成的,該協(xié)議與 IP 協(xié)議共同構(gòu)建 Internet妨猩,即著名的 TCP/IP 協(xié)議,因此 Internet 又被稱作是TCP/IP網(wǎng)絡(luò)秽褒。HTTP是比TCP更高層次的應(yīng)用層協(xié)議壶硅,根據(jù)規(guī)則,只有低層協(xié)議進行連接后才能進行更高層協(xié)議的連接销斟,一般TCP連接的端口號是80森瘪。建立TCP連接需要找到連接主機,所以需要先解析域名得到IP地址再找到主機進行3次握手進行TCP連接票堵。
2扼睬、Web瀏覽器向Web服務(wù)器發(fā)送請求命令
一旦建立了TCP連接,Web瀏覽器就會項Web服務(wù)器發(fā)送請求命令。例如:GET/hello/index.jsp HTTP1.1窗宇。瀏覽器發(fā)送其請求命令后措伐,還要以頭信息的形式向Web服務(wù)器發(fā)送一些別的信息(例:Accept, User-Agent等),之后瀏覽器發(fā)送了一空白行來通知服務(wù)器军俊,它已經(jīng)結(jié)束了該頭信息的發(fā)送侥加。
3、Web服務(wù)器應(yīng)答
客戶機向服務(wù)器發(fā)出請求后粪躬,服務(wù)器會對客戶機進行應(yīng)答担败,應(yīng)答內(nèi)容包括:
協(xié)議的版本號和應(yīng)答狀態(tài)碼 :HTTP/1.1 200 OK,響應(yīng)頭信息來記錄服務(wù)器自己的數(shù)據(jù)镰官,被請求的文檔內(nèi)容提前。最后發(fā)送一個空白行來表示頭信息的發(fā)送到此為結(jié)束,接著以Content-Type響應(yīng)頭信息所描述的格式發(fā)送用戶所請求的實際數(shù)據(jù)泳唠。
4狈网、Web服務(wù)器關(guān)閉TCP連接
一般情況下,一旦Web服務(wù)器向瀏覽器發(fā)送了請求的數(shù)據(jù)笨腥,它就要關(guān)閉TCP連接拓哺,但是如果瀏覽器或者服務(wù)器在其頭信息加入了這行碼:Connection:keep-alive
TCP連接在發(fā)送后將仍然保持打開狀態(tài),于是脖母,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求士鸥。保持連接節(jié)省了為每個請求建立新連接所需的時間,還節(jié)約了網(wǎng)絡(luò)帶寬谆级。
5础淤、瀏覽器接受到服務(wù)器響應(yīng)的數(shù)據(jù)
瀏覽器接受服務(wù)器應(yīng)答回來的 html 代碼和css,和js代碼再進行頁面的渲染或者接受到應(yīng)答的文件進行保存等操作
總結(jié)
瀏覽器發(fā)起請求-> 解析域名得到ip進行TCP連接 ->瀏覽器發(fā)送HTTP請求和頭信息發(fā)送->服務(wù)器對瀏覽器進行應(yīng)答哨苛,響應(yīng)頭信息和瀏覽器所需的內(nèi)容-> 關(guān)閉TCP連接或保持-> 瀏覽器得到數(shù)據(jù)數(shù)據(jù)進行操作