zoukankan      html  css  js  c++  java
  • TCP是可靠传输,为什么应用层还要做校验

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

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

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

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

    ———————update 2015-11-24-------------------------------------

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

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

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

  • 相关阅读:
    IDEA2019.1.2破解教程
    Java基础 -- 常见异常
    Java基础 -- Java基本类(部分)
    Java基础 -- IO流
    Java基础 -- Java方法
    Java数组
    IDEA首次配置问题
    Java开发环境搭建
    dos的几种打开方式和基本dos命令
    SpringBoot内外部配置文件加载和优先级
  • 原文地址:https://www.cnblogs.com/encode/p/4456797.html
Copyright © 2011-2022 走看看