首页 » 信息技术 »

TCP是可靠传输,为什么应用层还要做校验

2020年6月9日 / 1次阅读
TCPIP

之前一直有过这个困惑。目前我看到的一个比较好的解释是对于TCP层来说,只是数据流的概念,数据的逻辑语义没有保障,像

数据的正确性则没有保证,比如说数据有没有被篡改,算是对应用层的一种保护吧。还有一点我自己想到的是,比方说你有一个

文件服务器,tcp确实保证了每一个tcp封包到达,但是你的应用程序的正确性却无法保证,比如你文件的传输过程中,你的程序

在某个错误的逻辑下,没有把一个文件分片放进tcp协议栈里,那么对方当然最好得到的是一个破碎的文件。

听了某网络编程大牛的讲解才知道,那是因为不在同一层,tcp是可靠传输协议,当发送了一个tcp分节给对方之后,对方的内核tcp栈发回一个ack,而这个响应是传输层的响应,

但是对于应用层的消息包来说并不能认定一定成功,比如对方由于某个bug,收到这个tcp分节之后来不及处理就异常退出了,那对于发送方的应用层来说,这个消息

并不能说发送成功,而对于tcp来说确实是传输可靠的。

还有人说,有可能某个包的校验没变,但是包的内容发生了变化。

总之,上层再做一次整体的检查是很有必要的。

本文链接:https://www.maixj.net/ict/tcp-app-23724

相关文章

留言区


前一篇:

-->只要几分钟回答问卷,就能轻松赚现金!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top