http 状态码在什么时候发送的

我已知晓的是http状态码是在服务器发送完数据后向用户端发送的,
一次http请求,会先经过三次握手(TCP),之后客户端发送HTTP请求,服务器响应请求(TCP),发送TCP分片,数据发送完时,会发送一个200的状态码。
但是我今天用wireShark抓包时发现:
状态码(如200)并不一定是在HTTP报文里发送,也有可能是在TCP报文中发送,而之后还会有一个不带状态码的HTTP报文,
我想问的问题时:为什么状态码有可能在TCP报文中,又有可能在HTTP报文中,并且在报文中的顺序也不是固定的?
截图如下:
图片描述

图片描述

阅读 3k
1 个回答

一般来说,HTTP 协议是基于 TCP/IP 传输层协议之上的应用层协议,它只能在 TCP 连接建立后才能进行。

你在 wireshark 里看到既有 TCP, 也有 HTTP,这是 wireshark 的特性,它可以同时显示多个不同层级的协议。
可以通过设置显示过滤器来查看单个协议,例如 http 只显示 HTTP 协议,同理 tcp 之显示 TCP 协议。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题