有人说HTTP在OSI模型中的会话层中。
但是在Tanenbaum的计算机网络中,HTTP据说位于OSI模型的应用程序层中。
也有人说HTTP没有会话的概念。这是否意味着HTTP不能在会话层中?
会话层中的HTTP也是如此吗?谢谢。
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模型它为不同的计算机系统之间相互通信提供了一种标准,并且可以看作是计算机网络的通用语言。它基于将通信系统分为七个抽象层的概念,每个抽象层堆叠在最后一层。
以下图片borrowed from Cloudflare很好地说明了OSI模型是什么样的:
应用程序层是唯一与用户数据直接交互的层。因此,诸如Web浏览器和电子邮件客户端之类的软件应用程序都依赖于应用程序层来发起通信。
但应明确指出,客户端软件应用程序
不属于应用程序层:而是由应用程序层负责软件所依赖的协议(例如HTTP和SMTP)和数据操作对用户有意义的数据。
OSI模型与TCP / IP模型严格地>>遵循OSI模型。
现代Internet更紧密地遵循更简单的Internet协议套件
,它通常称为TCP / IP,因为该套件中的基本协议是TCP(传输控制协议)和IP(Internet协议)。下图说明了OSI和TCP / IP模型如何相互关联:Web的应用程序层协议