Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];

Вниз

особенности tcp/ip при PPP соединении   Найти похожие ветки 

 
Поросенок Винни-Пух ©   (2008-11-07 13:52) [0]

столкнулся с неожиданной проблемой.
есть клиент и сервер, взаимодействующие по http.
(indy 9018)
на сервере tidtcpserver на клиенте tidhttp (или если нет прокси то tidtcpclient).
Обмен идет post запросами и все как бы хорошо.
Кроме двух случаев в одном городе.
У клиентов диалап к провайдеру через обычный модем.
Линия аналоговая, набор пульсом.
Обмен данными идет неустойчиво.
Детальная трассировка показала:
клиент послав пост запрос серверу вошел в цикл readln для чтения заголовка ответа.
считал две первые строки заголовка и замер в ожидании третьей в которой указан content-length.
Эту строку у него получается считать через раз на третий.

Сервер тоже был оттрассирован.
И на нем все выглядит замечательно.
Сначала цикл readln и получение заголовка клиента, затем считывание блока данных пост запроса, затем обработка запроса (декрипто/проверка эцп/запросы к субд/формирование ответа/эцп/шифрование и посылка самого ответа клиенту)
На все про все уходит одна-две секунды.
Тем не менее клиент не выходит из readln.

Глюк стабильный, но проявляется только в одном городе и только на диалапе.

Подскажите плиз, куда рыть и где закапывать собаку.


 
tesseract ©   (2008-11-07 14:45) [1]

Обновить систему ? Настройить брандмауэр ?


 
clickmaker ©   (2008-11-07 14:46) [2]

> Тем не менее клиент не выходит из readln

тут только одно приходит в голову: readln не может найти конец строки


 
Поросенок Винни-Пух ©   (2008-11-07 14:48) [3]

это понятно что клиент не может найти CRLF.
непонятно почему crlf пропадает только на диалапе и только в одном населенном пункте.

брандмауэра там незамечено. тем более такого интеллектуального, который две строки шттп заголовка пропускает, а третью нет.


 
clickmaker ©   (2008-11-07 15:04) [4]

а от значения content-length не было замечено зависимости?


 
Поросенок Винни-Пух ©   (2008-11-07 15:19) [5]

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

все отличие в том, что там нет readln.


 
Поросенок Винни-Пух ©   (2008-11-07 15:33) [6]

в общем пока добился улучшения таким путем:
сервер, сформировав ответ, не делает writeln writeln writeln writebuff,
а формирует в памяти весь блок ответа целиком (заголовок + данные) после чего делает единственный writebuff клиенту.

но все равно хотелось бы понять "химию и физику" проблемы.


 
Сергей М. ©   (2008-11-07 16:27) [7]


> Поросенок Винни-Пух ©   (07.11.08 15:33) [6]


Попробуй выключить на своем IdTCPServer"е алгоритм Нагеля


 
Anatoly Podgoretsky ©   (2008-11-07 16:50) [8]

> Поросенок Винни-Пух  (07.11.2008 14:48:03)  [3]

В этом одном населенном пункте надо озаботиться об смене модема, на другую фирму.


 
Anatoly Podgoretsky ©   (2008-11-07 16:51) [9]

> Сергей М.  (07.11.2008 16:27:07)  [7]

То же дело.


 
Поросенок Винни-Пух ©   (2008-11-07 17:08) [10]

Нагель - это из этой оперы?

procedure TIdTCPConnection.WriteBuffer(const ABuffer; AByteCount: Integer;
 const AWriteNow: boolean = false);


 
Сергей М. ©   (2008-11-07 19:27) [11]


> Поросенок Винни-Пух ©   (07.11.08 17:08) [10]


Не-а ..

Нагель - это Get/SetSockOpt(..TCP_NODELAY..)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.003 c
15-1276098991
KilkennyCat
2010-06-09 19:56
2010.09.05
Наши компоненты.


2-1276076418
user_online
2010-06-09 13:40
2010.09.05
Как зафиксировать данные в поле Edit


2-1275991560
Cannon
2010-06-08 14:06
2010.09.05
Авторизация


6-1225550596
Andrey_
2008-11-01 17:43
2010.09.05
TIdHTTP


2-1276153349
Sergey2
2010-06-10 11:02
2010.09.05
длина запроса в AdoQuery.sql.text





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский