鍍金池/ 問(wèn)答/Linux  HTML/ http 狀態(tài)碼在什么時(shí)候發(fā)送的

http 狀態(tài)碼在什么時(shí)候發(fā)送的

我已知曉的是http狀態(tài)碼是在服務(wù)器發(fā)送完數(shù)據(jù)后向用戶端發(fā)送的,
一次http請(qǐng)求,會(huì)先經(jīng)過(guò)三次握手(TCP),之后客戶端發(fā)送HTTP請(qǐng)求,服務(wù)器響應(yīng)請(qǐng)求(TCP),發(fā)送TCP分片,數(shù)據(jù)發(fā)送完時(shí),會(huì)發(fā)送一個(gè)200的狀態(tài)碼。
但是我今天用wireShark抓包時(shí)發(fā)現(xiàn):
狀態(tài)碼(如200)并不一定是在HTTP報(bào)文里發(fā)送,也有可能是在TCP報(bào)文中發(fā)送,而之后還會(huì)有一個(gè)不帶狀態(tài)碼的HTTP報(bào)文,
我想問(wèn)的問(wèn)題時(shí):為什么狀態(tài)碼有可能在TCP報(bào)文中,又有可能在HTTP報(bào)文中,并且在報(bào)文中的順序也不是固定的?
截圖如下:
圖片描述

圖片描述

回答
編輯回答
乖乖噠

一般來(lái)說(shuō),HTTP 協(xié)議是基于 TCP/IP 傳輸層協(xié)議之上的應(yīng)用層協(xié)議,它只能在 TCP 連接建立后才能進(jìn)行。

你在 wireshark 里看到既有 TCP, 也有 HTTP,這是 wireshark 的特性,它可以同時(shí)顯示多個(gè)不同層級(jí)的協(xié)議。
可以通過(guò)設(shè)置顯示過(guò)濾器來(lái)查看單個(gè)協(xié)議,例如 http 只顯示 HTTP 協(xié)議,同理 tcp 之顯示 TCP 協(xié)議。

2017年4月30日 13:45