На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » Подключение к Интернету
Разделы в "Подключение к Интернету":
ПровайдерыХостингМодемыПервые шагиМодемный доступISDN доступСпутниковый доступНовое в разделе "Подключение к Интернету"xDSL доступРегистрация доменов

Операция по удалению грыжи у TCP/IP

Впервые статья была опубликована в журнале Хакер номер 31.

Больше всего в жизни я ненавижу тормозов. Если людей такого типа еще можно избежать, то вот от модемов с маленькой скоростью никуда не денешься. Меня просто бесит, когда огоньки в правом нижнем углу, отражающие соединение, начинают затухать. Хорошо, если они просто моргают, и мой ишак IE загружает очередную страницу. В этом случае я просто закрываю глаза на несколько минут, а очнувшись, получаю готовую страницу. Но когда я скачиваю громадный файл, и на самом последнем килобайте огоньки тухнут и в течение пяти минут не хотят просыпаться, я готов разбить свою голову б монитор. Так я стал ощущать, что моя черепушка уже не выдерживает таких нагрузок, и мозги могут вытечь наружу.

Я давно уже борюсь со своим коннектом, потому что мне часто приходится качать большие файлы (чаще всего закачивать в сеть). За все время моего пребывания в Инете я сменил несколько момедов, устанавливал различные проксики, менял провайдеров и даже перевел телефон на цифровую станцию. Все это потребовало немаленьких зеленых, а скорости прибавилось процентов на 20. Мои огоньки стали гореть ярче, и шишек на лбу стало меньше. И все же огоньки все так же умирали, хотя и редко.

Вот тут я решил влезть в сердце моего Internet-а и проделать операцию на TCP/IP. Если и ты хочешь реально увеличить скорость своего коннекта, то тебе придется сделать то же самое. После удачной операции скорость увеличивается на 20-40%, а главное - никаких затрат. Приступая к операции, мы сразу же сталкиваемся с небольшой проблемой - в состав Win9x не входит ни одного скальпеля для проделывания этой достаточно простой работы. Ну ничего, такое можно сделать и ручками, изменяя параметры в реестре.

Оптимизация передаваемых пакетов

Итак, запускай regedit и направляйся по адресу: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class\NetTrans\0000. Последние нули в адресе означают профиль. Их у тебя может быть несколько, поэтому адрес может заканчиваться не на 0000, а 0001 или 0002 или даже 0022. Здесь нужно создать строковый параметр MaxMTU и присвоить ему значение... а какое значение, мы сейчас разберемся.

MTU (Maximum Transmission Unit) - максимальный передаваемый пакет. M$, как всегда, выделилась и переименовала этот параметр в MaxMTU - максимально максимальный передаваемый пакет :). В Win9x по умолчанию используется максимально возможное значение 1500. Сплошные максимумы - максимум MTU, максимум максимума, максимум глюков :).

Конечно, чем больше пакет, тем больше данных мы получим. С большим значением MaxMTU момед сможет отправлять большие пакеты, и за раз будет отправляться больше данных. Но если у тебя связь глючная и пакеты регулярно пропадают, то момеду нужно повторять отправку потерянных данных. Может так случится, что момед будет тратить больше времени на отправку или получение потерянных пакетов, чем на новые. Есть еще одна проблема - стандартом для маршрутизаторов долгое время являлось значение MaxMTU, равное 576. Поэтому пакеты разрываются вдребезги маршрутизаторами, и значение MaxMTU желательно понизить.

Возможные значения для MaxMTU - 552, 576, 1002, 1500. Это не значит, что нельзя использовать другие числа, просто эти используются чаще всего и работают лучше (тут я не буду вдаваться в технические подробности).

Размер данных в пакете

Понизив размер максимального пакета, нужно не забывать, что пакет содержит не только данные, но и заголовок, и служебную инфу, которые занимают аж 40 байт. Это значит, что при значении MaxMTU=1500 реально будет передаваться 1460 байт данных. При значении 576 размер данных равен 536. Так что во втором случае у тебя будет в три раза большие потери на служебную инфу, т.к. для передачи 1500 байт данных нужно отправить три пакета по 576, а значит - 120 байт служебной инфы. Так что за счет снижения затрат при потерях пакетов ты в три раза увеличиваешь напряг на сеть служебной инфой.

Не все так страшно, ведь при плохой связи лучше лишний раз передать 40 байт служебной инфы, чем 1500 байт потерянного пакета. Но при хорошей связи пакет нужно делать максимальным.

Количество данных без учета служебной инфы называется MSS (Maximum Segment Size), и равен он MaxMTU-40. Иди в реестр по адресу HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTC и создай там строковый параметр DefaultMSS, равным значению MaxMTU-40 (для особо умных сообщаю, что нужно вписать туда не формулу "MaxMTU-40", а результат вычислений по этой формуле).

Закройте форточку

Все следующие параметры будут располагаться по адресу HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTC, поэтому я буду говорить только их название, тип и что они означают.

Следующим будет строковый параметр DefaultRcvWindow (RWIN - Receive Window) - окно посылки. Когда ты посылаешь запрос на сервер, то он имеет право отправить тебе RWIN количество байт, не дожидаясь подтверждения об удачном приеме. Если записать в DefaultRcvWindow значение, которое ты указал в DefaultMSS, то сервер после каждого отправленного пакета будет ждать подтверждения. В этом случае ты нарвешься на большие задержки. Если ты сделаешь это значение размером в 20 * DefaultMSS, то сервер будет отправлять сразу 20 пакетов. Этим ты увеличишь вероятность потерь пакетов, а значит увеличишь количество запросов и ожиданий потерянных данных.

