
3. Протокол gre|
GRE| (Generic| Routing| Encapsulation|) — протокол туннелювання| мережевих|мережних| пакетів, розроблений фірмою|фірма-виготовлювачем| Cisco|. Протокол GRE| забезпечує механізм інкапсуляції довільних пакетів в довільний транспортний протокол. У найбільш загальному|спільному| випадку система має пакети, які потрібно інкапсулювати і маршрутизувати (інформаційні пакети). Інформація (payload|) спочатку інкапсулюється в пакет GRE|, який може також містити|утримувати| маршрут.
Отриманий|одержувати| в результаті пакет GRE| інкапсулюється в пакет іншого протоколу (протокол доставки). У даній статті ми розглянемо|розглядуватимемо| формати пакетів протоколу| GRE|.
GRE| версії 0
Формат заголовка GRE| версії 0 виглядає таким чином.
Перші два октети заголовка містять|утримують| прапори GRE|:
C, Checksum| Present|. 1 битий. - Контрольна сума присутня (битий 0) і містить|утримує| коректне значення.
R, Routing| Present|. 1 bit|. - Якщо біт встановлений|установлений| тоді поля зсуву|зміщення| і маршрутизації присутні і містять|утримують| коректні значення
K, Key| Present|. 1 bit|. - В заголовку GRE| присутній ключ|джерело| і містить|утримує| коректне значення
S, Sequence| Number| present-| Порядковий номер присутнє і містить|утримує| коректне значення
s, Strict| Source| Route| - Рекомендується встановлювати цей прапор тільки|лише| якщо поле маршрутної інформації містить|утримує| маршрути Strict| Source|
Recur|, Recursion| Control| - 3-бітове беззнакове ціле, вказуюче|показуюче| допустиме число додаткових інкапсуляцій.
Flags| - These| bits| are| reserved| and| must| be| transmitted| as| 0
Version| - Версія GRE| протоколу. Повинно бути 0
Protocol| Type| - Тип протоколу в полі вмісту (payload|) пакету. У загальному|спільному| випадку це поле указує|вказує| тип протоколу Ethernet| для даного пакету.
Checksum| - Необов'язкове поле. Контрольна сума IP| (доповнення до 1) для заголовка GRE| і вмісту пакету.
Offset| - Необов'язкове поле. Показує зсув|зміщення| в октетах від початку поля маршрутизації до першого октету запису Source| Route|, що перевіряється.
Key| - Необов'язкове поле. 4-байтове, число, яке було вставлено при інкапсуляції. Це значення може використовуватися одержувачем|отримувачем| для аутентифікації відправника пакету.
Sequence| Number| - Порядковий номер. Необов'язкове поле. 32-бітове ціле число, що вставляється при інкапсуляції. Це значення може використовуватися одержувачем|отримувачем| для підтримки порядку|ладу| передачі пакетів.
Routing| - Маршрутизація. Необов'язкове поле. Містить|утримує| дані, які можуть використовуватися при маршрутизації даного пакету.
GRE| версії 1
Заголовок GRE|, використовуваний протоколом PPTP|, трохи відрізняється від заголовка, описаного в поточній специфікації протоколу GRE|. Основна відмінність|відзнака| в тому, що залучяється| додаткове поле Acknowledgment| Number| використовуване для визначення того, чи прибув GRE| пакет на іншу сторону GRE| тунеля.
C, Checksum| Present|. - Скинуто в 0
R, Routing| Present| - Скинуто в 0
K, Key| Present|. - Встановлено|установлений| в 1
S, Sequence| Number| present| - Встановлюється якщо присутній| Payload|. Якщо Payload| не присутній, то цей біт скинутий в 0. GRE| пакет використовується| тільки|лише| для підтвердження.
s, Strict| Source| Route| - Скинуто в 0
Recur|, Recursion| Control| - Скинуто в 0
A, Acknowledgment| sequence| number| present| - Встановлено|установлений| в 1, якщо пакет містить|утримує| номер підтвердження (Acknowledgment| Number|), використовуваний для підтвердження передаваних даних.
Flags|. - Скинуті в 0
Version| - Версія протоколу. Повинно бути 1
Protocol| - Протокол. Це значення завжди рівне 0x880B|.
Payload| Length| - Розмір даних не включаючи заголовок GRE|
Call| ID| - Містить|утримує| ідентифікатор сторони якої належить пакет.
Sequence| Number|. - Необов'язкове поле. Порядковий номер вмісту
Acknowledgment| Number| - Необов'язкове поле. Порядковий номер пакету GRE| з|із| максимальним номером, прийнятого передавальною стороною в даній призначеній для користувача сесії.