HTTP在OSI模型的哪一层? 答案:HTTP位于OSI模型的应用层。

36
有些人认为HTTP在OSI模型的会话层中。
但在谭恩伯姆的《计算机网络》中,HTTP被认为是在OSI模型的应用层中。
还有一些人说HTTP没有会话的概念。这是否意味着HTTP不能在会话层中?
那么HTTP位于会话层吗?谢谢。
更新:对于HTTP/2,在OSI模型中处于哪个层?

1
仅仅因为两个规范都使用了“会话”这个词,并不意味着在两者中,“会话”的含义是相同的。它只是一个同义词。 - Marc B
1
HTTP位于Internet协议套件模型的应用层和OSI模型的会话层。OSI模型的会话层负责创建和管理会话,并是第一个传递数据的层。 HTML位于表示层。 - Nick Abbot
3个回答

68

HTTP在OSI模型中属于哪一层?

它属于应用层。请参考RFC 7230中的以下引用语,这是目前定义HTTP/1.1协议的文档之一:

超文本传输​​协议(HTTP)是一种无状态的应用程序级请求/响应协议,使用可扩展的语义和自描述消息有效载荷,为与基于网络的超文本信息系统进行灵活交互。

HTTP是一种无状态的请求/响应协议,通过在可靠的传输或会话层“连接”上交换消息来运行。


还有人说HTTP没有会话的概念。这是否意味着HTTP不能在会话层中?

如前面从RFC 7230中引用的,HTTP协议是无状态的,客户端到服务器的每个请求都应包含所有必要的信息,而不利用服务器上存储的任何上下文。

RFC 6265 定义了一些 HTTP 中的状态管理机制,如 cookies,允许服务器端进行会话管理(但并没有使 HTTP 具有任何状态)。

HTTP 中的“会话”概念与 OSI 模型中的“会话”概念不同。无论如何,HTTP 是应用层协议

OSI 模型

OSI(开放系统互连)模型是由国际标准化组织创建的概念模型,它使用标准协议使不同通信系统能够相互通信。

它为不同的计算机系统提供了一个标准,以便它们能够相互通信,并可视为计算机网络的通用语言。它基于将通信系统分成七个抽象层的概念,每个层都堆叠在上一个层之上。

下图来自 Cloudflare 很好地说明了 OSI 模型:

OSI 模型

应用层是唯一直接与用户数据交互的层。因此,像网络浏览器和电子邮件客户端这样的软件应用程序依赖于应用层来启动通信。

但应明确的是,客户端软件应用程序不是应用层的一部分:相反,应用层负责协议(如HTTP和SMTP)和数据操作,这些软件应用程序依赖于它们来向用户呈现有意义的数据。

OSI模型与TCP/IP模型

虽然OSI模型是一种广泛适用的通用网络系统参考框架,但需要提到的是,现代互联网并不严格遵循OSI模型。

现代互联网更接近于更简单的Internet协议套件,通常称为TCP/IP,因为该套件中的基本协议是TCP(传输控制协议)和IP( Internet协议)。

下图说明了OSI模型和TCP/IP模型之间的关系:

OSI模型与TCP/IP模型


更新:已添加此部分,以应对由noɥʇʎԀʎzɐɹƆ发起的赏金要求,请求使用HTTP/2详细信息更新此答案。

尽管定义了HTTP/1.1协议的文档中进行了引用,但以上所有内容同样适用于HTTP/2。请参考RFC 7540中的以下引用,该文件定义了HTTP/2协议:

HTTP/2连接是在TCP连接顶部运行的应用层协议。客户端是TCP连接的发起者。


6
我想强调OSI模型是一个参考模型,不是标准,特别是对于第5到7层。HTTP也可以被视为表示层协议。它本身并不执行“人机交互”,但是HTML代理使用HTTP来传输数据。 - inetphantom
那么,考虑到HTTP负责应用程序层和表示层,这样说是否正确?编码和加密(https)是表示层的一部分,对吗?并且这些是作为http/s协议的一部分进行配置的。 - Mikel San Vicente
@MikelSanVicente 不完全是。在TPP/IP模型中,不存在表示层。 - cassiomolin
1
对,但如果我们谈论的是OSI模型呢?从概念上讲,它会是两者吗? - Mikel San Vicente
1
在OSI模型中,表示层用于压缩和加密协议。适合该层的一些协议包括SSL(安全套接字层)和TLS(传输层安全)。HTTP / HTTPS位于它们之上,仍然在表示层。@MikelSanVicente - cassiomolin
显示剩余5条评论

-2
超文本传输协议(HTTP)是Web的应用层协议,是Web的核心。它在[RFC 1945]和[RFC 2616]中定义。

4
RFC7230到RFC7235已经使其过时了差不多半个十年。 - Quentin
超文本传输协议(HTTP)是一种无状态的应用层协议,写入 RFC 7230。 - Aman Gupta
2
这并不会使你的引用变得更加过时。 - Quentin

-3

HTTP位于Internet协议套件模型的应用层和OSI模型的会话层。OSI模型的会话层负责创建和管理会话,并是第一个传递数据的层。

HTTP可以重定向会话,重复使用它们并保持持久连接。


1
HTTP会话与OSI的会话层不同。 - MrMesees
如果你阅读定义,你会发现它们做的是同样的事情。 - Nick Abbot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接