但在谭恩伯姆的《计算机网络》中,HTTP被认为是在OSI模型的应用层中。
还有一些人说HTTP没有会话的概念。这是否意味着HTTP不能在会话层中?
那么HTTP位于会话层吗?谢谢。
更新:对于HTTP/2,在OSI模型中处于哪个层?
HTTP在OSI模型中属于哪一层?
它属于应用层。请参考RFC 7230中的以下引用语,这是目前定义HTTP/1.1协议的文档之一:
超文本传输协议(HTTP)是一种无状态的应用程序级请求/响应协议,使用可扩展的语义和自描述消息有效载荷,为与基于网络的超文本信息系统进行灵活交互。
HTTP是一种无状态的请求/响应协议,通过在可靠的传输或会话层“连接”上交换消息来运行。
还有人说HTTP没有会话的概念。这是否意味着HTTP不能在会话层中?
如前面从RFC 7230中引用的,HTTP协议是无状态的,客户端到服务器的每个请求都应包含所有必要的信息,而不利用服务器上存储的任何上下文。
RFC 6265 定义了一些 HTTP 中的状态管理机制,如 cookies,允许服务器端进行会话管理(但并没有使 HTTP 具有任何状态)。
HTTP 中的“会话”概念与 OSI 模型中的“会话”概念不同。无论如何,HTTP 是应用层协议。
OSI(开放系统互连)模型是由国际标准化组织创建的概念模型,它使用标准协议使不同通信系统能够相互通信。
它为不同的计算机系统提供了一个标准,以便它们能够相互通信,并可视为计算机网络的通用语言。它基于将通信系统分成七个抽象层的概念,每个层都堆叠在上一个层之上。
下图来自 Cloudflare 很好地说明了 OSI 模型:
应用层是唯一直接与用户数据交互的层。因此,像网络浏览器和电子邮件客户端这样的软件应用程序依赖于应用层来启动通信。
但应明确的是,客户端软件应用程序不是应用层的一部分:相反,应用层负责协议(如HTTP和SMTP)和数据操作,这些软件应用程序依赖于它们来向用户呈现有意义的数据。
虽然OSI模型是一种广泛适用的通用网络系统参考框架,但需要提到的是,现代互联网并不严格遵循OSI模型。
现代互联网更接近于更简单的Internet协议套件,通常称为TCP/IP,因为该套件中的基本协议是TCP(传输控制协议)和IP( Internet协议)。
下图说明了OSI模型和TCP/IP模型之间的关系:
更新:已添加此部分,以应对由noɥʇʎԀʎzɐɹƆ发起的赏金要求,请求使用HTTP/2详细信息更新此答案。
尽管定义了HTTP/1.1协议的文档中进行了引用,但以上所有内容同样适用于HTTP/2。请参考RFC 7540中的以下引用,该文件定义了HTTP/2协议:
HTTP/2连接是在TCP连接顶部运行的应用层协议。客户端是TCP连接的发起者。
HTTP位于Internet协议套件模型的应用层和OSI模型的会话层。OSI模型的会话层负责创建和管理会话,并是第一个传递数据的层。
HTTP可以重定向会话,重复使用它们并保持持久连接。