OSI 模型中的 HTTP 在哪一层?
Posted
技术标签:
【中文标题】OSI 模型中的 HTTP 在哪一层?【英文标题】:In which layer is HTTP in the OSI model? 【发布时间】:2016-11-30 11:48:17 【问题描述】:有人说HTTP在OSI模型中的会话层。
但在 Tanenbaum 的计算机网络中,据说 HTTP 位于 OSI 模型中的应用层。
也有人说HTTP没有会话的概念。是不是说HTTP不能在会话层?
那么 HTTP 在会话层中吗?谢谢。
更新:对于 HTTP/2,OSI 模型中的层是什么?
【问题讨论】:
仅仅因为两个规范都使用了“会话”这个词,并不意味着会话在两者中的含义相同。这是同义词。 HTTP 位于 Internet 协议套件模型的应用层和 OSI 模型的会话层。 OSI 模型的会话层负责创建和管理会话,是传递数据的第一层。 html 在表示层中。 【参考方案1】:在 OSI 模型中 HTTP 在哪一层?
它位于应用层。请参阅RFC 7230 中的以下引用,这是当前定义 HTTP/1.1 协议的文档之一:
超文本传输协议 (HTTP) 是一种无状态的应用程序级请求/响应协议,它使用可扩展语义和自描述消息有效负载与基于网络的超文本信息系统进行灵活交互。
HTTP 是一种无状态的请求/响应协议,它通过在可靠的传输层或会话层“连接”上交换消息来运行。
也有人说HTTP没有会话的概念。是不是说HTTP不能在会话层?
正如前面在RFC 7230 的引用中提到的,HTTP 协议是无状态,其中从客户端到服务器的每个请求(应该)包含理解请求所需的所有信息,而不是利用服务器上存储的任何上下文。
RFC 6265 为 HTTP 中的状态管理定义了一些机制,例如 cookie,允许在服务器端进行会话管理(但它不会以任何方式使 HTTP 有状态)。
HTTP 中session 的概念与OSI 模型中session 的概念不同。无论如何,HTTP 是一个应用层协议。
OSI 模型
OSI(开放系统互连)模型是由国际标准化组织创建的概念模型,它使不同的通信系统能够使用标准协议进行通信。
它为不同的计算机系统提供了一个能够相互通信的标准,可以看作是计算机网络的通用语言。它基于将通信系统拆分为七个抽象层的概念,每一层都堆叠在最后一层之上。
下图borrowed from Cloudflare很好地说明了OSI模型是什么样的:
应用层是唯一直接与用户数据交互的层。因此,Web 浏览器和电子邮件客户端等软件应用程序依赖于应用程序层来发起通信。
但应该明确的是,客户端软件应用程序不是应用程序层的一部分:而是应用程序层负责协议(例如 HTTP 和 SMTP)和软件的数据操作依赖于向用户呈现有意义的数据。
OSI 模型与 TCP/IP 模型
虽然 OSI 模型是通用网络系统的综合参考框架,但需要指出的是,现代 Internet 并未严格遵循 OSI 模型。
现代 Internet 更接近于更简单的 Internet 协议套件,通常称为 TCP/IP,因为套件中的基础协议是 TCP (传输控制协议)和 IP(互联网协议)。
下图说明了 OSI 和 TCP/IP 模型如何相互关联:
更新:已添加此部分以解决 noɥʇʎԀʎzɐɹƆ 发起的赏金问题,他要求使用 HTTP/2 详细信息更新此答案。
尽管引用了定义 HTTP/1.1 协议的文档,但以上所有内容也适用于 HTTP/2。请参考RFC 7540 中的以下引用,该文档定义了 HTTP/2 协议:
HTTP/2 连接是在 TCP 连接之上运行的应用层协议。客户端是 TCP 连接发起者。
【讨论】:
我想强调 OSI 模型是一个参考模型。它不是一个可基于的标准,特别是对于第 5 层到第 7 层。HTTP 也可以被视为表示层协议。它本身并不做“人机交互”,而是html代理使用HTTP来传输数据。 那么,认为HTTP同时负责应用程序和表示层是否正确?编码和加密(https)是表示层的一部分,对吧?并且这些被配置为 http/s 协议的一部分 @MikelSanVicente 不是。 TPP/IP 模型中不存在表示层。 对,但是如果我们谈论的是 OSI 模型呢?从概念上讲,两者兼而有之? @MikelSanVicente 在 OSI 模型中,表示层用于压缩和加密协议。适合这一层的一些协议是 SSL(安全套接字层)和 TLS(传输层安全)。 HTTP/HTTPS 位于它们之上,仍然在表示层上。【参考方案2】:超文本传输协议 (HTTP),是 Web 的应用层协议, 是 Web 的核心。它在 [RFC 1945] 和 [RFC 2616] 中定义。
【讨论】:
那些在近五年前被 RFC 7230 虽然 7235 淘汰了 超文本传输协议 (HTTP) 是一种无状态的应用层协议 这不会使您的参考文献过时。【参考方案3】:HTTP 位于Internet 协议套件模型的应用层和OSI 模型的会话层。 OSI 模型的 Session 层负责创建和管理会话,是传递数据的第一层。
HTTP 可以重定向会话、重用它们并拥有持久连接。
【讨论】:
以上是关于OSI 模型中的 HTTP 在哪一层?的主要内容,如果未能解决你的问题,请参考以下文章