Отправка по TCP

Отправка по TCP

Приняв все вышеизложенные термины и определения, посмотрим на рис. 2.15, где показано, что происходит, когда приложение записывает данные в сокет TCP.

Рис. 2.15. Этапы записи данных в сокет TCP и буферы, используемые при этой записи

У каждого сокета TCP есть буфер отправки, и мы можем изменять размер этого буфера с помощью параметра сокета SO_SNDBUF (см. раздел 7.5). Когда приложение вызывает функцию write, ядро копирует данные из буфера приложения в буфер отправки сокета. Если для всех данных приложения недостаточно места в буфере сокета (либо буфер приложения больше буфера отправки сокета, либо в буфере отправки сокета уже имеются данные), процесс приостанавливается (переходит в состояние ожидания). Подразумевается, что мы используем обычный блокируемый сокет (о неблокируемых сокетах мы поговорим в главе 15). Ядро возвращает управление из функции write только после того, как последний байт в буфере приложения будет скопирован в буфер отправки сокета. Следовательно, успешное возвращение управления из функции write в сокет TCP говорит нам лишь о том, что мы можем снова использовать наш буфер приложения. Оно не говорит о том, получил ли собеседник отправленные данные или получило ли их приложение-адресат (более подробно мы рассмотрим это при описании параметра сокета SO_LINGER в разделе 7.5).

TCP помещает данные в буфер отправки сокета и отправляет их собеседнику TCP, основываясь на всех правилах передачи данных TCP (главы 19 и 20 [111]). Собеседник TCP должен подтвердить данные, и только когда от него придет сегмент ACK, подтверждающий прием данных, наш TCP сможет удалить подтвержденные данные из буфера отправки сокета. TCP должен хранить копию данных, пока их прием не будет подтвержден адресатом.

TCP отправляет данные IP порциями размером MSS или меньше, добавляя свой заголовок TCP к каждому сегменту. Здесь MSS — это значение, анонсированное собеседником, или 536, если собеседник не указал значения для MSS. IP добавляет свой заголовок, ищет в таблице маршрутизации IP-адрес назначения (соответствующая запись в таблице маршрутизации задает исходящий интерфейс, то есть интерфейс для исходящих пакетов) и передает дейтаграмму на соответствующий канальный уровень. IP может выполнить фрагментацию перед передачей дейтаграммы, но, как мы отмечали выше, одна из целей параметра MSS — не допустить фрагментации; а более новые реализации также используют обнаружение транспортной MTU. У каждого канального соединения имеется очередь вывода, и если она заполнена, пакет игнорируется, и вверх по стеку протоколов возвращается ошибка: от канального уровня к IP и затем от IP к TCP. TCP учтет эту ошибку и попытается отправить сегмент позже. Приложение не информируется об этом временном состоянии.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Отправка SMS

Из книги Компьютер + мобильник: эффективное взаимодействие автора Гольцман Виктор Иосифович

Отправка SMS Набирать текст коротких сообщений на клавиатуре компьютера гораздо удобнее, чем на телефоне. Поэтому, находясь рядом со своим компьютером, можно этим воспользоваться. После нажатия кнопки Отправить SMS в главном окне программы на экране компьютера появляется


Отправка сообщений

Из книги Skype: бесплатные звонки через Интернет. Начали! автора Гольцман Виктор Иосифович

Отправка сообщений Будем исходить из того, что телефонная книга у вас уже готова и вы знаете, как ею пользоваться. Если нет, то рекомендую прочесть предыдущий подраздел.Итак, нажмите клавишу F3 или выполните команду Сообщения > Редактор SMS. В результате вы увидите окно


Бесплатная отправка MMS

Из книги Популярный самоучитель работы в Интернете автора Кондратьев Геннадий Геннадьевич

Бесплатная отправка MMS MMS (Multimedia Messaging Service, сервис мультимедийных сообщений) – услуга обмена мультимедийными сообщениями, предоставляемая оператором мобильной связи. MMS позволяет передавать голосовые записи, музыку, картинки и фотографии, анимацию, видеофайлы и


