![从技术上讲,Windows API(WinSock)是否属于 OSI 模型中的表示层的一部分?](https://linux22.com/image/1564331/%E4%BB%8E%E6%8A%80%E6%9C%AF%E4%B8%8A%E8%AE%B2%EF%BC%8CWindows%20API%EF%BC%88WinSock%EF%BC%89%E6%98%AF%E5%90%A6%E5%B1%9E%E4%BA%8E%20OSI%20%E6%A8%A1%E5%9E%8B%E4%B8%AD%E7%9A%84%E8%A1%A8%E7%A4%BA%E5%B1%82%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%EF%BC%9F.png)
摘自维基百科上的“Windows API”:https://en.wikipedia.org/wiki/Windows_API
任何能够处理(明确定义的)低级数据结构以及规定的调用和回调调用约定的编程语言编译器或汇编器都可以使用[Windows] API。
摘自维基百科的“表示层”:https://en.wikipedia.org/wiki/Presentation_layer
表示层是应用程序员考虑数据结构和表示的最低层,而不是简单地在主机之间以数据报或数据包的形式发送数据。其理念是,应用层应该能够指向要移动的数据,而表示层将处理其余部分。
从技术上讲,Windows API(特别是 WinSock 组件)是否是 OSI 模型中表示层的一部分,或者表示层是否是低于 Windows API 的级别?感谢任何能帮我澄清这个问题的人。
答案1
不存在“Windows API”这样的东西,因此无法直接回答您的问题。
通常所说的“Windows API”是指 Microsoft 提供的所有 API,这些 API 存在于特定版本的 Windows 中。
其中一些 API 非常通用,几乎存在于每个版本的 Windows 中,而另一些 API 仅存在于某些版本中。
因此,“Windows API”的确切构成并不十分明确。这是一个非常模糊的术语。
进一步关注您关于与 OSI 模型交互的问题。Windows 网络主要关注 TCP/IP 模型,并(大致)遵循简化的 OSI 模型(4 层)。
在 Windows 环境中,7 层模型的各层无法明确隔离,并且各种 Windows 子系统和 API 在许多地方跨越了 OSI 层之间的边界。
例如,Windows 中有 API 接口用于在单个以太网包级别与 NIC 驱动程序进行通信。这并不意味着所有 Windows API 都存在于网络层。
事实上,对于大多数现代操作系统来说,情况都是如此。在实际操作系统中,严格遵守 OSI 层是非常困难的,尤其是当您想同时实现良好的网络性能时。
正如其他人在评论中提到的那样:你的问题本身就太宽泛了。如果你对 Windows 上的特定 API 感兴趣,那么这个问题可能可以得到解答。
答案2
Windows API 可以跨越 OSI 模型的多个层,这取决于您如何看待它,但可以肯定地说,Windows API 的整个范围一般来说太过笼统,不适合在此上下文中讨论。在某些方面,它围绕会话层展开,着眼于 API 本身,而不是更深层次的内容。
在国际标准化组织开放系统互连 (ISO/OSI) 模型中,Winsock 在会话层接口和传输层之间运行。Winsock 是应用程序和传输协议之间的接口,充当数据 I/O 的管道。下图显示了 Winsock 与 ISO/OSI 模型中其他 Windows CE 通信协议的关系。1