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

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

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

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

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

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

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

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

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

  • 相关阅读:
    spark streaming 入门例子
    ElasticSearch-hadoop saveToEs源码分析
    spark 资源参数调优
    spark 任务运行原理
    spark RDD底层原理
    用实例说明Spark stage划分原理
    Spark任务提交底层原理
    spark shuffle内在原理说明
    iOS 辛格尔顿
    CodeForces 22D Segments 排序水问题
  • 原文地址:https://www.cnblogs.com/encode/p/4456797.html
Copyright © 2011-2022 走看看