Другие языки программирования и технологии

Вопрос о сети. Как отправитель узнает получил ли пакет получатель?

Хост А отправляет другому хосту В пакет. Как хост А узнает что к хосту В вообще дошел пакет. Если не ошибаюсь, то при получении пакета хост В сразу шлет ответ с контрольной суммой. А если пакет вообще не пришел?? То А отсылает пакет заново, не дождавшись ответа от В?? Так получается? Заранее спасибо.
Зависит от используемого протокола.
в случае UDP - никакой проверки нет. . отправили пакет и забыли.
в случае TCP, после установки соединения (туннеля) происходит следующее:
При обмене данными приемник использует номер последовательности, содержащийся в получаемых сегментах, для восстановления их исходного порядка. Приемник уведомляет передающую сторону о номере последовательности, до которой он успешно получил данные, включая его в поле «номер подтверждения» . Все получаемые данные, относящиеся к промежутку подтвержденных последовательностей, игнорируются. Если полученный сегмент содержит номер последовательности больший, чем ожидаемый, то данные из сегмента буферизируются, но номер подтвержденной последовательности не изменяется. Если впоследствии будет принят сегмент, относящийся к ожидаемому номеру последовательности, то порядок данных будет автоматически восстановлен исходя из номеров последовательностей в сегментах.
Для того, чтобы передающая сторона не отправляла данные интенсивнее, чем их может обработать приемник, TCP содержит средства управления потоком. Для этого используется поле «окно» . В сегментах, направляемых от приемника передающей стороне в поле «окно» указывается текущий размер приемного буфера. Передающая сторона сохраняет размер окна и отправляет данных не более, чем указал приемник. Если приемник указал нулевой размер окна, то передача данных в направлении этого узла не происходит, до тех пор пока приемник не сообщит о большем размере окна.
В некоторых случаях передающее приложение может явно затребовать протолкнуть данные до некоторой последовательности принимающему приложению, не буферизируя их. Для этого используется флаг PSH. Если в полученном сегменте обнаруживается флаг PSH, то реализация TCP отдает все буферизированные на текущий момент данные принимающему приложению. «Проталкивание» используется, например, в интерактивных приложениях. В сетевых терминалах нет смысла ожидать ввода пользователя после того, как он закончил набирать команду. Поэтому последний сегмент, содержащий команду, обязан содержать флаг PSH, чтобы приложение на принимающей стороне смогло начать её выполнение.
EN
Erlan Niyazbekov
80 350
Лучший ответ
ты когда нибудь слышал термины:
32х битный интернет
и пинг
что это значит:
это значит что хост А разбивает пакет
на части каждая из которых весит 32 бита
и отправляет первый пакет
при получении 32 битного пакета хост В
отправляет отчет хосту А о получении
после чего хост А
отправляет второй пакет
размером 32 бита
и так далее
зачем это надо:
в интернете есть как и на дороге пробки
и скорость переправки 32 битнаго пакета
и возвращение отчета о получении
зависит от загружености сети.
вот это время туда и обратно
называется ПИНГ
чем ПИНГ больше
тем хуже.
некоторые програмы при большом пинге
вообще прикрашают работу с хостом В.
Олег Сабанцев
Олег Сабанцев
26 235
Erlan Niyazbekov "32х битный интернет
и пинг
что это значит:
это значит что хост А разбивает пакет
на части каждая из которых весит 32 бита
и отправляет первый пакет "

бр.. советую, все же, почитать основы.. в интернете нет понятия "32х битности"..
по умолчанию пингуется 32 байтами, но это можно менять
Олег Сабанцев трафик считают битами
интернет 32 битный
так как информация передается количеством сигналов
а не комичеством текста
откуда и идут все измерения типа Мега Бит .\секунда
ГигаГерц = 1ГигаБит \Секунда
Олег Сабанцев упс...
кажется я обкакался
По идее, если ты отправляешь, то, чтобы узнать, получил ли я, мне надо отправить тебе пакет, а тогда уже я отправитель и так до бесконечности.

Ответ: Никак.
Сделай таймаут. Если не последовало ответа в течении n секунд - значит пакет не пришел (или пришел, но хост В не смог ответить по каким-то причинам)
AA
Abdugafar Azimov
1 179