Http協議屬於ISO7層模型中的應用層,TCP協議屬於IOS7層模型中的傳輸層,因此Http是比TCP更高層的協議。本文將採用wireshark工具對Http請求作抓包分析來講明Http的3次握手和4次揮手。html
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% try { Thread.sleep(10*1000);//睡眠10秒鐘 } catch (InterruptedException e) { e.printStackTrace(); } out.print("this is my gg jsp"); %> </body> </html>
部署應用,並用nginx作反向代理。java
訪問頁面:http://47.105.110.244/httptest/gg.jsp,並用wireshark抓包,如圖所示:nginx
當咱們在nginx中配置服務器
keepalive_timeout 0;
關閉了http的長鏈接,Http請求一完成就會關閉鏈接,因爲咱們在服務器端故意sleep了10秒,當咱們一請求url時,在服務器端用命令行:jsp
netstat -natp|grep -i "80"|grep '183.206.27.116'
顯示客戶端ip:183.206.27.116的19945端口鏈接到了服務器的80端口上,狀態爲ESTABLISHED工具
當http請求完成以後,再經過上述命令去統計,沒有80端口的任何服務信息了。this
keepalive_timeout 0;
wireshark抓包信息以下:url
當http請求完成以後,用:spa
netstat -natp|grep -i "80"|grep '183.206.27.116'
統計出來的信息以下:命令行
當http請求完成以後,http鏈接不會立馬關閉,此時進行的狀態是TIME_WAIT。當10秒事後,沒有複用此http鏈接,此鏈接纔會真正的關閉。