Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на билеты (полные).docx
Скачиваний:
15
Добавлен:
11.07.2024
Размер:
437.23 Кб
Скачать

1. Понятие модульного программирования. Цель и принципы.

Модуль в программировании представляет собой функционально законченный фрагмент программы, оформленный в виде отдельного файла с исходным кодом, предназначенный для использования в других программах. Модули позволяют разбивать сложные задачи на более мелкие в соответствии с принципом модульности.

Принципы.

  • каждый модуль имеет единственную точку входа и выхода;

  • размер модуля по возможности должен быть минимизирован;

  • вся система построена из модулей;

  • каждый модуль не зависит от того, как реализованы другие модули.

2. Коротко дайте формат сегмента протокола tcp. Что содержится в поле ack? Коротко дайте суть процедуры трехстороннего рукопожатия. Seq выбирается ос случайно? Применяется адаптивный timeout или нет?

Формат сегмента:

Это поток 32битных слов (мы всегда работаем словом), он состоит из:

- исходного порта (source port),

- destination port (порт TCP – номер почтового ящика, по которому хранится адрес процесса, который будет запускаться),

- sequence number (последовательный номер – поле, которое содержит номер первого байта, с которого начинается сообщение. Если сообщение фрагментировано, то TCP использует последовательные номера, чтобы потом пересобрать и создать на приемном канале весь сегмент.),

- номер подтверждения (acknowledgement number – последовательный номер следующего байта данных, которых источник предполагает получить. Если принимающий пакет несет 40 байт информации с номером подтверждения 0, то номер подтверждения = 40. Мы намерены получить 40 байт),

- смещение (offset – количество 32битных слов в заголовке),

- флаги (flags – контрольная информация для установки соединения и контроля задания приоритетов). Есть urgent флаг – поинтер на то, что это поле срочного пакета (поставь меня в очередь буферу, но с высоким приоритетом), есть флаг push – отправляет на немедленную отсылку (поставь меня первым в буфере), есть флаг reset – необходимо переустановить соединение, есть флаг syn («син») – начинаем соединение, есть флаг fin – не имеем больше информации, нечего передавать

- контрольная сумма

- sliding window – число байт, которые принимаем или передаем в текущий момент. Договариваемся о размерах этого самого окна

- дополнительные опции, которые говорят, как мы контролируем пересылку сверхважной информации (например, максимальный размер сегмента)

Что содержится в поле АСК?

ACK - Acknowledgement number. Это номер подтверждения. Содержится там номер следующего байта данных, которых источник предполагает получить.

Коротко дайте суть процедуры трехстороннего рукопожатия.

При начале и конце соединения. У них есть специальная процедура «рукопожатие TCP», оно трехстороннее. У нас «сэк» (sequence number) выбирается случайно, acknowledgement number я не знаю, и я отправляю сегмент (например от станции к серверу). Сервер говорит «я понял, ты 730 байт, якобы, мне передавал, теперь я жду 731-го, и у меня в «эке» (acknowledgement number) будет 731, а в «сэке» будет случайное значение (например 431) - это процесс рукопожатия – и отправляю соответствующий сегмент станции». Станция говорит: «хорошо, я понял, я теперь буду принимать «эк» с 431-го, а «сэк» будет 731-й. я снова тебе отправляю «эк» 431, «сэк» 731, ты меняешь местами «эк» 731, «сэк» 431 на сервере, а на станции, наоборот, «эк» 431, «сэк» 731. Все, установили рукопожатие».

SEQ выбирается ОС случайно?

Изначально сэк выбирается случайно.

Применяется адаптивный timeout или нет?

Применяется.