2

我编写了一个 iOS 应用程序,它使用 HTTP 在服务器和设备之间进行通信,过去的一个小问题已经成为需要解决的问题。具体来说,如何检查/验证消息完整性——数据是否在服务器和设备之间以某种方式损坏。最初的问题可能是编码问题,或者可能是设备和服务器之间的数据实际上被弄乱了(现场的 wi-fi 是……不幸的)。编码是我需要处理的一件事,但我还需要检查、测试和修复后面的问题。

我很快想出了一个基于 MD5 哈希的解决方案。好主意啊。但很明显,在我开始深入研究和编程之前,我应该花时间退后一步,问自己,“有人已经为我写过这个了吗?”

我将在库中查找问题,但让我印象深刻的是,将这种类型的代码放在网络堆栈中的某个地方似乎是一个显而易见的想法。在某个地方,不要太直率,这是可重复使用的,最好是相当低的水平。事实上,虽然我不知道是不是这样,但应该自动和透明地处理这似乎几乎是合乎逻辑的,不需要调用它。我试着用谷歌搜索这个主题,但是......我不知道我是否知道正确的关键字,因为我设法找到的通常是验证亚马逊短信、在线检查你的 AT&T 短信以及类似的无用垃圾,其中一半我发誓甚至没有涉及 HTTP 协议(​​也许 google 忽略了 HTTP 关键字,

那么:由 PHP 和 iOS 处理的 HTTP 协议(​​或 HTTPS)是否内置了任何类型的错误检查?我在浪费时间吗?

4

2 回答 2

3

回答中心问题 HTTP 是否有一些流量控制或完整性检查:

没有设计。

您需要在应用程序级别执行此操作 - 如果需要的话。在服务器和客户端之间的通信问题中,有 99.99% 是由“自制软件”引起的,而不是底层基础设施。剩下的 0.01% 不会被任何“完整性检查”发现,因为不再有任何连接。

于 2013-05-29T05:12:57.180 回答
1

它确实在网络堆栈中。对于 HTTP 的具体示例,它位于 TCP(传输层)、IP(仅限 v4)(链路层)和您的传输层中。虽然仍然有可能引入较低层之一没有检测到的错误(校验和没有检测到它,有故障的硬件,有故障的操作系统,等等),但它远低于应用程序逻辑中的错误。

于 2013-05-29T07:40:06.747 回答