Я читаю раздел TCP PUSH в Руководстве по TCP/IP, и у меня есть вопрос по этому пункту:
Важно понимать, что функция push только вызывает немедленную доставку данных. Это не меняет того факта, что TCP не предоставляет границ между элементами данных. Может показаться, что приложение может отправить одну запись данных и затем «протолкнуть» ее получателю; затем отправьте вторую запись и «нажмите», и так далее. Однако приложение не может предположить, что, поскольку оно устанавливает бит PSH для каждого фрагмента данных, которое оно передает TCP, каждый фрагмент данных будет находиться в одном сегменте. Возможно, что первый «push» может содержать данные, переданные ранее TCP, которые еще не были переданы, и также возможно, что две «вытолкнутые» таким образом записи могут в любом случае оказаться в одном и том же сегменте.
У меня вопрос к последнему предложению с курсивом, как данные могут быть переданы в TCP раньше, с установленным флагом PSH, но не передаваться? Разве с установленным флагом PSH сразу не сбрасываются буферы?