为什么要在 OSI 模型的应用层实现代理?

网络工程 网络 代理人 http-代理
2021-07-19 00:04:54

为什么所有的代理服务器都实现在 OSI 模型的应用层,而不是网络层?是否可以在网络级别实现代理服务器?比如在网关服务器上?

公司代理几乎总是用于在离开本地网络之前通过服务器路由所有外部流量。

我的理解是,从理论上讲,这应该在网络级别而不是应用程序级别上处理。实际上,在应用程序级别配置代理设置是有问题的:

  • 代理设置不是特定于网络的。
  • 网络连接握手(即 DHCP 握手)期间不提供代理设置
  • 代理设置往往会持续存在。当代理服务器不再可访问时,这会导致延迟或阻止连接(例如,客户端正在连接到不同网络上的 Internet)

我很欣赏在应用程序级别代理的有效用例。但是,我不禁认为代理的最常见用途是该技术的不良应用。

2个回答

我的理解是,从理论上讲,这应该在网络级别而不是应用程序级别上处理。

原谅我,但这是错误的。在网络层(或 TCP/IP 模型中的网络层),没有逻辑连接、没有会话、没有对话,只有单独的数据包。没有将一个数据包与另一个数据包相关联或将接收到的数据包与之前发送的数据包相关联的机制。简而言之,代理需要维护状态,而网络层则没有。

您认为代理有点像黑客是正确的,但网络中的许多事情也是如此。在网络的早期发展起来的模型和理论并没有预料到当地球上的每个人都在观看有趣的猫视频和张贴他们早餐的照片时遇到的许多实际问题。

这实际上取决于您所谈论的代理类型。

最常见的类型(也是您所指的类型)是 HTTP 代理。

HTTP 是一种应用协议,因此 HTTP 代理属于应用层。

Internet 层不关心传输的协议,因此它无法区分 HTTP 请求或其他请求。

在 Internet 层实现 HTTP 代理意味着该层必须检查数据包的内容,这首先违反了层的原则。
这实际上是由透明代理和高级防火墙完成的,但这并没有改变这是一个被处理的应用层协议的事实。

另外你的前提是不准确的。
大多数时候代理设置网络特定的。
计算机级别的固定代理设置仅用于不应该更改网络连接的固定计算机或笔记本电脑,因为您只能在访问 Internet 之前(通过 VPN)连接到公司网络。

通常使用自动代理配置,也可以使用 DHCP 来提供代理设置,Windows 10 在连接级别处理代理设置。

另请注意,OSI 模型只是一个理论模型,并未在现实生活中使用。在实践中,我们使用 TCP/IP 模型。