
лекции 2005 / P5 / Дополнительная информация об интерфейсах стека протоколов
.docДополнительная информация об интерфейсах стека протоколов.
Инкапсуляция - способ упаковки данных в формате одного протокола в формат другого протокола. Например, упаковка IP-пакета в кадр Ethernet или TCP-сегмента в IP-пакет.
Согласно словарю иностранных слов термин "инкапсуляция" означает "образование капсулы вокруг чужих для организма веществ (инородных тел, паразитов и т.д.)".
В рамках межсетевого обмена понятие инкапсуляции имеет несколько более расширенный смысл. В случае инкапсуляции IP в Ethernet речь идет действительно о помещении пакета IP в качестве данных Ethernet-фрейма, или, в случае инкапсуляции TCP в IP, помещение TCP-сегмента в качестве данных в IP-пакет. Однако, при передаче данных по коммутируемым каналам происходит не вкладывание, а дальнейшая "нарезка" пакетов теперь уже на пакеты SLIP или фреймы PPP.
|
|
Блок данных |
Уровень приложений |
|
|
|
|
|
Заголовок TCP |
Блок данных TCP |
Транспортный уровень |
|
|
|
|
Заголовок IP |
Заголовок TCP |
Блок данных TCP |
Уровень интернет |
|
|
|
|
Рис 1. Инкапсуляция протоколов верхнего уровня в протоколы TCP/IP
Если на канальном уровне используется протокол Ethernet, то он инкапсулирует IP-пакет сетевого уровня (уровня интернет) в свой блок данных.
В отличие от Ethernet, протокол SLIP не "заворачивает" IP-пакет в свою обертку, а "нарезает" его на "кусочки". При этом делает это довольно примитивно. SLIP-пакет начинается символом ESC (3338 или 21910) и кончается символом END (3008 или 19210). Если внутри пакета встречаются эти символы, то они заменяются двухбайтовыми последовательностями ESC-END (3338 3348) и ESC-ESC (3338 3358). Стандарт не определяет размер SLIP-пакета, поэтому любой SLIP-интерфейс имеет специальное поле, в котором пользователь должен указать эту длину. Однако в стандарте есть указание на то, что BSD SLIP драйвер поддерживает пакеты длиной 1006 байт, поэтому "современные" реализации SLIP-программ должны поддерживать эту длину пакетов. SLIP-модуль не анализирует поток данных и не выделяет какую-либо информацию в этом потоке. Он просто "нарезает" ее на "кусочки", каждый из которых начинается символом ESC, а кончается символом END.
В заголовке пакета TCP (как и в UDP) имеются ссылки на порты. Первые 256 портов закреплены за WKS, порты от 256 до 1024 закреплены за Unix-сервисами, а остальные можно использовать по своему усмотрению.
WKS (Well Known Service - хорошо известный сервис). В базе данных DNS-сервера, запись этого типа содержит информацию о том, какие сервисы из «джентльменского набора» Internet предоставляет компьютер с данным IP-адресом.
Информационный сервис - это прикладная программа, которая осуществляет обслуживание на определенном порте TCP или UDP. Собственно WKS - это и есть совокупность этих сервисов Internet. К сервисам относятся: доступ в режиме удаленного терминала, доступ к файловым архивам FTP, доступ к серверам WWW и т. п.
Кроме статически назначенных WKS существуют еще динамически назначаемые сервисы. Динамически назначаемые номера портов TCP и UDP используются для того, чтобы можно было организовать обслуживание множества запросов по сети к одному WKS. В том же примере стрелочки только в одном направлении указаны не случайно. К серверу протокола HTTP могут обращаться сразу несколько клиентов, следовательно, должен быть механизм, который бы позволил распараллелить их обслуживание. Таким механизмом служит динамическое назначение портов (рисунок 2). Происходит это назначение в момент установки соединения. Клиент, запрашивая обслуживание, обращается к сервису по номеру порта WKS, но при этом сообщает, что принимать ответы он будет по номеру порта, отличному от WKS. Таким образом, сервер может обслуживать запросы к одному и тому же порту WKS, используя разные порты при ответе. Образующаяся при этом пара (IP-адрес, номер порта) называется сокетом (буквально "розетка"). Таким образом, можно сказать, что http-сервер для обслуживания использует сокет, например, 144.206.130.137:80, а клиент, который к нему обращается – сокет 144.206.130.138:8080. Графически определение сокета можно продемонстрировать на примере протокола TCP.
D=80,
S=8080 D=8080,
S=80
Получатель
Источник
Рис. 2. Динамическое назначение портов. Образование сокетов. В заголовке TCP-пакета указывается: D – Destination port, S – Service port.