Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как синхронизируется протокол http...

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Jolik



Зарегистрирован: 31.03.2004
Сообщения: 56

СообщениеДобавлено: Вс Авг 29 2010 02:05    Заголовок сообщения: Как синхронизируется протокол http... Ответить с цитатой

... потребовалось сделать простой http сервер для обмена данными (чтобы пакеты без проблем ходили через маршрутизаторы).
Возник вопрос - а как сервер "узнает", что запрос от клиента поступил полностью? Или он считает, что все что приходит от клиента - это один запрос.
Поясню: вот сидит сервер, слушает порт. Пошли данные... Исходя из принципов TCP/IP - данные приходят частями и размер их в TCP определить не возможно. Так вот идут данные, мы их принимаем, принимаем, принимаем... и складываем в некоторый буфер. А как узнать, что все, данные закончились? По тайм ауту? А вдруг канал слабый и пакет где нить задержался? А вдруг на той стороне злоумышленник? И льет данные и льет...

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

Проясните, если кто может...
Заранее благодарен!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
alex1983-0112



Зарегистрирован: 22.08.2006
Сообщения: 46
Откуда: г. Семенов Нижегородская обл.

СообщениеДобавлено: Пн Авг 30 2010 19:34    Заголовок сообщения: Re: Как синхронизируется протокол http... Ответить с цитатой

Jolik писал(а):
... потребовалось сделать простой http сервер для обмена данными (чтобы пакеты без проблем ходили через маршрутизаторы).

http-серверу, как и http клиенту и знать ничего не надо о маршрутизации - это не его забота, а забота протоколов, что идут ниже прикладного уровня.

Jolik писал(а):

Возник вопрос - а как сервер "узнает", что запрос от клиента поступил полностью? Или он считает, что все что приходит от клиента - это один запрос.


Есть специальные управляющие символы "\r\n", плюс к этому поля уже самого протокола(Content-Length) - по ним определяется.



А вообще по http есть rfc - http://www.w3.org/Protocols/rfc2616/rfc2616.html - его стоит почитать.
_________________
#define TRUE FALSE// счастливой отладки
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Пн Авг 30 2010 22:37    Заголовок сообщения: Ответить с цитатой

Тебе самому надо придумать что является началом полезных данных, а что концом. Эти данные должны передаваться клиентом и приниматься сервером. Если используется передача по TCP, то функция чтения данных вернет либо положительное значение (и в буфере будут полезные данные), либо код ошибки (например разрыв соединения по тайм-ауту). Как доставлять пакет, как проверять не убилось ли чего по дороге - не твоя забота, этим операционная система будет заниматься.

Если будешь использовать UDP, то придется каждый пакет подписывать контрольной суммой или придумывать какие-то другие правила проверки правильности передачи данных, следить за тайм-аутами и прочими вещами.

Написание сетевых приложений несколько меняет привычную логику программирования, которая хорошо подходит для локальных компьютеров. Приходится думать не линейно, а с учетом событий. Отправка пакета - событие, прием пакета - событие, разница между приемом и передачей - событие. Чем раньше вы в это ведите, тем быстрее хороший софт писать научитесь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
VeL



Зарегистрирован: 18.01.2006
Сообщения: 521
Откуда: Харьков

СообщениеДобавлено: Вт Авг 31 2010 14:01    Заголовок сообщения: а как в проге которая работает по HTTP сделать авторизацию? Ответить с цитатой

Я вот тоже решил по практиковаться с С++ и написать WEB интерфейс к программе.

Меня вот интересует как в программе которая работает по HTTP сделать авторизацию?
Как я себе это представляю, допустим пост запросом передаем переменные логина и пароля, сервер их проверяет, а потом генерит случайную последовательность символов, которую записываем в куки а потом просто проверяем эту запись? Чтот мне как то кажется что это плохой вариант.

На PHP допустим там все просто, там есть механизм сессий, который реализуется на стороне клиента, а вот как он реализован?

Как вообще делают механизм авторизации допустим в таких приложениях как CUPS, SWAT (эти приложения же сами работают с http и веб сервер для них не нужен) которые имеют WEB интерфейс?
_________________
Best regards
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Вт Авг 31 2010 22:40    Заголовок сообщения: Ответить с цитатой

Как-то эта... Путаем HTTP (протокол) и PHP (язык программирования).

В интернете про написание приложений полно примеров. Не надо изобретать велосипед, по крайне мере до тех пор, пока не ознакомитесь с уже существующими моделями.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
VeL



Зарегистрирован: 18.01.2006
Сообщения: 521
Откуда: Харьков

СообщениеДобавлено: Ср Сен 01 2010 18:27    Заголовок сообщения: Ответить с цитатой

Так вот как раз и пытаюсь понять как работает существующая модель.
Да, и в инете везде приводятся примеры авторизации для клиентской программы, как ей отправить пост запрос с формы, а мне нужно реализовать серверную часть.
Т.е. когда сервер получил этот запрос. Потом он его парсит, потом проверяет переданные переменные на предмет правильности логина и пароля. Допустим сервер проверил логин и пароль, они оказались правильными, и сервер в ответ прислал основную страничку сайта.

Ми эту страничку после этоо в браузере увидели.
Дальше допустим кликает на другую ссылку нашего сайта.
Как после этого сервер узнает что браузер уже прошел авторизацию?
_________________
Best regards
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...