有人说 HTTP 在 OSI 模型中的会话层。
但是在 Tanenbaum 的计算机网络中,HTTP 据说是在 OSI 模型中的应用层。
也有人说HTTP没有会话的概念。是不是说HTTP不能在会话层?
会话层中的 HTTP 也是如此吗?谢谢。
更新:对于 HTTP/2,OSI 模型中的层是什么?
OSI 模型中的 HTTP 在哪一层?
它在应用层。请参阅RFC 7230中的以下引用,这是当前定义 HTTP/1.1 协议的文档之一:
超文本传输协议 (HTTP) 是一种无状态的应用程序级请求/响应协议,它使用可扩展语义和自描述消息有效负载与基于网络的超文本信息系统进行灵活交互。
HTTP 是一种无状态的请求/响应协议,它通过在可靠的传输层或会话层“连接”上交换消息来运行。
也有人说HTTP没有会话的概念。是不是说HTTP不能在会话层?
正如前面在RFC 7230的引用中提到的,HTTP 协议是无状态的,从客户端到服务器的每个请求(应该)包含理解请求所需的所有信息,而不利用服务器上存储的任何上下文。
RFC 6265为 HTTP 中的状态管理定义了一些机制,例如 cookie,允许在服务器端进行会话管理(但它不会以任何方式使 HTTP 有状态)。
HTTP 中的会话概念与OSI模型中的会话概念不同。无论如何,HTTP 是一个应用层协议。
OSI(开放系统互连)模型是由国际标准化组织创建的概念模型,它使不同的通信系统能够使用标准协议进行通信。
它为不同的计算机系统提供了一个能够相互通信的标准,可以看作是计算机网络的通用语言。它基于将通信系统分成七个抽象层的概念,每个抽象层堆叠在最后一层。
下面从 Cloudflare 借来的图片很好地说明了 OSI 模型的样子:
应用层是唯一直接与用户数据交互的层。因此,Web 浏览器和电子邮件客户端等软件应用程序依赖于应用程序层来启动通信。
但应该明确的是,客户端软件应用程序不是应用程序层的一部分:而是应用程序层负责协议(例如 HTTP 和 SMTP)和软件依赖的数据操作,以向用户提供有意义的数据。
虽然 OSI 模型是通用网络系统的综合参考框架,但值得一提的是,现代 Internet 并未严格遵循 OSI 模型。
现代互联网更接近于更简单的互联网协议套件,通常称为TCP/IP,因为套件中的基础协议是TCP(传输控制协议)和IP(互联网协议)。
下图说明了 OSI 和 TCP/IP 模型如何相互关联:
更新:已添加此部分以解决noɥʇʎԀʎzɐɹƆ 发起的赏金问题,他要求使用 HTTP/2 详细信息更新此答案。
尽管引用了定义 HTTP/1.1 协议的文档,但以上所有内容也适用于 HTTP/2。请参阅RFC 7540中的以下引用,该文档定义了 HTTP/2 协议:
HTTP/2 连接是在 TCP 连接之上运行的应用层协议。客户端是 TCP 连接发起者。
超文本传输协议 (HTTP) 是Web 的应用层协议,是 Web 的核心。它在[RFC 1945] 和 [RFC 2616]中定义。
HTTP 位于Internet 协议套件模型的应用层和 OSI 模型的会话层。OSI 模型的会话层负责创建和管理会话,是传递数据的第一层。
HTTP 可以重定向会话、重用它们并具有持久连接。