Показать полную графическую версию : Бьются файлы при передаче по локальной сети
Nalorokk
07-10-2008, 12:33
Бьются файлы при передаче по локальной сети (архивы не распаковываются, exe не запускаются итд)
Передает: Windows Vista Ultimate x64
Принимает: Windows XP SP2/SP3 x32
Если наоборот принимать с WinVista то файлы не бьются и приходят нормальные. С железом проблем нет точно.
Не в даваясь в подробности я думаю проблема в
1. TCP1323Opts - запрашивает разрешение на использование больших окон TCP
"Tcp1323Opts"=dword:00000003" возможные значения 0 - применение опций RFC 1323 запрещено, 1 — разрешено использовать только масштабирование окна; 2 — разрешено применять только временные метки; 3 — разрешено использовать обе опции.
2. Enable Large TCP windows support - определяет максимальный размер окна для приема TCP-пакетов, которые отправитель может передать, не получая подтверждения в байтах
3. Enable SackOpts - в случае потери какой либо части пакетов заново посылается весь кусок или пропущенная часть,
"SackOpts"=dword:00000001 значения 1 - разрешено, 0 - нет
все смотреть на стороне Vista.
А XP передает маленькими пакеты до хх КВ поэтому и Vista берет без проблем. Но в XP есть так же настройки сети.
Не в даваясь в подробности »
Но раздел реестра указать не помешало бы...
Nalorokk
08-10-2008, 12:49
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Значение "Tcp1323Opts"=dword:00000003 поставил (Tcp1323Opts вобще там небыло).
Вроде помогло, даже тормозить перестало при передаче большого количества файлов, раньше она так тормозила что даже капс лок несразу мигал...
Nalorokk
01-11-2008, 12:16
Проблема опять появилась. В тот раз я свидывал при тестировании архив 5 гиговый и он разорхивировался без проблем. Сейчас опять бьются файлы, значение в реестре на месте. Что интересно при передаче файлов через Apache файлы не бьются.
Странно что грешите на сеть, так как каждый пакет имеет контрольную сумму, и при получении сверяется данная контрольная сумма, и происходит сборка файла, и еще если пакет сбойный то данный пакет будет повторен. Чтоб не повторят всю посылку, можно повторить только сбойную ее часть (т.е. фрагмент)
Если по предположениям это связанно с сетью, то можно еще добавить такие параметры они работают в паре :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
SackOpts - Выборочная передача поврежденных данных, параметр включает поддержку SACK. Если пакет или ряд пакетов TCP потеряны, то получатель может сообщить отправителю, какие данные были получены, а какие нет, 1 = разрешить
SackOpts REG_WORD = 1
TcpMaxDupAcks - Этот параметр определяет количество двойных ACKs которые должны быть получены для некоторой последовательности номеров, после которых произойдет "быстрая повторная передача". Параметр управляет повторной передачей сегментов, которые были потеряны в процессе передачи. Значение: 2; 1; 3
TcpMaxDupAcks REG_DWORD = 2
Хотя может чудит и сама сетевая плата, может разные нагрузки на нее, и при больших буферах которые могут устанавливать некоторые сетевые карты в своих настройках: например Realtek RTL8168B/8111B PCI-E Gigabit
-Flow Control - Enable/Disable
-IPv4 Checksum Offload - Rx & Tx Enable ( Disable, Rx Enable, Tx Enable )
-Receive Buffers - 512 ( и ниже )
и т.д.
Может уменьшить скорость в сети и посмотреть.
Vancouver
01-11-2008, 13:20
Немного не в тему, но всё же :) http://support.microsoft.com/kb/955427/
Данный КВ, легко найти в Гугле...
Данный hotfix рекомендуют применять приблизительный перевод:
Когда копируете большие файлы с одного компьютера на другой компьютер в среде сети высокой полосы пропускания, процесс копии является очень медленным, если оба компьютера управляются Windows Vista или Windows Sever 2008. Пропускная способность сети намного ниже чем ожидалась.
Эта проблема происходит, потому что передача TCP немедленно не оправляется после того, как повторно передавание происходит. Дополнительно, компонент TCP не может расшириться, TCP получают окно. Это поведение вызывает плохую работу копии через сеть.
Nalorokk
01-11-2008, 14:40
Если по предположениям это связанно с сетью, то можно еще добавить такие параметры они работают в паре :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
SackOpts - Выборочная передача поврежденных данных, параметр включает поддержку SACK. Если пакет или ряд пакетов TCP потеряны, то получатель может сообщить отправителю, какие данные были получены, а какие нет, 1 = разрешить
SackOpts REG_WORD = 1
TcpMaxDupAcks - Этот параметр определяет количество двойных ACKs которые должны быть получены для некоторой последовательности номеров, после которых произойдет "быстрая повторная передача". Параметр управляет повторной передачей сегментов, которые были потеряны в процессе передачи. Значение: 2; 1; 3
TcpMaxDupAcks REG_DWORD = 2 »
Непомогает всеравно бьются :(
Тогда думаю только настройки сетевой карты помогут, или поменять и проверить на другой, если есть возможность.
Nalorokk
01-11-2008, 14:46
Тогда думаю только настройки сетевой карты помогут, или поменять и проверить на другой, если есть возможность. »
Всмысле локалка достаточно большая, откуда бы не скидывали бьются файлы, если у меня загружена линукс или макос или просто скидывает апаш то все прекрасно.
Nalorokk
01-11-2008, 15:09
Установка этого апдейта тоже не помогла, щас буду пробывать апдейтить дрова может поможет
Vancouver
01-11-2008, 15:45
Попробовать поиграть настройкой Jumbo Packet в свойствах сетевой карты.
1. Самый лучший выход в такой ситуации, поставить простинкий лан анализатор (для отлова пакетов и анализа их т.е. как они принимаются и передаются все будет видно, есть подтверждения или нет, так и проверка из числа переданных принятых, процент бракованных и загрузка сети).
Раз в *Unix работает, то наводит на мысль, что теряется буфер приема в сетевой карте, он уже новый а до него еще не считан, а возможно драйвер его не обработал.
2. И можно поставить счетчики производительности
Панель управления -> Дополнительные инструменты -> Открыть диспетчер надежности и производительности
Системный монитор -> в окне графика пр.кн.мыши добавить счетчик, раздел Network Interface выбрать параметры, и добавить,
далее поставить задачу на копирование, и посмотреть результат, заодно поставить счетчик на Thread -> ID Process.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.