
- •1. Классификация сетей связи по типу коммутации, протяженности и топологии (Лекция 1)
- •2. Основные стандартизирующие организации в области сетей передачи данных (Лекция 2)
- •3. Сетевые модели. Инкапсуляция и декапсуляция данных (Лекция 3)
- •4. Эталонная модель osi и стек протоколов tcp/ip (Лекция 3)
- •5. Физический уровень модели osi (Лекция 4) тут затрону все уровни и буду ссылаться сюда при необходимости
- •6. Канальный уровень модели osi. Определение начала и конца сообщения (Лекция 5)
- •7. Канальный уровень модели osi. Обнаружение и исправление ошибок (Лекция 5)
- •8. Основы технологии Ethernet. Формат кадра Ethernet (Лекция 6)
- •10. Метод csma/cd (Лекция 8)
- •11. Коммутируемый Ethernet (Лекция 9)
- •12. Виртуальные локальные сети vlan (Лекция 10)
- •13. Протокол stp (Лекция 11)
- •14. Основы технологии Wi-Fi (Лекция 12)
- •15. Метод csma/ca (Лекция 13)
- •16. Формат кадра 802.11 (Лекция 14)
- •17. Услуги Wi-Fi (Лекция 15)
- •18. Сетевой уровень модели osi (Лекция 16)
- •19. IPv4 адресация (Лекция 17)
- •20. Формат заголовка iPv4 (Лекция 18)
- •20. Формат заголовка iPv4 (Лекция 18)
- •21. Маршрутизация в ip сети (Лекция 19)
- •22. Протокол dhcp (Лекция 21)
- •23. Протокол arp (Лекция 21)
- •24. Протокол icmp (Лекция 21)
- •25. Транспортный уровень модели osi (Лекция 22)
- •26. Протокол udp (Лекция 23)
- •27. Протокол tcp. Обеспечение надежности доставки данных (Лекция 24)
- •28. Формат заголовка tcp (Лекция 25)
- •29. Управление потоком в tcp (Лекция 25)
28. Формат заголовка tcp (Лекция 25)
Порт отправителя и порт получателя – порты, это адреса на транспортном уровне, они позволяют определить, какому приложению предназначен сегмент.
Порядковый номер:
TCP получает от вышестоящего уровня поток байт и делит его на сегменты. TCP нумерует байты в потоке и в этом поле содержится первый номер байта в сегменте (например, байт 1000, байт 2460 и т.д.)
Чтобы поместиться в формат кадра Ethernet, сегменты в TCP обычно по 1460 байт:
Номер подтверждения:
Отправитель передает сегмент с указанием номера последовательности (первый байт 1000, последний 2459). Получатель отправляет сегмент с подтверждением, в котором говорит, какие данные получены и какой байт ждет следующим.
Длина заголовка – учитывает общую длину заголовка TCP с обязательными полями и необязательными.
Серая область: 3 зарезервированных бита, которые не используются.
Далее 9 полей флагов:
Флаги NS, CWR и ECE используются для управления перегрузкой.
URG – указывает на то, что в сегменте есть срочные данные, которые необходимо быстро передать приложению. Используется совместно с полем УКАЗАТЕЛЬ НА СРОЧНЫЕ ДАННЫЕ (в этом поле содержится адрес этих данных) – сейчас не используется.
ACK – используется, если в поле номер подтверждения записаны осмысленные данные, т.е. для подтверждения принятой ранее информации.
PSH – указывает, что полученные данные необходимо сразу полностью передать в приложение без записи в буфер – не используется.
RST и FIN – используются для разрыва соединения.
SYN – используется для установки соединения.
Размер окна – в этом поле получатель указывает сколько данных он может принять. Используется для управление потоком.
Контрольная сумма – используется для проверки правильности.
Параметры:
В Ethernet максимальный размер сегмента 1460 байт. Задается при установке соединения.
29. Управление потоком в tcp (Лекция 25)
В TCP для повышения скорости работы в сетях используют скользящее окно, при этом отправитель передает в сеть большое количество сегментов не дожидаясь подтверждения и эти сегменты хорошо занимают пропускную способность широкого канала. Но что произойдет, если данные получает не высокопроизводительный сервер, а медленное устройство. В этом случае получатель примет несколько сегментов, а остальные будет вынужден отбросить. Задача предотвращения отправки быстрым отправителем слишком большого количества сегментов, которые не могут быть получены медленным получателем (затопление) называется управлением потоком.
Может быть и другая причина затопления:
Связана с тем, что на транспортном уровне мы работаем с приложением.
В отличие от сетевого и канального уровней, где коммутаторы или маршрутизаторы должны обрабатывать данные сразу же, как они пришли и делать это максимально быстро, приложение не обязано читать данные из сети как только они появились.
Данные, пришедшие из сети, записываются в промежуточный буфер, откуда со временем их должно прочитать приложение.
Что произойдет, если приложение эти данные не читает?
В примере буфер почти полностью занят – осталось место только для двух сегментов, а отправитель передал в сеть больше чем 2 сегмента. В результате 2 сегмента примутся, а остальные отбросятся.
Нам нужен механизм, позволяющий получателю сказать, сколько данных он может принять, чтобы отправитель не передавал слишком много данных.
Для этих целей используется поле РАЗМЕР ОКНА в заголовке TCP.
В этом поле отправитель указывает, сколько байт данных он может принять.
Рассмотрим на примере:
Допустим, что размер буфера получателя равен 8 сегментам. Отправитель передает 1 сегмент, он записывается в буфер и получатель передает подтверждение получения этого сегмента. В подтверждении кроме номера следующего ожидаемого байта указывается размер окна (в примере 10220), что соответствует 7 сегментам.
Мы используем сеть Ethernet, где размер кадра 1500 байт. Затем отправитель передает сразу 4 сегмента. Они записываются в буфер, получатель отправляет подтверждение, где указывает новый размер окна (равный 3 сегментам). Допустим, что приложение не читает данные из буфера. Отправитель передает еще 3 сегмента, они записываются в буфер и размер окна становится равным 0. Отправитель делает паузу и ничего не передает.
Приожение читает за это время какие-то данные из буфера и получатель заново отправляет подтверждение и указывает новый размер окна (в примере 2 сегмента свободно). Отправитель передает эти 2 сегмента, которые записываются в буфер.
Если отправитель ждет слишком долго, то может передать сегмент Zero Window Probe – просьба подтвердить, что размер окна все еще равен нулю. Это нужно для того, чтобы убедится, что получатель остается на связи и не произошло ошибок (например, сегмент с новым размером окна мог потеряться по сети).