Отправка SMS

Из книги 500 лучших программ для Windows автора Уваров Сергей Сергеевич

Отправка SMS Все давно уже привыкли к SMS. В программе Skype сообщения посылаются не только с помощью чата, существует специальная функция отправки SMS. Однако это возможно только для тех контактов, которые содержат номера мобильных телефонов. Для того чтобы иметь возможность


Отправка почты

Из книги Интернет – легко и просто! автора Александров Егор

Отправка почты Как мы уже знаем, отправить письмо можно разными способами: ответив на сообщение, переслав письмо и создав новое. Рассмотрим эти варианты.Ответ на письмоЕсли вы получили письмо и горите желанием немедленно ответить, то выделите его (в области содержимого


Отправка SMS

Из книги Самоучитель Skype. Бесплатная связь через Интернет автора Яковлева Е. С.

Отправка SMS Наличие сотовой связи — несомненный плюс современной жизни. Однако, имея компьютер и доступ в Сеть, можно отправлять SMS на мобильные телефоны с помощью Интернета и некоторых рассматриваемых в этом разделе программ.SMS-ka Производитель Тип ОС Язык Размер,


Отправка сообщений

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Отправка сообщений Если письмо еще не написано, то необходимо нажать кнопку Создать сообщение на панели инструментов. Откроется новое окно (рис. 5.4). Рис. 5.4. Создание сообщения.В поля Кому и (или) Копия следует ввести адреса всех получателей электронной почты, разделяя их


Отправка SMS-сообщений

Из книги Социальные сети без страха для тех, кому за... автора Виннер Марина

Отправка SMS-сообщений Отправка SMS-сообщений на номера SkypeОтправлять SMS-сообщения можно только из версии Skype 2.5. Если на вашем компьютере установлена более ранняя версия Skype, загрузите Skype 2.5. Разумеется, бесплатно!Чтобы отправлять SMS-сообщения из Skype, вы должны внести деньги


4.1.4. Отправка почты

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

4.1.4. Отправка почты Прежде чем отправить почту, необходимо сообщение создать и подготовить для отправки. Создать сообщение можно с нуля, а можно на основе полученного письма.Создание нового письмаДля создания письма с нуля используется кнопка Новое сообщение (New Message),


Отправка писем

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард


15.1. Отправка уведомлений

Из книги автора

15.1. Отправка уведомлений Постановка задачи Требуется разграничить части вашего приложения и отправить уведомление, которое может быть подхвачено другим компонентом


Отправка по TCP

Из книги автора

Отправка по TCP Приняв все вышеизложенные термины и определения, посмотрим на рис. 2.15, где показано, что происходит, когда приложение записывает данные в сокет TCP. Рис. 2.15. Этапы записи данных в сокет TCP и буферы, используемые при этой записиУ каждого сокета TCP есть буфер


Отправка по SCRIPT

Из книги автора

Отправка по SCRIPT На рис. 2.17 показан процесс записи данных в сокет SCRIPT. Рис. 2.17. Отправка данных через сокет SCRIPTДля обеспечения надежности в SCRIPT предусмотрен буфер отправки. Приложение может менять размер этого буфера при помощи параметра сокета SO_SNDBUF (см. раздел 7.5), как и


21.10. Отправка и получение

Из книги автора

21.10. Отправка и получение Программа для получения анонсов сеанса многоадресной передачи, показанная в предыдущем разделе, могла только получать дейтаграммы многоадресной передачи. Теперь мы создадим простую программу, способную и отправлять, и получать дейтаграммы


Отправка с минимальной MTU

Из книги автора

Отправка с минимальной MTU При работе в режиме детектирования транспортной MTU пакеты фрагментируются по MTU исходящего интерфейса или по транспортной MTU в зависимости от того, какое значение оказывается меньше. IPv6 требует минимального значения MTU 1280 байт. Это значение