Серверы с установлением логического соединения
Основным преимуществом использования протокола с установлением логического соединения является простота программирования. В частности, поскольку такой транспортный протокол автоматически решает проблемы потери пакетов и их доставки с нарушением исходного порядка, в серверной программе уже можно не заниматься решением таких проблем. Вместо этого в программе сервера с установлением логического соединения достаточно реализовать только функции управления и использования соединений. Сервер принимает от клиента входящие запросы на установление соединения, а затем передает через это соединение все необходимые данные. Он принимает запросы от клиента и отправляет ответы. И наконец, после завершения сеанса взаимодействия сервер закрывает соединение. Cpmed.ru предлагает услуги: лечение мастита в Москве - узнайте больше. Лучший вариант.
До тех пор, пока соединение остается открытым, надежность работы обеспечивается протоколом TCP. Программное обеспечение этого протокола выполняет повторную передачу потерянных данных, проверяет, получены ли данные без ошибок при передаче и, в случае необходимости, переупорядочивает входящие пакеты. При отправке клиентом запроса программное обеспечение TCP либо выполняет его надежную доставку, либо информирует клиента о том, что соединение разорвано. Аналогичным образом, при разработке сервера можно рассчитывать на то, что программное обеспечение TCP будет надежно доставлять ответы или информировать о том, что доставка невозможна.
Но серверы с установлением логического соединения имеют также и свои недостатки. Проект с установлением логического соединения требует создания отдельного сокета для каждого соединения, тогда как проект без установления логического соединения допускает обмен данными с несколькими хостами через один сокет. Издержки по распределению сокета и управлению соединением могут иметь особое значение, если речь идет об операционной системе, которая должна работать неопределенно долгое время на компьютере с ограниченными ресурсами. Что касается простых приложений, то издержки трехэтапного квитирования, применяемого для установления и прекращения соединения, приводят к тому, что протокол TCP требует больших затрат по сравнению с UDP, которые могут оказаться неоправданными. Наиболее важный недостаток протокола TCP связан с тем, что простаивающее соединение, по которому не проходят пакеты, напрасно потребляет ресурсы. Предположим, что клиентская программа установила соединение с сервером, обменялась с ним несколькими запросами и ответами, а затем завершилась аварийно. Поскольку работа клиентской программы прекратилась преждевременно, она больше не будет отправлять запросы, а в связи с тем, что сервер уже ответил на все запросы, полученные до сих пор, он больше не будет передавать клиенту данные. В такой ситуации возникает проблема, связанная с непроизводительным использованием ресурсов: сервер распределил для соединения в памяти структуры данных (включая буферное пространство), а освободить эти ресурсы невозможно. Напомним, что сервер должен работать неопределенно долгое время. Если подключающиеся к нему клиентские программы будут завершаться аварийно одна за другой, сервер исчерпает все доступные ресурсы (такие как сокеты, буферное пространство и соединения TCP) и в конечном итоге прекратит функционирование.