itmo_conspects

Лекция 5. Стек TCP/IP

Стеком TCP/IP называют набор упорядоченных сетевых протоколов. Он был назван в честь двух широкораспространенных протоколов:

Стек TCP/IP является открытым и платформонезависимым, поэтому он получил такое широкое распространение

В 1967 году начался проект ARPA (Advanced Research Projects Agency), в 1972 году появился ARPANET - сеть, соединявшая 30 узлов. В 1980-1981 годах были опубликованы в рамках работы протоколы IP, TCP, UDP

Далее TCP/IP был переработан из монолитной архитектуры в слоенную (наподобие модели OSI), а его реализация была включена в операционную систему BSD

Так как BSD распространялась в университетах, стек TCP/IP получил распространение в университетах. К концу 80-ых годов ARPANET стала называется Internet (Interconnected networks) и объединяла университеты и научные центры США, Канады, Европы

В 1992 появляется WWW, World Wide Web, основанный на протоколе HTTP

В стек TCP/IP входят 4 уровня:

Уровни TCP/IP

На транспортном уровне в основном используются два протокола:

Сейчас стек TCP/IP развивается благодаря комитету IETF (Internet Engineering Task Force, Инженерный совет Интернета) и документа RFC (Request for Comments)

В стеке TCP/IP адресация установлена на разных уровнях

Уровень Адрес Пример
Прикладной Доменное имя из DNS itmo.ru
Транспортный Номер порта TCP или UDP 443
Сетевой IP-адрес 192.0.2.227
Канальный MAC-адрес 16:52:91:ff:13:c4

Рассмотрим механизм установления соединения, например, при доступе к сайту google.com

  1. Для начала компьютеру с браузером и серверу Google назначаются IP-адреса, пусть это будут 198.18.55.205 и 203.0.113.209. Так как браузер использует TCP, то на сервере будет открыт порт TCP 80, которые в операционной системе привязан к веб-приложению

  2. Далее при отправке запроса браузер запрашивает случайный свободный порт у ОС выше 1024, пусть это будет 29384

  3. Библиотека, реализующая TCP, формирует пакет и включает в него порты отправителя 29384 и получателя 80
  4. Библиотека, реализующая IP, формирует пакет и включает в него адреса 198.18.55.205 и 203.0.113.209
  5. Далее пакет идет по протоколу Ethernet на сервер, там обрабатывается, аналогично формируется ответ на основе заголовков пришедшего пакета и отправляется обратно
  6. После этого браузер получает пакет от сервера и отправляет еще один, заключив тем самым тройное рукопожатие и устойчивое соединение
  7. Теперь в пакете можно передавать данные

Заметим, что у клиента порт случайный, а у сервера заранее был известен


В протоколе IP есть возможность указать тип рассылки:

Cast types

Долгое время популярным остается четвертая версия протокола IP - IPv4. IPv4-адрес состоит из 4 байтов (октетов) и записываются так: W.X.Y.Z, где W, X, Y, Z - числа от 0 до 255

Таким образом, пространство IPv4 адресов занимает 2^32 адресов (около 4 миллиардов)

Адрес делится на две части - адрес сети, до которой пакет надо доставить, и адрес конкретного узла внутри сети

Адреса делятся двумя способами:

Также существуют специальные IP-адреса

Еще были зарезервированы несколько диапазонов адресов классов A, B и С, которые не маршрутизированы в Интернет. Такие адреса называют частными или серыми:

Еще существует маска “wildcard mask” - 4 байта, с помощью которых можно настроить фильтрацию трафика на специальные адреса. В этой маске 0 значит, что разряд в адресе получателя должен совпадать с разрядом адреса-образца


Количество IPv4-адресов мало, поэтому появился IPv6

Адрес IPv6 представляет собой 128 бит, записанных в формате x:x:x:x:x:x:x:x, например, 2001:0DB8:00AF:ABCD:0000:0000:0000:0034

Ведущие нули при этом убирают, а группы нулей сокращают до ::: 2001:DB8:AF:ABCD::0034

В IPv6 есть только префиксные маски, по умолчанию префикс - 64

Типы адресов делятся на:

Адресов для широковещания нет, чтобы снизить нагрузку на сеть

Также специальные адреса: