本帖最后由 VisualEleven 于 2012-07-30 07:40:51 编辑

解决方案 »

  1.   

    个人见解:
    如果都严格的遵守协议,TCP的校验和基本上能满足要求,但是不能排除数据被篡改,比如经常开机打开网页的时候会跳出电信的广告,这个就是数据插入,如果使用CRC MD5 SHA1等就有可能查出这种问题
      

  2.   

    从数据的准确性来说是不需要的,TCP已经保证过了。实际应用的时候确实一般都加,尤其是游戏上。这主要是用来检测数据是否被人恶意篡改的。
      

  3.   

    主要看你做什么了,如果你传输一个视频,那肯定没必要了,如果你通过tcp传输的是转帐信息,crc,md5之类的还是远远不够的,至少也得1024的rsa签名才够。
      

  4.   

    一般的工控的,或常用的局域网应用,我还是觉得要加上,因为tcp只能保证传输过程中数据是否正常,数据的内容是不关心的,加上crc之类的校验,一般用来在应用层校验数据是否合理、合法,防止恶意的攻击。
      

  5.   

    这个问题,我找了很久很久,也没有找到答案。如果因为防止被篡改,那篡改者完全可以把校验也一起改啊。我的问题是:不考虑篡改,我一端发123,对端一定会收到123吗?
    一般的校验,无非是奇偶、CRC什么的,这些校验都是假设数据大部分正确的情况下,如果原始数据包里面每一个字节都被修改(怎么被修改这里不讨论,比如干扰什么的),那么这些检验是肯定不能检查到的(此时等于发送方发送了一个完全不相干的另外一个包)。所以,我觉得,理论上,除了用人把数据刻在光盘上送过去,根本没有办法保证对方一定会收到与发送方完全一样的数据(就用目前的tcp/udp协议,不加任何其它手段),只是你有多大概率碰得上而已。
      

  6.   

    加密防止窃听,安全报文防止修改,hash来保证数据被假冒,签名保证数据不可抵赖
      

  7.   

    不考虑篡改的话,TCP另一端必定收得到啊123。要不然TCP和UDP的区别再哪?你自己也可以封装重发UDP的机制。但是效率不一定好
      

  8.   

    不知道有多少前人掉在TCP Socket
    send(人多)send(病少)send(财富)
    recv(人多病)recv(少财富)
    陷阱里面啊!
    http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html