Параметр DefaultRcvWindow нужно рассчитывать по формуле DefaultMSS * N. В качестве N желательно использовать числа 4, 6, 8 или 10. Самым оптимальным, на мой взгляд, является число 8, но в твоем случае оно может быть и другим.

Время умирать

Следующий строковый параметр - DefaultTTL (TTL-Time To Live), это время жизни пакета. Для того чтобы маршрутизаторы не зацикливались в поисках места назначения пакета, был придуман параметр TTL. Как только значение этого параметра превышает допустимое, пакет считается попавшим в цикл и уничтожается.

По умолчанию DefaultTTL выставлено в 32. Его уменьшение может привести только к ухудшению связи, а увеличение может уменьшить вероятность потерь пакетов. Это связано с тем, что некоторые пакеты могут быть уничтожены только потому, что какому-то маршрутизатору вздумалось отправить пакет дальней дорогой. Такое бывает редко, но все же я рекомендую увеличить это значение до 64-х, тебе от этого хуже не станет. Хотя скорость увеличится незаметно, по крайней мере, тестами это не определишь. Если ты сможешь таким способом спасти пару заблудившихся пакетов в неделю, то можно считать, что у тебя золотые руки, так что беги сдавать их в ломбард.

Подслушивающие устройства

Подслушивающие параметры в основном не очень хорошо влияют на соединение. Смотри сам:

Строковый параметр PMTUDiscovery (Path Maximum Transmission Unit Discovery) - обнаружение пути с максимальным размером пакета. Если выставить этот параметр в "1", то TCP/IP перед соединением будет искать путь с наивысшим MTU. При правильно настроенном MaxMTU, этот параметр только тормозит протокол за счет лишних затрат времени на поиск.

Строковый параметр PMTUBlackHoleDetect (нахождение черных дыр) - если выставить этот параметр в "1", то перед началом соединения будет происходить проверка на мертвые маршрутизаторы по пути до сервака. Советую не выставлять этот параметр, потому что он тормозит протокол. Мертвые маршрутизаторы встречаются не так часто, и затраты на их поиск не окупаются. Поэтому я категорически не рекомендую совать сюда свои грабли.

Dead Can Dance

Вся работа по настройке TCP/IP связана с редактированием реестра. Сильно "прямые" руки могут убить его до неузнаваемости. Если ты дошел до такой ручки, то:

1. Перезагружай компьютер.

2. После прогона теста и перед загрузкой Windows жми F8. Перед тобой появится меню выбора варианта загрузки.

3. Выбери "Command Prompt Only". Так ты попадешь в Dos.

4. Набери в командной строке scanreg/restore. Запустится программа восстановления реестра.

5. Тебе предложат выбрать любой из 4-х рабочих реестров за последние 4 дня.

6. Выбирай, жми Enter.

Когда восстановишь реестр, подключайся к Инету и скачивай себе маленькую утилитку Ispeed (чуть меньше 600 кило), которая позволяет сделать все настройки автоматически.

ISpeed - спасенье от кривых конечностей

http://www.hms.com/ispeed.htm

Ispeed - эта халявная утилита, которая позволяет автоматически оптимизировать TCP/IP стек. В главном окне ты можешь выбрать профиль (profile), который ты хочешь настроить, и смело приступать к оптимизации TCP/IP. Программа позволяет подставлять только допустимые значения всем параметрам, и вероятность ошибки очень мала.

С правой стороны находятся кнопки, упрощающие жизнь простому смертному. Советую начать настройку с нажатия пимпы PPP. Она автоматически выставит оптимальные значения для PPP соединения. После этого можно поправить то, что, на твой взгляд, является более разумным, чем думает прога. Все параметры мы уже рассмотрели, и они не должны вызывать смущения, действуй смелее.

На закладке "Testing" ты можешь протестировать выбранные настройки на каком-нибудь сервере. Если тебя настройки удовлетворили (а меня удовлетворяют только женщины), то нажми кнопку "Save". После сохранения данных в реестре тебе предложат сохранить выбранные настройки в файле историй (Hystory). Обязательно соглашайся с этим предложением. Сто баксов мне в задний проход, если это не самая гениальная возможность проги.

Перейди на закладку "Hystory". Здесь ты можешь выбрать любую из сохраненных тобой конфигураций и одним нажатием крысы задействовать любую из них. А на закладке Analysis можно посмотреть в виде графика скорость на каждой из сохраненных тобой конфигураций. Двести баксов мне в задний проход, если это не самая офигенная возможность проги.

Вне игры

Итак, вот такими косметическими настройками можно прибавить до 40% в скорости при работе с Инетом. Если тебя и это не удовлетворило, то переходи на Linux, там стек TCP/IP работает немного лучше. Ну а если и это не вариант, то выбирай Windows 2000. Честно сказать, я поразился, что в нем изначально TCP/IP оказался достаточно быстрым и в дополнительной оптимизации не нуждается. Так что флаг тебе в руки и витую пару в задний проход.

Horrific
Horrific

Другие разделы
Провайдеры
Хостинг
Модемы
Первые шаги
Модемный доступ
ISDN доступ
Спутниковый доступ
Новое в разделе
xDSL доступ
Регистрация доменов
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100