Концепция tcp/ip
TCP/IP – transmission control protocol/ internet protocol – промышленный стандарт стека протоколов, разработанный для глобальной сети. Стандарты этого стека опубликованы в серии документов, получивших название RFC – request for comment, описывающих внутреннюю работу сети интернет. Этот стек был разработан по заказу министерства обороны США в конце 60-х годов для связи экспериментальной сети ARPAnet с другими сетями, как набор общих протоколов для разнородной вычислительной среды. Большой вклад в практическую реализацию этого стека внес университет Бэркли, реализовав протоколы этого стека в своей ОС Unix. Ведущую роль этого стека объясняется следующими свойствами:
Наиболее завершенный стандартный и популярный стек сетевых протоколов с многолетней историей
Практически все сети передают основную часть своего трафика с помощью протоколов этого стека.
Все современные ОС поддерживают этот стек
Он предоставляет гибкую технологию для соединения разнородных систем, как на уровне транспортных подсистем, так и на уровне прикладных приложений
OSI |
Описание уровня |
TCP/IP |
7, 6 |
Прикладной – на этом уровне располагаются протоколы и сервисы прикладного уровня – FTP (протокол передачи данных), telnet (протокол удаленного терминала), SMTP (почтовый протокол), гипертекстовые, HTTP и проч |
1 |
5, 4 |
Основной – представлен TCP и UDP |
2 |
3 |
Межсетевого взаимодействия – занимается передачей пакетов с использованием различных транспортных технологий локальных сетей, территориальных сетей, линий специальной связи и так далее. Основной протокол – IP. Изначально он проектировался как протокол передачи пакетов в составных сетях, состоящих из большого количества локальных сетей, объединенных как локальными, так и глобальными связями. К этому уровню так же относятся протоколы, занимающиеся составлением и идентификацией таблиц маршрутизации. RIP – самый просто и неэффективный протокол, протокол OSPF – развитие RIP, протокол ARP/RARD, ICMP – протокол управления сетью. |
3 |
2, 1 |
Физический – поддерживает все используемые протоколы физического уровня (Ethernet, token ring, FDDI и т.д.) |
4 |
Формат заголовка IP
Описан в RFC-791
Поле версии
Version 4 бита – показывает версию протокола (почти всегда – IP 4 верссии)
IHL 4 бита – длина заголовка (длина заголовка переменная) измеряется в словах по 32 бита и фактически указывает на начало блока данных от начала пакета. Минимальная длина корректного пакета – 5 слов, 160 бит.
Type of Service 8 бит – поле типа сервиса, с помощью отдельных параметров определяет тип требуемого обслуживания, то есть фактически управляет выбором рабочих характеристик при передаче пакетов через сеть. Здесь используется по-битовое кодирование, то есть каждый бит отвечает за свой параметр
Total Length 16 бит – общая длина пакета – измеряется в байтах. Как правило, пакеты 536 байт.
Identification 16 бит – устанавливает поле отправителем для сборки фрагментов отдельной датаграммы.
Flags 16 бит – различные управляющие флаги.
Fragment offset 13 бит – смещение объекта- используется для дефрагментации на сетевом уровне. Показывает, где в исходной датаграмме находится пересылаемой в данном пакете фрагмент. Смещение этого фрагмента изменяется порциями по 8 байт, первый фрагмент имеет смещение 0.
Time to Live (TTL) 8 бит – время жизни пакета в сети. Если значение этого поля 0, то пакет подлежит уничтожению. Фактически это поле измеряется в количестве переходов между маршрутизаторами до места назначения.
Protocol 8 бит – код протокола следующего уровня. Например 1 – ICMP. 6 – TCP, 17 – UDP и тому подобное.
Headex Checksum 16 бит – контрольная сумма заголовка. Наличие таких полей, как флаги, ТТЛ (поля, которые могут изменяться) заставляет пересчитывать контрольную сумму в каждом маршрутизаторе.
Source Address 32 бита – адрес источника
Destination Address 32 бита – адрес приемника
Options – поле опции (поле переменной длины, его может не быть). Оно решает разные задачи: указать точный маршрут по маршрутизаторам, можно фиксировать пройденные маршрутизаторы, обеспечивать безопасность и так далее. Может изменяться в процессе передачи.
Padding – поле выравнивания длинны заголовка до 4-х битово кратной границы – забивает 0 (тоже поле переменной длины)
Заголовок протокола UDP
Порт – абстракция, с помощью которой осуществляется взаимодействие между прикладными процессами и протоколами транспортного уровня.
Рисунок 6
Номер порта содержит 2 байта
Диапазон памяти для обмена данными
Многие общеизвестные прикладные сервисы и службы имеют фиксированные номера портов. Например: telnet работает с 21 портом, SNMP со 161 портом.
Протокол UDP – взаимодействие между прикладным уровнем и транспортным. В заголовке данного протокола используются:
Порт отправителя 16 бит
Порт получателя 16 бит
Длина пакета 16 бит
Контрольная сумма 16 бит
Рисунок 7
Прикладной процесс характеризуется только совокупностью IP-адрес + порт. Эта совокупность называется соккет.
Контрольное суммирование в протоколе UDP:
Когда модуль UDP получает датаграмму от модуля IP, он проверяет контрольную сумму, содержащуюся в ее заголовке. Если контрольная сумма равно 0, то значит отправитель ее не подсчитывал и ее можно игнорировать. Это допустимо в случае, если узлы взаимодействуют через единую сеть Ethernet. Если контрольная сумма правильная или равна 0, то проверяется порт получателя. Если к этому порту подключен прикладной процесс, то это сообщение ставится в очередь для прочтения. В противном случае этот пакет отбрасывается. Если пакеты поступают быстрее, чем их успевает обработать прикладной процесс и очередь сообщений переполняется, то вновь поступающие пакеты так же отбрасываются.
