社区
网络编程
帖子详情
请教大家一个问题,TCP是绝对100%可靠的吗?
superlzdcn
2007-01-10 05:00:46
用TCP进行文件的传输,经常发现接收后的文件的校验码不对了,小文件还好,大文件出错概率比较高,会不会是TCP传输过程中出错?我要不要在传输过程中做校验?
...全文
983
27
打赏
收藏
请教大家一个问题,TCP是绝对100%可靠的吗?
用TCP进行文件的传输,经常发现接收后的文件的校验码不对了,小文件还好,大文件出错概率比较高,会不会是TCP传输过程中出错?我要不要在传输过程中做校验?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
danscort2000
2007-01-11
打赏
举报
回复
顺便请你帮个忙,我现在登陆CSDN中,请你截断吧,
CSDN都是明文,没有什么SSL,SSH之类的加密,截断吧
我在线等待中
danscort2000
2007-01-11
打赏
举报
回复
我不懂的,
我错了,
没让FBI看上,真是浪费人才啊,
楼上的继续
husheng34
2007-01-11
打赏
举报
回复
你们提反对意见的人,会算校验码吗?
首先申明,我可以用 二层的包,构建出HTTP包,并访问网页,
那种 IP层替换方式进行攻击 是小儿科了,
用低层攻击手段,我几乎可以截断任何没有加密的协议,
如web,msn,telent 等,
当会话两端连接以后,我可以中间截断,假冒其中一端和别一端通信.
所以如果连 校验码 都不会算的人,请闭上你们的嘴,只会让人笑话.
danscort2000
2007-01-11
打赏
举报
回复
也就是说: 这个文件可以或者可能在下载后被再次发布给别人,但是为了防止某些人串该原始数据,特地加了MD5或者SHX等校验码,这样可以保证再次发布后用户依然能知道自己下载的东西是否被人修改过
danscort2000
2007-01-11
打赏
举报
回复
如果楼上的话是正确的话
那么所有的FTP协议,HTTP协议,POP/SMTP协议
必须全部被改写并加入校验机制
问题是到现在为止,IETF好象没有任何关于传输不安全而有专家提出草案的
IP层替换理论上说的容易,实际操作起来,你无法知道路由实际经过,在INTERNET上,你要替换,首先你要有抓IP包的路径和能力,事实上在两个陌生IP点之间,你根本没有能力去抓,你怎么抓?抓了以后你还要保证或者阻塞这个IP包,或者保证你的包比这个IP包早到目标机器,抓都不好抓,更别说立即替换了,别对我说其中一个IP点在你的同一个内网内并且端口屏蔽没做,或者你就是网关;还有一种方法就是不抓包,而瞎猜,使用IP包直发,这个概率比哈雷彗星撞地球的概率还小。
给你个简单的例子,ftp 服务器122.3.12.56 Client: 220.32.1.16 ,而你的机器IP: 85.122.2.46,你怎么去抓,怎么去替换? 你能知道它是怎么路由的?
提供下载文件校验MD5或者SHX的目的,并不是简单的针对传输过程,而主要是为了防止有人恶意在原始包中插入非法的文件或者代码或者修改原始文件。
benjiam
2007-01-11
打赏
举报
回复
这种攻击的代价是极其昂贵而且复杂的
没什么的。 重新改一下数据。重新计算一下校验值就可以了。没什么难度的。
理论上出现的概率 就是 数据某些位出现了问题。恰好是ip的 2个校验值也改变了
而且算下来又都没有问题。
网络上出现这个问题 基本上看人品。
所以会有提供下载文件的检验码的站点。 对的。
danscort2000
2007-01-11
打赏
举报
回复
在测试的时候出现这种问题
100%是你自己代码的问题
因为你的代码在测试的时候还没有伟大到值得别人使用IP层替换方式进行攻击
这种攻击的代价是极其昂贵而且复杂的
在一般情况下,除非军用等级,完全可以认为TCP是100%正确的
具体可以看TCP/IP协议1-3
DarknessTM
2007-01-11
打赏
举报
回复
所以会有提供下载文件的检验码的站点
microyzy
2007-01-11
打赏
举报
回复
楼上好多解释了,呵呵
要绝对可靠,就发两份。。。但即使发两份,也有%0........1%的几率两份都将同一个0错误传输为1。。。牛角尖拉
flowlight
2007-01-11
打赏
举报
回复
99%的正确率,1%的不正确率可以称之为不可靠
99.99%的正确率,0.01%的不正确率就可以称之为可靠了
所谓的可靠是说达到了一定的正确率满意度
husheng34
2007-01-11
打赏
举报
回复
错,接收到的数据不是 100%可靠的
我不想在解释这个问题,这只是个网络基本问题,
youngwolf
2007-01-11
打赏
举报
回复
怀疑TCP也是可能的。但我想自己的问题还是多一些,任何一种核验码,都有出错的概率,但既然它是一种核验码,其可靠性绝对是可以接受的。
但一般的核验,基本上逃不出一个实质,即用正确的数据核验错误的数据,这一点应该没什么问题吧?那么想想这么一种情况——错误的数据比正确的还多呢?此时错误的数据就变成正确的了!
所以,我以为,核验的本质是基于一种假设——正确的数据比错误的数据多。
走个极端,发10个字节,全部错误,包括核验码,那么在验证数据的时候,有没有可能得出数据正确的结果呢?显然是有的!
everandforever
2007-01-11
打赏
举报
回复
晕了。这种问题根本是程序写的不好,竟然怀疑到TCP身上去了。
benjiam
2007-01-11
打赏
举报
回复
这种问题 看看tcp 卷一就很清楚了。
tryanother
2007-01-11
打赏
举报
回复
在保证数据链路层可靠的基础上,TCP是可靠的,不会出现包丢失的现象,除非被人恶意修改,而数据链路层是会出现错误的,毕竟没有哪个纠错码可以说自己能够100%纠错,只是保证在一定概率下不出现大的错误。而如果LZ的大文件传输经常出错,就有必要检查一下连线了,更换网线再试试看。
dick_song
2007-01-11
打赏
举报
回复
楼上的都强!关注中...
superlzdcn
2007-01-11
打赏
举报
回复
感谢大家如此的热心,没想到这个问题居然牵扯出了这么一大段的激烈的讨论,但是根据我的影象,在TCP中所使用的校验码正如前面有人所说的,还只是比较原始的校验和的方式,这种方式检验的强度还很弱,很有可能在出错的情况下无法检测到错误的包,看来我有必要给我的程序再加上校验的部分。谢谢大家,如果大家觉得不对,请指教。
无知者无谓
2007-01-11
打赏
举报
回复
TCP是可靠的,是相对于UDP来说的:
TCP在发出一个包后,会等待对方返回一个确认包,如果在一定时间内没有受到确认包,那么它会再发一次,重发次数跟操作系统有关。发送超过一定次数后没有受到确认包,那么人为连接已经断开
而UDP则是不管对方有没有受到,它只管发送
楼上说的检验码,只是防止在传输过程的电气错误,它只能保证包正确性保持在一定的范围之内--这个范围在目前的技术不是100%
ProgrameMan
2007-01-11
打赏
举报
回复
TCP协议主为了在主机间实现高可靠性的包交换传输协议
看来我的观点的确不正确,在这里承认错误!
TCP 的确无法%100的实现可靠性。
向受我误导的朋友们道歉 呵呵
ProgrameMan
2007-01-11
打赏
举报
回复
还有楼上几位说
“所以会有提供下载文件的检验码的站点”
这是为了防止数据伪造或者篡改的,不是为了解决 tcp 校验码问题。
加载更多回复(7)
细说
TCP
内核参数
TCP
性能的提升不仅考察
TCP
的理论知识,还考察了对于操心系统提供的内核参数的理解与应用。
TCP
/IP协议第一卷第三章 IP首部分析
IP介绍 IP是
TCP
/IP协议族中最为核心的协议。所有的
TCP
、UDP、ICMP、IGMP数据都以IP数据报格式传输。 IP提供不
可靠
、无连接的数据报传送服务。 不
可靠
(unreliable)它不能保证IP数据报能够成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有
一个
简单的错误处理算法:丢弃该数据报,然后发送...
如何利用
tcp
或udp实现应用层协议_如何利用ZKP(零知识证明)与区块链,实现去中介的交易协议?...
作者:郭宇(安比实验室创始人) 这篇文章解释利用ZKP(零知识证明)与区块链来实现去中介的交易协议的原理,讲讲我们是怎么把这个理论变成实用的代码的,这是一篇概述,希望了解更多的朋友请关注后续。[注]:如果你相信未来区块链技术能改变世界,请留意看文末没有第三⽅,能保证交易的公平性吗?想象⼀下这样⼀个交易场景,⼀个买家拎着现⾦箱⼦,另⼀个卖家也拎着⼀个箱⼦,装着某种贵重货物。在电影中的情节⾥,买卖双⽅...
计算机网络概述
重要概念: 计算机网络把许多计算机一起,而互联网则把许多网络连接在一起,是网络的网络。因特网是世界上最大的互联网。 以小写字母i 开始的internet是通用名词,它泛指由多个计算机网络互连而成的网络。在这些网络之间的通信协议可以是任意的。 以大写字母I开始的Internet(因特网)是专用名词,它指当前全球最大的、开放的、由众多网络 相互连接而成的特定计算机网络,它采用
TCP
/IP协议族作为 通信规则,且其前身是美 国的ARPANET. 因特网现在采用存储转发的分组交换技术 ,以及三层因特网服务提供 者
【深度分析】提问的艺术:从杜威的“
问题
哲学”到程序员的“破局思维”——如何用一句名言让你解决
问题
的效率翻倍?
当你解决了
一个
问题
之后,别忘了总结一下。想想这个
问题
是怎么产生的,你是怎么解决的,还有没有别的解决方法。这样下次再遇到类似的
问题
,你就能更快地解决了。而且你还能把总结的经验分享给别人,帮助更多的编程小伙伴。杜威的“
问题
哲学”不仅属于哲学史,更是程序员的技术圣经。从精准界定
问题
到系统重构认知,提问的艺术决定了代码的高度、团队的效率乃至技术的文明。正如Linux之父Linus Torvalds所言:“好的程序员能用代码解决
问题
,伟大的程序员能用
问题
定义未来。
网络编程
18,357
社区成员
64,164
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章