Tcp/ip
Содержание:
- The Network Interface Layer
- Сравнение с моделью OSI
- 2021: Уязвимости в стеках TCP/IP затрагивают миллионы промышленных и IoT-устройств
- Что такое протокол TCP?
- Практика¶
- Основные проблемы с сетью в Windows 10
- Контроль ошибок и контроль потока
- Что такое маска адреса (подсеть)
- Уровни стека протоколов TCP/IP
- Что это такое
- Библиография
- Механизмы протокола HTTP
- Уровни
The Network Interface Layer
Network Interface Layer is this layer of the four-layer TCP/IP model. This layer is also called a network access layer. It helps you to defines details of how data should be sent using the network.
It also includes how bits should optically be signaled by hardware devices which directly interfaces with a network medium, like coaxial, optical, coaxial, fiber, or twisted-pair cables.
A network layer is a combination of the data line and defined in the article of OSI reference model. This layer defines how the data should be sent physically through the network. This layer is responsible for the transmission of the data between two devices on the same network.
Сравнение с моделью OSI
Многие сравнивают стек TCP/IP с моделью OSI, но стоит понимать, что между системами существует ряд принципиальных различий.
В OSI различают три начальных уровня – приложения, представления и сеансовый, – когда как в TCP/IP все это выделяется в прикладной уровень.
Ряд экспертов считают, что в первый уровень OSI намного шире и охватывает более широкие проблемы. Некоторые исследователи и вовсе включают первые слои OSI в модель TCP/IP, так как их можно встретить в современных стандартах. Но в большинстве случаев канальный уровень TCP/IP равняется канальному и физическому уровню в OSI.
2021: Уязвимости в стеках TCP/IP затрагивают миллионы промышленных и IoT-устройств
13 апреля 2021 года стало известно о том, что исследователи безопасности из компании ForeScout совместно с экспертами JSOF обнаружили ряд уязвимостей в стеках TCP/IP, затрагивающий миллионы серверов, промышленных и «умных» устройств.
Уязвимости, получившие название NAME:WRECK, связаны с тем, как стеки TCP/IP обрабатывают DNS-трафик. Эксплуатация уязвимостей позволяет вызвать состояние «отказа в обслуживании» (DoS) или удаленно выполнить код (RCE). Таким образом злоумышленники могут отключить целевые устройства или перехватить контроль.
В общей сложности эксперты выявили девять уязвимостей в семи из пятнадцати стеков TCP/IP. Результаты анализа других восьми стеков показали, что FNET, cycloneTCP, uC/TCP-IP, FreeRTOS+TCP, Zephyr и OpenThread безопасно реализуют сжатие сообщений, в то время как Nut/Net и lwIP вовсе не поддерживали сжатие сообщений, и по умолчанию не были уязвимы.
Эксперты сообщили о своих находках разработчикам стеков, однако только FreeBSD, Nucleus NET и NetX получили исправления. IPNet все еще содержит уязвимости NAME:WRECK.
По словам специалистов, хотя выпуск исправлений может показаться обнадеживающим, на самом деле ситуация нет проста. Установка исправлений для «умных» устройств и промышленного оборудования обычно влечет за собой длительный период ожидания, в течение которого производители устройств должны будут интегрировать исправления и выпускать собственные обновления прошивки.
Большая часть оборудования может находится в удаленных местах и не поддерживать механизм обновления прошивки по воздуху (firmware-over-the-air, FOTA). Многие устройства, использующие уязвимые стеки TCP/IP, скорее всего, останутся уязвимыми к атакам в течение многих лет, в то время как другое оборудование может оставаться уязвимым до тех пор, пока оно не будет выведено из эксплуатации, полагают эксперты.
Что такое протокол TCP?
TCP — это протокол транспортного уровня, предоставляющий транспортировку (передачу) потока данных, с необходимостью предварительного установления соединения, благодаря чему гарантирует уверенность в целостности получаемых данных, также выполняет повторный запрос данных в случае потери данных или искажения. Помимо этого протокол TCP отслеживает дублирование пакетов и в случае обнаружения — уничтожает дублирующиеся пакеты. TCP — это аббревиатура от Transmission Control Protocol (Протокол Управления Передачей) — является обязательным протоколом стандарт TCP/IP, определенный в стандарте RFC 793, «Transmission Control Protocol (TCP)».
В отличие от протокола UDP гарантирует целостность передаваемых данных и подтверждения отправителя о результатах передачи. Используется при передаче файлов, где потеря одного пакета может привести к искажению всего файла.
TCP обеспечивает свою надежность благодаря следующему:
- Данные от приложения разбиваются на блоки определенного размера, которые будут отправлены.
- Когда TCP посылает сегмент, он устанавливает таймер, ожидая, что с удаленного конца придет подтверждение на этот сегмент. Если подтверждение не получено по истечении времени, сегмент передается повторно.
- Когда TCP принимает данные от удаленной стороны соединения, он отправляет подтверждение. Это подтверждение не отправляется немедленно, а обычно задерживается на доли секунды
- TCP осуществляет расчет контрольной суммы для своего заголовка и данных. Это контрольная сумма, рассчитываемая на концах соединения, целью которой является выявить любое изменение данных в процессе передачи. Если сегмент прибывает с неверной контрольной суммой, TCP отбрасывает его и подтверждение не генерируется. (Ожидается, что отправитель отработает тайм-аут и осуществит повторную передачу.)
- Так как TCP сегменты передаются в виде IP датаграмм, а IP датаграммы могут прибывать беспорядочно, также беспорядочно могут прибывать и TCP сегменты. После получения данных TCP может по необходимости изменить их последовательность, в результате приложение получает данные в правильном порядке.
- Так как IP датаграмма может быть продублирована, принимающий TCP должен отбрасывать продублированные данные.
- TCP осуществляет контроль потока данных. Каждая сторона TCP соединения имеет определенное пространство буфера. TCP на принимающей стороне позволяет удаленной стороне посылать данные только в том случае, если получатель может поместить их в буфер. Это предотвращает от переполнения буферов медленных хостов быстрыми хостами.
Практика¶
1. Напишите функции для передачи данных с помощью модели TCP/IP от клиента сети.
Каждая функция должна имитировать работу одного из уровней передачи данных.
Используйте заготовку кода ниже:
''' 4 уровень, функция application() - отвечает за формат данных, их шифрование input функции - данные, которые хотим отправить по сети, протокол данных ('SMTP','HTTP','FTP') output: данные + информация про формат данных и шифрование ''' def application (data, protocol): ... ''' 3 уровень, функция transport() - отвечает за способ передачи данных и их транспортировку input: результат работы функции application(), протокол транспортировки данных ('TCP', 'UDP') output: данные + информация про транспортировку''' def transport(data, protocol): ... ''' 2 уровень, функция internet() - отвечает за маршрутизацию в сети. Она ищет кому и как доставить данные input: результат работы функции transport() output: данные + информация про адресата и маршрут доставки''' def internet(data): ... '''1 уровень, функция network_interface - отвечает за соединение с сетью input: результат работы функции internet(), информация о соединении output: кортеж из 2 значений: 1. данные, преобразованные в бинарный формат 2. информация о типе соединения (1 - 'Ethernet', 2 -'Wi-Fi', другие числа - "No connection")''' def network_interface (data, connection): ... data = '01101' print (data) data_app = application(data,'SMTP') print ('application level - ', data_app) data_transport = transport (data_app,'TCP') print ('transport level - ', data_transport) data_ip = internet (data_transport) print ('internet level - ', data_ip) data_from_network = network_interface (data_ip,'Wi-Fi') print ('network_interface level - ', data_from_network)
2. Напишите функции для получения данных из сети клиентом с помощью модели TCP/IP.
Каждая функция должна имитировать работу одного из уровней передачи данных.
Используйте заготовку кода ниже, учтите потери данных:
'''1 уровень, функция network_interface - отвечает за соединение с сетью передаём в функцию 2 аргумента: 1 аргумент, data - это данные в виде бинарного числа 2 аргумент, connection - это тип соединения (1 - 'Ethernet', 2 -'Wi-Fi', другие числа - "No connection") возвращаем: - если удалось установить соединение - то кортеж из 2 значений: данные в виде строки из нулей и единиц и тип соединения - если не удалось установить соединение, то строку "No connection"''' def network_interface(data, connection): ... ''' 2 уровень, функция internet() - отвечает за маршрутизацию в сети. Она ищет кому и как доставить данные передаём в функцию результат работы функции network_interface() возвращаем данные в виде строки, если данные переданы в кортеже и адресованы нам, иначе - передаём None''' def internet(data): ... ''' 3 уровень, функция transport() - отвечает за способ передачи данных и их транспортировку передаём в функцию результат работы функции internet() возвращаем: - если c предыдущего уровня получены данные, то формируем кортеж из 2 значений: данные, протокол передачи - None - если данные не получены''' def transport(data): ... ''' 4 уровень, функция application() - отвечает за формат данных, их расшифровку передаём в функцию результат работы функции transport() возвращаем: ''' def application (data): ... data = 0b110110111 print (bin(data)) data_from_network = network_interface (data,1) print ('network_interface level - ', data_from_network) data_ip = internet (data_from_network) print ('internet level - ', data_ip) data_transport = transport (data_ip) print ('transport level - ', data_transport) data_app = application(data_transport) print ('application level - ', data_app)
Основные проблемы с сетью в Windows 10
Если после установки качественного обновления ваше устройство испытывает проблемы с сетью, некоторые основные действия по устранению неполадок могут помочь вам быстро вернуться в онлайн.
Перезагрузка компьютера
Вы будете удивлены, когда узнаете, что простая перезагрузка может исправить многие проблемы в Windows 10, включая проблемы с сетью.
Чтобы перезагрузить компьютер, выполните следующие действия.
- Откройте Пуск.
- Нажмите кнопку питания.
- Выберите опцию Перезагрузка.
После того, как вы выполните эти шаги, запустите веб-браузер и проверьте, можете ли вы подключиться к Интернету.
Проверка конфигурации сети
Если вы не можете подключиться к Интернету, следующий шаг – убедиться, используя командную строку, что между вашим устройством и маршрутизатором нет проблем с подключением.
Чтобы проверить текущую конфигурацию сети в Windows 10, выполните следующие действия:
Откройте командную строку.
Введите следующую команду, чтобы узнать адрес TCP/IP маршрутизатора, и нажмите Enter:
Обратите внимание на «Основной шлюз», который является адресом вашего локального маршрутизатора.
Совет. Обычно это адрес 192.169.1.1 или 192.168.2.1 , но в зависимости от вашего маршрутизатора, интернет-провайдера (ISP) или если вы обновили настройки вручную, адрес будет другим.
Введите следующую команду, чтобы подтвердить, что маршрутизатор доступен, и нажмите Enter:
В этом примере проверяется соединение с маршрутизатором с адресом 10.0.2.2:
В этой команде не забудьте изменить 10.0.2.2 на IP-адрес вашего маршрутизатора.
Совет: Вы также можете использовать команду ping 127.0.0.1 , чтобы проверить, работает ли сетевой стек на вашем компьютере.
Убедитесь в получении ответа без потери пакетов в выходных данных.. После выполнения этих шагов, если не было потеряно ни одного пакета и вы всё ещё не можете подключиться к Интернету, это может быть проблемой с маршрутизатором или Интернет-провайдером
После выполнения этих шагов, если не было потеряно ни одного пакета и вы всё ещё не можете подключиться к Интернету, это может быть проблемой с маршрутизатором или Интернет-провайдером.
Перезапуск соединения Wi-Fi
Если вы используете ноутбук с беспроводным подключением, проблема может быть связана с адаптером или сигналом, что можно исправить, перезапустив устройство и подключившись к сети:
- Откройте Параметры.
- Нажмите на Сеть и интернет.
- Перейдите в раздел Wi-Fi.
Совет: если раздел Wi-Fi отсутствует, это означает, что Windows 10 не обнаруживает беспроводной адаптер.
- Выключите тумблер Wi-Fi.
- Подождите несколько секунд и вновь включите тумблер Wi-Fi.
- Нажмите Показать доступные сети.
- Выберите беспроводную сеть.
- Нажмите кнопку Подключить.
- Введите беспроводной пароль.
- Нажмите кнопку Далее.
После того, как вы выполните эти шаги, вы сможете подключиться к сети и Интернету.
Если вы подключаетесь к сети с помощью Wi-Fi, вы также можете создать отчет об истории беспроводных подключений, который поможет диагностировать проблему.
Отключение режима полета
Обновление иногда может активировать режим полета без вашего разрешения или вы можете включить его по ошибке. Если вы не можете подключиться к Интернету, убедитесь, что этот режим отключен.
Чтобы отключить режим полета, выполните следующие действия:
- Откройте Параметры.
- Нажмите Сеть и интернет.
- Перейдите к разделу Режим «в самолете».
- Выключите тумблер режима полета.
- (Необязательно) Перезагрузите компьютер.
После выполнения этих шагов, подключение к Интернету должно быть восстановлено.
Перезапуск роутера
В дополнение ко всем основным действиям по устранению неполадок, описанным выше, перезапуск маршрутизатора может также решить многие проблемы с подключением.
Если вы считаете, что проблема заключается в маршрутизаторе, вы можете перезапустить его, выполнив следующие действия:
- Найдите роутер.
- Отключите шнур питания.
- Подождите около 60 секунд.
- Подключите шнур питания.
После выполнения этих действий подождите три-пять минут, чтобы маршрутизатор перезагрузился, и дважды проверьте подключение.
Контроль ошибок и контроль потока
TCP использует номера портов, чтобы узнать, какой процесс приложения ему нужен для передачи сегмента данных. Наряду с этим он использует порядковые номера для синхронизации с удаленным хостом. Все сегменты данных отправляются и принимаются с порядковыми номерами. Отправитель знает, какой последний сегмент данных был принят Получателем, когда он получает ACK. Получатель знает о последнем сегменте, отправленном отправителем, ссылаясь на порядковый номер недавно полученного пакета.
Если порядковый номер недавно полученного сегмента не совпадает с порядковым номером, который ожидал приемник, он отбрасывается и NACK отправляется обратно. Если два сегмента поступают с одинаковым порядковым номером, значение временной метки TCP сравнивается для принятия решения.
Что такое маска адреса (подсеть)
Понятие подсети введено, чтобы можно было выделить часть IP-адресов одной организации, часть другой и тд. Подсеть представляет собой диапазон IP-адресов, которые считаются принадлежащими одной локальной сети. При работе в локальной сети информация пересылается непосредственно получателю. Если данные предназначены компьютеры с IP-адресом, не принадлежащим локальной сети, то к ним применяются специальные правила для вычисления маршрута для пересылки из одной сети в другую.
Маска — это параметр, который сообщает программному обеспечению о том, сколько компьютеров объединено в данную группу (подсеть). Маска адреса имеет такую же структуру как и сам IP-адрес: это набор из четырех групп чисел, каждое из которых может быть в диапазоне от 0 до 255. При этом, чем меньше значение маски, тем больше компьютеров объединено в данную подсеть. Для сетей небольших компаний маска обычно имеет вид 255.255.255.x (например, 255.255.255.224). Маска сети присваивается компьютеру одновременно с IP-адресом. Так, например, сеть 192.168.0.0 с маской 255.255.255.0 может содержать в себе компьютеры с адресами от 192.168.0.1 до 192.168.254. А сеть 192.168.0.0 с маской 255.255.255.128 допускает адреса от 192.168.0.1 до 192.168.0.127. Думаю, смысл понятен. Как правило сети с небольшим возможным числом компьютеров используются провайдерами с целью экономии IP-адресов. Например, клиенту, может быть назначен адрес с маской 255.255.255.252. Такая подсеть содержит в себе только два компьютера.
После того как компьютер получил IP-адрес и ему стало известно значение маски подсети, программа может начать работу в данной локальной подсети. Однако же, чтобы обмениваться информацией с другими компьютерами в глобальной сети, необходимо знать правила, куда пересылать информацию для внешней сети. Для этого служит такая характеристика как адрес шлюза (Gateway).
Уровни стека протоколов TCP/IP
Здесь существует определенная иерархия. Стек протоколов TCP/IP предусматривает четыре уровня, каждый из которых обрабатывает свой набор протоколов:
Прикладной уровень: создан для обеспечения работы пользователя с сетью На этом уровне обрабатывается все то, что видит и делает пользователь. Уровень позволяет пользователю получить доступ к различным сетевым службам, например: доступ к базам данных, возможность прочитать список файлов и открыть их, отправить электронное сообщение или открыть веб-страницу. Вместе с пользовательскими данными и действиям, на этом уровне передается служебная информация.
Транспортный уровень: это механизм передачи пакетов в чистом виде. На этом уровне совершенно не имеет значения ни содержимое пакета, ни его принадлежность к какому бы то ни было действию. На этом уровне имеет значение только адрес узла отправки пакета и адрес узла, на который пакет должен быть доставлен. Как правило, размер фрагментов, передаваемых с использованием разных протоколов, может изменяться, потому на этом уровне блоки информации могут дробиться на выходе и собираться в единое целое в точке назначения. Этим обусловлена возможная потеря данных, если в момент передачи очередного фрагмента произойдет кратковременный разрыв соединения.
Транспортный уровень включает в себя много протоколов, которые делятся на классы, от простейших, которые просто передают данные, до сложных, которые оснащены функционалом подтверждения приема, или повторного запроса недополученного блока данных.
Данный уровень, предоставляет вышестоящему (прикладному) два типа сервиса:
- Осуществляет гарантированную доставку, с помощью протокола ТСР.
- Осуществляет доставку по возможности по протоколу UDP.
Чтобы обеспечить гарантированную доставку, согласно протоколу TCP устанавливается соединение, которое позволяет выставлять на пакетах нумерацию на выходе и подтверждать их прием на входе. Нумерация пакетов и подтверждение приема — это так называемая служебная информация. Этот протокол поддерживает передачу в режиме «Дуплекс». Кроме того, благодаря продуманному регламенту протокола, он считается очень надежным.
Протокол UDP предназначен для моментов, когда невозможно настроить передачу по протоколу TCP, либо приходится экономить на сегменте сетевой передачи данных. Также протокол UDP может взаимодействовать с протоколами более высокого уровня, для повышения надежности передачи пакетов.
Сетевой уровень или «уровень интернета»: базовый уровень для всей модели TCP/IP. Основной функционал этого уровня идентичен одноименному уровню модели OSI и описывает перемещение пакетов в составной сети, состоящей из нескольких, более мелких подсетей. Он связывает соседние уровни протокола TCP/IP.
Сетевой уровень является связующим между вышестоящим транспортным уровнем и нижестоящим уровнем сетевых интерфейсов. Сетевой уровень использует протоколы, которые получают запрос от транспортного уровня, и посредством регламентированной адресации передают обработанный запрос на протокол сетевых интерфейсов, указывая, по какому адресу направить данные.
На этом уровне используются следующие сетевые протоколы TCP/IP: ICMP, IP, RIP, OSPF. Основным, и наиболее популярным на сетевом уровне, конечно же является протокол IP (Internet Protocol). Основной его задачей является передача пакетов от одного роутера к другому до тех пор, пока единица данных не попадет на сетевой интерфейс узла назначения. Протокол IP разворачивается не только на хостах, но и на сетевом оборудовании: маршрутизаторах и управляемых коммутаторах. Протокол IP работает по принципу негарантированной доставки с максимальными усилиями. Т. е., для отправки пакета нет необходимости заранее устанавливать соединение. Такой вариант приводит к экономии трафика и времени на движении лишних служебных пакетов. Пакет направляется в сторону назначения, и вполне возможно, что узел останется недоступным. В таком случае возвращается сообщение об ошибке.
Уровень сетевых интерфейсов: отвечает за то, чтобы подсети с разными технологиями могли взаимодействовать друг с другом и передавать информацию в том же режиме. Реализовано это двумя простыми шагами:
- Кодирование пакета в единицу данных промежуточной сети.
- Преобразование информации о месте назначения в стандарты необходимой подсети и отправка единицы данных.
Этот подход позволяет постоянно расширять количество поддерживаемых технологий построения сетей. Как только появляется новая технология, она сразу попадает в стек проколов TCP/IP и позволяет сетям со старыми технологиями передавать данные в сети, построенные с применением более современных стандартов и способов.
Что это такое
Протоколы данного типа позволяют реализовать модель соединения пакетов. По сути, они являются основой работы всего Интернета. И чаще всего при использовании термина TCP/IP подразумевают всю сеть, которая работает на основе 2 отдельных протоколов – TCP и IP.
Набор протоколов включает в себя ряд соглашений о межсетевом взаимодействии и маршрутизации. С помощью такого инструмента удается наладить связь между пользователями из университетов, исследовательских центров, промышленных предприятий и госучреждений.
TCP – аббревиатура, которая расшифровывается как Transfer Control Protocol. То есть по сути это специальный протокол, который управляет передачей. Он создан для установки и поддержания надежного соединения между устройствами. Именно он отвечает за передачу данных, контролирует объем передаваемых файлов и выполняет новую отправку при возникновении сбоев.
Характеристики протокола TCP заключаются в следующем:
- Реализация взаимодействия на уровне логического соединения.
- Организация потоковой отсылки данных.
- Двунаправленная взаимосвязь.
- Функция отправки отдельных пакетов данных.
- Использование принципа «скользящего окна» для увеличения скорости передачи.
Другой протокол – IP – расшифровывается как «Интернет протокол». Он является базовым для архитектуры передачи файлов и необходим для отправки сетевого пакета по необходимому адресу. Все данные предварительно делятся на несколько пакетов, которые отправляются независимо друг от друга до конечного адресата.
Основными характеристиками протокола IP является следующее:
- Реализация обмена данных при помощи сегментов.
- Взаимодействие устройств без использования логического соединения.
- Фрагментация IP-сегментов в случае необходимости.
- Отсутствие средств для управления скоростью передачи сегментов.
Стек сетевых протоколов требуется для поддержания связи компьютеров (хостов), которые подключены к сети. Главная особенность такого набора – аппаратная независимость, которую невозможно получить при использовании других сетевых технологий. То есть TCP/IP не зависит от характеристик аппаратного обеспечения, что позволяет организовать обмен данными между сетями с разными технологиями передачи. За счет использования IP-адресов поддерживается соединение между двумя любыми устройствами.
В протоколах предусмотрено выполнение ряда команд. Например:
- Передача файлов в другую систему.
- Выполнение команд в удаленном режиме.
- Отправка сообщений удаленным пользователям.
- Печать файлов в удаленном режиме.
- Вход в удаленную систему.
- Управление системой и др.
По сути стек протоколов TCP/IP является сетевой моделью, в которой описывается весь процесс передачи цифровых данных. До появления этого набора (в 70-е годы прошлого века) передача информации из одной сети в другую была невозможна. Разработка стека помогла решить эту проблему.
Разрабатывалось семейство протоколов под руководством Министерства обороны США, поэтому иногда его называют DoD-системой. Многие специалисты отмечают сходство системы с протоколами OSI, так как обе они строятся по принципу деления на уровни и выполнение отдельных функций на каждом из них.
Удаленный офис
и онлайн-продажи
За 1 день.
С бесплатным тестовым периодом.
Конфигуратор удаленных рабочих мест
Рабочие места для команды за 1 день
Запросить КП
Библиография
- Дуглас Э. Комер . Межсетевое взаимодействие с TCP / IP — принципы, протоколы и архитектура . ISBN 86-7991-142-9
- Джозеф Г. Дэвис и Томас Ф. Ли. Протоколы и службы TCP / IP Microsoft Windows Server 2003 . ISBN 0-7356-1291-9
- Форузан, Бехруз А. (2003). Пакет протоколов TCP / IP (2-е изд.). Макгроу-Хилл. ISBN 978-0-07-246060-5.
- Крейг Хант Сетевое администрирование TCP / IP . О’Рейли (1998) ISBN 1-56592-322-7
- Мафер, Томас А. (1999). Основы интеллектуальной собственности . Прентис Холл. ISBN 978-0-13-975483-8.
- Ян Маклин. Windows (R) 2000 TCP / IP Черная книга . ISBN 1-57610-687-X
- Ajit Mungale Pro .NET 1.1 Сетевое программирование . ISBN 1-59059-345-6
- В. Ричард Стивенс . Иллюстрированный TCP / IP, Том 1: Протоколы . ISBN 0-201-63346-9
- В. Ричард Стивенс и Гэри Р. Райт. Иллюстрированный TCP / IP, Том 2: Реализация . ISBN 0-201-63354-X
- В. Ричард Стивенс . Иллюстрированный TCP / IP, Том 3: TCP для транзакций , HTTP , NNTP и протоколы домена UNIX . ISBN 0-201-63495-3
- Эндрю С. Таненбаум . Компьютерные сети . ISBN 0-13-066102-3
Механизмы протокола HTTP
При более внимательном рассмотрении этот пример показывает, как приложения на каждом конечном компьютере (приложение веб-браузера и приложение веб-сервера) используют протокол прикладного уровня TCP/IP. Чтобы сделать запрос веб-страницы и вернуть содержимое веб-страницы, приложения используют протокол передачи гипертекста (HTTP).
HTTP не существовал до тех пор, пока Тим Бернерс-Ли не создал первый веб-браузер и веб-сервер в начале 1990-х годов. Бернерс-Ли предоставил HTTP функцию для запроса содержимого веб-страниц, а именно, предоставив веб-браузеру возможность запрашивать файлы с сервера и дав серверу возможность возвращать содержимое этих файлов. Общая логика соответствует тому, что показано на рисунке 1; на рисунке 2 показана та же идея, но с подробностями, относящимися к HTTP.
ПРИМЕЧАНИЕ. Полная версия большинства веб-адресов, также называемых унифицированными указателями ресурсов (URL, Uniform Resource Locators) или универсальными идентификаторами ресурсов (URI, Universal Resource Identifiers), начинается с букв http, что означает, что для передачи веб-страниц используется HTTP.
Рисунок 2 – HTTP запрос GET, HTTP ответ и одно сообщение только с данными
Чтобы получить веб-страницу от Гарри, Роб на этапе 1 отправляет сообщение с заголовком HTTP. Обычно протоколы используют заголовки как место для размещения информации, используемой этим протоколом. Этот HTTP заголовок включает запрос на «получение» файла. Запрос обычно содержит имя файла (в данном случае home.htm), или, если имя файла не упоминается, веб-сервер предполагает, что Бобу нужна веб-страница по умолчанию.
Шаг 2 на рисунке 2 показывает ответ веб-сервера Гарри. Сообщение начинается с HTTP заголовка с кодом состояния (200), который означает нечто простое, например, «ОК», возвращаемое в заголовке. HTTP также определяет другие коды состояния, чтобы сервер мог сообщить браузеру, сработал ли запрос (например: если вы когда-нибудь искали веб-страницу, которая не была найдена, и получили ошибку HTTP 404 «не найдена», вы получили HTTP код состояния 404). Второе сообщение также включает начальную часть запрошенного файла.
Шаг 3 на рисунке 2 показывает еще одно сообщение от веб-сервера Гарри веб-браузеру Роба, но на этот раз без HTTP заголовка. HTTP передает данные, отправляя несколько сообщений, каждое из которых является частью файла. Вместо того, чтобы тратить место на отправку повторяющихся HTTP заголовков, содержащих повторяющуюся информацию, эти дополнительные сообщения просто пропускают заголовок.
Уровни
TCP (Transmission Control Protocol) работает поверх IP (Internet Protocol). Такой стек является независимым от физической среды передачи данных. Если проводить аналогии с базисной моделью OSI, то такая совокупность протоколов занимает три уровня из семи: от физического до сетевого. Интересно также, что рассматриваемый стек протоколов сам делится на четыре уровня — опять же если сравнивать с OSI.
Сравнение моделей OSI и TCP/IP
Cтек протоколов TCP/IP можно разделить на четыре уровня (не считая физического), если пытаться вписать модель в категоризацию OSI:
Уровень 0. Физический. Описывает среду передачи данных и физические характеристики такой среды.
Уровень 1. Канальный. Данный уровень описывает формат передачи данных через физический уровень, включая некоторое кодирование.
Уровень 2. Межсетевой. Предназначен для передачи данных из одной подсети в другую. В модели OSI нет аналога межсетевому уровню, посему достаточно сложно сравнивать две эти модели.
Уровень 3. Транспортный. Решает вопросы доставки сообщений с неподтвержденной гарантией.
Уровень 4. Прикладной. Обеспечивает работу большинства сетевых приложений.