<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: http клиент/сервер: порядок закрытия соединения</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8300.html</link>
    <description>Привет.&lt;br&gt;&lt;br&gt;Регулируется ли чем (rfc, например) порядок закрытия close(2)&lt;br&gt;транспортных соединений tcp протокола http&lt;br&gt;с целью снижения нагрузки на сетевой стек сервера (FIN_WAIT,CLOSE_WAIT,etc)?&lt;br&gt;Или может просто какие-то де-факто советы есть.&lt;br&gt;&lt;br&gt;Например, последние данные переданы и приняты&lt;br&gt;и соединение должно быть закрыто.&lt;br&gt;В какой-то момент об этом одновременно знают и клиент и сервер.&lt;br&gt;Есть 3 варианта:&lt;br&gt;1) обе стороны асинхронно вызывают close(2);&lt;br&gt;2) клиент ждет read(2) закрытия соединения со стороны сервера&lt;br&gt;   и только после этого вызывает close();&lt;br&gt;3) сервер ждет закрытия соединения клиентом.&lt;br&gt;&lt;br&gt;3-й вариант, конечно, кажется сомнительным,&lt;br&gt;привёл просто как один из возможных.&lt;br&gt;  &lt;br&gt;</description>

<item>
    <title>http клиент/сервер: порядок закрытия соединения (Андрей)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8300.html#6</link>
    <pubDate>Thu, 11 Jun 2009 15:21:10 GMT</pubDate>
    <description>&amp;gt;Да, в прикладном уровне (http) всё расписано. &lt;br&gt;&amp;gt;А меня интересует именно транспорт - tcp. &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;То как вы будете открывать, закрывать соединения и принимать, отсылать пакеты по TCP зависит от протокола который вы реализуете.&lt;br&gt;&lt;br&gt;ALu привёл пример как это сделано в HTTP.&lt;br&gt;Если вы пишите свой web сервер то можно следовать этому RFC.&lt;br&gt;Если вы пишите что-то своё то вам решать как открывать, закрывать, принимать и отсылать.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>http клиент/сервер: порядок закрытия соединения (ALu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8300.html#5</link>
    <pubDate>Thu, 11 Jun 2009 08:53:15 GMT</pubDate>
    <description>&amp;gt;Да, в прикладном уровне (http) всё расписано. &lt;br&gt;&amp;gt;А меня интересует именно транспорт - tcp. &lt;br&gt;&lt;br&gt;Там имеется ввиду именно TCP транспорт. Читайте и не ленитесь.&lt;br&gt;&lt;br&gt;8 Connections&lt;br&gt;&lt;br&gt;8.1 Persistent Connections&lt;br&gt;&lt;br&gt;8.1.1 Purpose&lt;br&gt;&lt;br&gt;   Prior to persistent connections, a separate TCP connection was&lt;br&gt;   established to fetch each URL, increasing the load on HTTP servers&lt;br&gt;   and causing congestion on the Internet. The use of inline images and&lt;br&gt;   other associated data often require a client to make multiple&lt;br&gt;   requests of the same server in a short amount of time. Analysis of&lt;br&gt;   these performance problems and results from a prototype&lt;br&gt;   implementation are available &#091;26&#093; &#091;30&#093;. Implementation experience and&lt;br&gt;   measurements of actual HTTP/1.1 (RFC 2068) implementations show good&lt;br&gt;   results &#091;39&#093;. Alternatives have also been explored, for example,&lt;br&gt;   T/TCP &#091;27&#093;.&lt;br&gt;&lt;br&gt;   Persistent HTTP connections have a number of advantages:&lt;br&gt;&lt;br&gt;      - By opening and closing fewer TCP connections, CPU time is saved&lt;br&gt;        in routers an</description>
</item>

<item>
    <title>http клиент/сервер: порядок закрытия соединения (devcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8300.html#4</link>
    <pubDate>Thu, 11 Jun 2009 08:41:10 GMT</pubDate>
    <description>Да, в прикладном уровне (http) всё расписано.&lt;br&gt;А меня интересует именно транспорт - tcp.&lt;br&gt; &lt;br&gt;</description>
</item>

<item>
    <title>http клиент/сервер: порядок закрытия соединения (ALu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8300.html#3</link>
    <pubDate>Thu, 11 Jun 2009 07:07:54 GMT</pubDate>
    <description>&amp;gt;Привет. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Регулируется ли чем (rfc, например) порядок закрытия close(2) &lt;br&gt;&amp;gt;транспортных соединений tcp протокола http &lt;br&gt;&lt;br&gt;Рекомендуемый порядок работы с соединениями описан в части 8 RFC 2616.&lt;br&gt;Алгоритм таков:&lt;br&gt;&lt;br&gt;1. Сервер принимает соединение&lt;br&gt;2. Сервер ждёт http-запрос в течении тайм-аута. Если тайм-аут наступает - сервер переходит к 6&lt;br&gt;3. Сервер принимает запрос&lt;br&gt;4. Сервер отправляет ответ&lt;br&gt;5. Сервер переходит к 2&lt;br&gt;6. Сервер закрывает соединение&lt;br&gt;&lt;br&gt;&lt;br&gt;Старый, описанный в RFC 1945, подход работал по след. алгоритму&lt;br&gt;&lt;br&gt;1. Сервер принимает соединение&lt;br&gt;2. Сервер принимает запрос&lt;br&gt;3. Сервер отправляет ответ&lt;br&gt;4. Сервер закрывает соединение&lt;br&gt;&lt;br&gt;Т.е. для каждой пары запрос-ответ требовалось создать отдельное TCP-соединение. При использовании нового алгоритма постоянных соединений &lt;br&gt;- уменьшается кол-во TCP соединений&lt;br&gt;- Уменьшается доля служебных пакетов, открывающих/закрывающих соединения&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>http клиент/сервер: порядок закрытия соединения (devcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8300.html#2</link>
    <pubDate>Wed, 10 Jun 2009 04:22:14 GMT</pubDate>
    <description>&amp;gt;Если отправил всё что хотел, закрывай сокет на отправку (shutdown), читай остатки &lt;br&gt;&amp;gt;что присылает другая сторона и жди пока она закроет, или соединение &lt;br&gt;&amp;gt;оборвётся, или сам закрой спустя таймаут. &lt;br&gt;&lt;br&gt;Видимо предлагаете так клиентской стороне действовать.&lt;br&gt;Это только ваши рекомендации или где-то читали?&lt;br&gt;</description>
</item>

<item>
    <title>http клиент/сервер: порядок закрытия соединения (svn)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8300.html#1</link>
    <pubDate>Tue, 09 Jun 2009 18:39:12 GMT</pubDate>
    <description>Если отправил всё что хотел, закрывай сокет на отправку (shutdown), читай остатки что присылает другая сторона и жди пока она закроет, или соединение оборвётся, или сам закрой спустя таймаут.&lt;br&gt;&lt;br&gt;Про http читай соотв RFC там есть keepalive, позволяющий не закрывать соединение между запросами.&lt;br&gt;</description>
</item>

</channel>
</rss>
