Бьются файлы при передаче по локальной сети
Бьются файлы при передаче по локальной сети (архивы не распаковываются, 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 есть так же настройки сети. |
Цитата:
|
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Значение "Tcp1323Opts"=dword:00000003 поставил (Tcp1323Opts вобще там небыло). Вроде помогло, даже тормозить перестало при передаче большого количества файлов, раньше она так тормозила что даже капс лок несразу мигал... |
Проблема опять появилась. В тот раз я свидывал при тестировании архив 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 ( и ниже ) и т.д. Может уменьшить скорость в сети и посмотреть. |
Немного не в тему, но всё же :) http://support.microsoft.com/kb/955427/
Данный КВ, легко найти в Гугле... |
Данный hotfix рекомендуют применять приблизительный перевод:
Цитата:
|
Вложений: 1
Цитата:
|
Тогда думаю только настройки сетевой карты помогут, или поменять и проверить на другой, если есть возможность.
|
Цитата:
|
Установка этого апдейта тоже не помогла, щас буду пробывать апдейтить дрова может поможет
|
Попробовать поиграть настройкой Jumbo Packet в свойствах сетевой карты.
|
1. Самый лучший выход в такой ситуации, поставить простинкий лан анализатор (для отлова пакетов и анализа их т.е. как они принимаются и передаются все будет видно, есть подтверждения или нет, так и проверка из числа переданных принятых, процент бракованных и загрузка сети).
Раз в *Unix работает, то наводит на мысль, что теряется буфер приема в сетевой карте, он уже новый а до него еще не считан, а возможно драйвер его не обработал. 2. И можно поставить счетчики производительности Панель управления -> Дополнительные инструменты -> Открыть диспетчер надежности и производительности Системный монитор -> в окне графика пр.кн.мыши добавить счетчик, раздел Network Interface выбрать параметры, и добавить, далее поставить задачу на копирование, и посмотреть результат, заодно поставить счетчик на Thread -> ID Process. |
Время: 14:57. |
Время: 14:57.
© OSzone.net 2001-