Снейдер Эфф. прогр. TCP/IP
kot_, вы как советовали книгу Йон Снейдер "Эффективное программирование TCP/IP". Книга отличная кучу нового узнал, но вот в чем вопрос: (к сожалению не нашел тот топик в котором он уже обсуждался)
На странице 32 Снейдер пишет:
...
"В-третьих, в TCP имеется механизм подтверждений и повторной передачи, который гарантирует, что каждый сегмент когда-то будет доставлен."
...
А на странице 89:
...
"Второе место, в связи с которым имеет смысл говорить о гарантиях, - это само приложение В. Вы поняли, нет гарантий что все данные, отправленные приложением А, дойдут до приложения В. Единственное, что TCP гарантирует приложению В, - доставленные данные пришли в правильном порядке и не испорчены."
...
Я не понял где правда? Или может я написанное понял не правильно?
На самом деле это противоречие кажущиеся - и Снайдер достаточно подробно на нем останавливается - книгу читал давно и под рукой нет, поэтому цитату приводить не буду - но смысл в следующем - действительно механизм подтверждения получения и повторной передачи существует - но сам по себе этот механизм вам не может ГАРАНТИРОВАТЬ доставку - он может гарантировать что при определенных условиях пакет передасться повторно и попытка передачи будет повторятся. В большинстве случаев этого вполне достаточно - но это нельзя назвать гарантией - это механизм подтверждений и повторной передачи. :) - и может быть если оперировать бесконечным временем, то наверняка все пакеты будут доставлены - но это предполагает как минимум вечного клиента и вечного сервера.
udp же полностью полагается на ip, а ip пакеты могут быть проигнорированы промежуточными сетевыми устройствами, по куче временных причин, когда повторная передача может спасти ситуацию, например, переполнение очереди входящих/исходящих пакетов в промежуточном устройстве или нарушение содержимого пакета, в связи с лопнувшим кондёром, или из-за особо крупной вспышки на солнце.
Если тебе поможет, то эта тема поднималась пару дней назад по поводу моей програмки, смотри тута:
To PhantomX Как раз эту тему не мог найти.