Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux HTTP 1.1 Content-MD5冗余给定TCP/IP校验和?_Linux_Apache_Http_Networking_Tcp - Fatal编程技术网

Linux HTTP 1.1 Content-MD5冗余给定TCP/IP校验和?

Linux HTTP 1.1 Content-MD5冗余给定TCP/IP校验和?,linux,apache,http,networking,tcp,Linux,Apache,Http,Networking,Tcp,我只是想知道,在HTTP1.1规范中,有一个字段Content-MD5。然而,由于HTTP在整个OSI堆栈中位于TCP/IP之上,并且考虑到TCP/IP有一个报头校验和以确保所有传输的数据都被检查,我很好奇为什么HTTP 1.1规范中需要Content-MD5?我是否误解或遗漏了什么 对于我提到的HTTP/1.1头规范: 关于TCP/IP规范,我参考了第3.1节: 对我来说,通过在HTTP头中添加Content-MD5,我们只是在服务器上添加了更多的工作。为什么不使用TCP/IP已经提供的机

我只是想知道,在HTTP1.1规范中,有一个字段Content-MD5。然而,由于HTTP在整个OSI堆栈中位于TCP/IP之上,并且考虑到TCP/IP有一个报头校验和以确保所有传输的数据都被检查,我很好奇为什么HTTP 1.1规范中需要Content-MD5?我是否误解或遗漏了什么

对于我提到的HTTP/1.1头规范:

关于TCP/IP规范,我参考了第3.1节:

对我来说,通过在HTTP头中添加Content-MD5,我们只是在服务器上添加了更多的工作。为什么不使用TCP/IP已经提供的机制呢


干杯并提前感谢所有人:)

我认为这是为了帮助客户端确定代理服务器是否扰乱了传输中的内容。您可能仍然有有效的TCP数据包,但内容无效。

HTTP内容MD5值独立使用

TCP校验和非常弱,考虑到Internet上传输的数据量,很可能存在TCP校验和值的无声故障


但是,如果您真的在意,您希望使用更强大的功能,如TLS。

据我所知,通过充当缓存的代理服务器发出请求的客户端将要求客户端与代理服务器建立TCP/IP连接。完成后,数据包将向上传输到代理服务器的应用层,以便代理服务器处理请求。这意味着,如果代理服务器更改了http内容,它将重新计算http content-md5,在发送之前将重新计算TCP校验和,并在节点之间重新计算IP头。向上投票选择代理服务器点(:@Vern您描述的是正确的代理服务器行为。很容易想象一个代理会尝试执行内容修改,并且不会花费时间重新正确计算头字段。例如,如果您是代理或缓存,并且希望验证本地存储的文件是否有效,则会发出资源头请求获取文件的服务器MD5将告诉您是否具有相同的版本。TCP校验和不能防止协议/应用程序错误。例如,如果文件以分块方式传输且分块正确,这并不意味着内容正确,但TCP校验和正确。某些服务器设置为不报告错误rs,因此web应用程序停止,客户端得到它停止的任何内容。因此协议失败,因为没有对该内容进行完整性检查。可以下载OS iso文件(即大文件)当您在单个tcp段上可能遇到冲突时,因此供应商往往会包含sha-1哈希,以便您可以在事后手动验证。如果浏览器为您这样做不是很好吗?此外,http可以通过UDP发送(并且适用于除www以外的许多服务)