SMB不是可靠传输?居然文件损坏一部分,传输过程却无报错
本帖最后由 darkclown 于 2022-10-29 18:50 编辑我多年以来一直使用SMB在家里几台windows电脑间传输数据,但是前几天偶然发现一个5G左右的视频文件和源文件不一致,通过二进制对比发现文件中有一很小的段变成了连续的0,但是传输过程却无任何报错[震惊]
原来SMB不是可靠传输?居然会出现这种静默错误,那我这么多年来回用SMB同步文件,岂不是千疮百孔了??
据我了解,现在SMB好像是在TCP上的,虽然TCP的校验位数不够强,极个别情况下也会出错,但不可能出现这种连续0的错误。那么问题来自于哪呢?SMB实现问题?Win10的bug?存储我两端都是970ep,无0E什么的错误 什么牌子路由?之前网件有些型号好像固件有bug会这样 要不要检查一下0E呢[偷笑] 本帖最后由 a6057c 于 2022-10-29 18:52 编辑
smb有两套加密和完整性检验选项,比较推荐开启后者(加密),自带完整性校验。
客户端打开管理员powershell 输入 Get-SmbConnection | fl *,检查输出 Encrypted: True/False 以及 Signed: True/False Phil_Libra 发表于 2022-10-29 18:44
什么牌子路由?之前网件有些型号好像固件有bug会这样
现在SMB好像是基于TCP的,要是路由器有问题,那会报错的吧? a6057c 发表于 2022-10-29 18:50
smb有两套加密和完整性检验选项,比较推荐开启后者(加密),自带完整性校验。
客户端打开管理员powershel ...
[困惑]Get-SmbConnection | fl *没有任何输出啊 smb3.0开启加密就有数据完整性校验,不过性能要差很多的。 tcp默认就有校验机制吧 又不是UDP 所以我觉得可能你中途路过路由器的交换导致的交换机一般不会有这问题 asumi233 发表于 2022-10-29 19:15
tcp默认就有校验机制吧 又不是UDP 所以我觉得可能你中途路过路由器的交换导致的交换机一般不会有这问 ...
udp也有checksum的 个人更倾向于这个是SSD的问题,如果SMB这么不可靠,每天产生的错误数据不会少,但基本没有看到过类似问题。 说起来,最近我这里也遇到了(不过重启后现象又消失了) darkclown 发表于 2022-10-29 18:51
现在SMB好像是基于TCP的,要是路由器有问题,那会报错的吧?
反正之前论坛有个讨论,路由器导致文件hash对不上,最后是升级路由固件解决的,可惜那个帖子应该已经归档了 darkclown 发表于 2022-10-29 18:51
现在SMB好像是基于TCP的,要是路由器有问题,那会报错的吧?
不过那个好像是文件头会插入一段特定字符,和你这个又有点不一样 折腾网络真是玄学。[震惊] [震惊]所以用fastcopy,勾上验证选择啊 前段时间服务器内存坏了就这样,文件校验值不对
那个内存也会伪装,刚上电memtest正常,过一天再测memtest就有坏块了
在系统日志上也看出来了,有好些个trace,还有异常重启 xsdianeht 发表于 2022-10-29 18:55
Get-SmbConnection | fl *没有任何输出啊
Get-SmbServerConfiguration 声色茶马 发表于 2022-10-29 20:14
折腾网络真是玄学。
不过网络单纯复制也会出错,比如windows只保证把缓冲区的数据写过去时不报错,不会校验最终文件是否相同,在缓冲区的数据就已经和源数据不同是无法感知的,所以通常防止文件损坏会在复制文件后再校验一次,比如很多网站会提供一串hash值,就是给你判断文件完整性用的 RyanLR 发表于 2022-10-29 20:57
Get-SmbServerConfiguration
[震惊]看了下,我这里默认是false xsdianeht 发表于 2022-10-29 21:32
看了下,我这里默认是false
这个没啥用的。文件破坏应该是其他原因
页:
[1]