Протокол TCP, Детальна інформація
Протокол TCP
SYN: Синхронізація чисел послідовності
FIN: Прапор закінчення передачі з боку відправника
Window (16 біт). Це поле містить кількість байт даних, яку відправник даного сегменту може прийняти, відраховану від номеру байту, зазначеного в полі Acknowlegement Number.
Checksum (16 біт). Поле контрольної суми. Це поле містить 16 біт суми побітних додатків 16-бітних слів заголовку та даних. Якщо сегмент містить в заголовку та тексті непарну кількість октетів, що мають бути враховані в контольній сумі, останній октет буде доповнений нулями зправа с тим, щоби утворити для надання контрольній сумі 16-бітне слово. Октет, що виникає при такому виравнюванні, не передається разом з сегментом по мережі. Перед вирахуванням контрольної суми поле цієї суми заповнюється нулями.
Контрольна сума, окрім всього іншого, враховує 96 біт псевдозаголовку, який для внутрішнього використання ставиться перед TCP заголовком. Цей псевдозаголовок містить адресу відправника, адресу отримувача, протокол та довжину TCP сегменту. Такий підхід забезпечує захист протоколу TCP від сегментів, що помилились у маршруті .Цю інформацію обробляє Internet протокол. Вона передається крізь інтерфейс протокол TCP/локальна мережа у якості аргументів чи результатів запитів від протоколу TCP до протоколу IP.
Адреса відправника
Адреса отримувача
Нулі PTCL Довжина TCP
Довжина TCP сегменту - это довжина TCP заголовку та поля даних, виміряна в октетах. Це не є точним вказівником кількості октетів, що передаються по мережі, вона не враховує 12 октетів псевдозаголовку, проте розрахунок цього параметру всеж проводиться.
Urgent Pointer (16 біт). Поле вказівника термінових даних. Це поле містить значення лічильника пакетів, починаючи з якого йдуть пакети підвищеної терміновості. Це поле береться до уваги лише в сегментах з встаносленим флагом URG.
Options. Поле додаткових параметрів: може бути змінної довжини.
Padding. Заповнення: змінна довжина. Заповнення (нулями) TCP-заголовку використовується для вирівнювання його по 32-бітному слову.
Встановлення з’єднання та його відміна
Розглянемо схему створення TCP-з’єднання (Мал 2).
Мал.2
Припустимо, що хосту А необхідно створити TCP-з’єднання з хостом В. Тоді А посилає на В наступне повідомлення:
A -> B: SYN, ISSa
Це означає, що в повідомленні, яке передає А, встановлений біт SYN (synchronize sequence number), а у поле Sequence Number встановлено початкове 32-бітне значення ISSa (Initial Sequence Number).
В відповідає:
2. B -> A: SYN, ACK, ISSb, ACK(ISSa+1)
У відповідь на отриманий від А запит В відповідає повідомленням, в якому встановлений біт SYN та встановлений біт ACK; у поле Sequence Number хостом В встановлюється своє початкове значення лічильника - ISSb; поле Acknowledgment Number містить значення ISSa, отримане у першому пакеті від хоста А та збільшене на одиницю.
А, завершуючи “рукостискання” (handshake), надсилає:
3. A -> B: ACK, ISSa+1, ACK(ISSb+1)
У цьому пакеті встановлений біт ACK; поле Sequence Number містить ISSa + 1; поле Acknowledgment Number містить значення ISSb + 1. Відсиланням цього пакету на хост В закінчується трьохступеневий handshake та TCP-з’єднання між
хостами А та В вважається встановленим. Тепер хост А може посилати пакети з даними на хост В по щойно свтвореному віртуальному TCP-каналу:
4. A -> B: ACK, ISSa+1, ACK(ISSb+1); DATA
Щоб ідентифікувати окремі потоки даних, які підтримує протокол TCP, останній визначає ідентифікатори портів. Оскільки ідентифікатори портів обираються кожною програмою протокола TCP незалежно, то вони не будуть унікальними. Щоб забеспечити унікальність адрес для кожної програми протокола TCP, треба об’єднати ідентифікуючу цю програму Internet адресу та ідентифікатор порта. В результаті отримуємо сокет, який буде унікальний у всіх локальних мережах, об’єднаних у єдине ціле.
FIN: Прапор закінчення передачі з боку відправника
Window (16 біт). Це поле містить кількість байт даних, яку відправник даного сегменту може прийняти, відраховану від номеру байту, зазначеного в полі Acknowlegement Number.
Checksum (16 біт). Поле контрольної суми. Це поле містить 16 біт суми побітних додатків 16-бітних слів заголовку та даних. Якщо сегмент містить в заголовку та тексті непарну кількість октетів, що мають бути враховані в контольній сумі, останній октет буде доповнений нулями зправа с тим, щоби утворити для надання контрольній сумі 16-бітне слово. Октет, що виникає при такому виравнюванні, не передається разом з сегментом по мережі. Перед вирахуванням контрольної суми поле цієї суми заповнюється нулями.
Контрольна сума, окрім всього іншого, враховує 96 біт псевдозаголовку, який для внутрішнього використання ставиться перед TCP заголовком. Цей псевдозаголовок містить адресу відправника, адресу отримувача, протокол та довжину TCP сегменту. Такий підхід забезпечує захист протоколу TCP від сегментів, що помилились у маршруті .Цю інформацію обробляє Internet протокол. Вона передається крізь інтерфейс протокол TCP/локальна мережа у якості аргументів чи результатів запитів від протоколу TCP до протоколу IP.
Адреса відправника
Адреса отримувача
Нулі PTCL Довжина TCP
Довжина TCP сегменту - это довжина TCP заголовку та поля даних, виміряна в октетах. Це не є точним вказівником кількості октетів, що передаються по мережі, вона не враховує 12 октетів псевдозаголовку, проте розрахунок цього параметру всеж проводиться.
Urgent Pointer (16 біт). Поле вказівника термінових даних. Це поле містить значення лічильника пакетів, починаючи з якого йдуть пакети підвищеної терміновості. Це поле береться до уваги лише в сегментах з встаносленим флагом URG.
Options. Поле додаткових параметрів: може бути змінної довжини.
Padding. Заповнення: змінна довжина. Заповнення (нулями) TCP-заголовку використовується для вирівнювання його по 32-бітному слову.
Встановлення з’єднання та його відміна
Розглянемо схему створення TCP-з’єднання (Мал 2).
Мал.2
Припустимо, що хосту А необхідно створити TCP-з’єднання з хостом В. Тоді А посилає на В наступне повідомлення:
A -> B: SYN, ISSa
Це означає, що в повідомленні, яке передає А, встановлений біт SYN (synchronize sequence number), а у поле Sequence Number встановлено початкове 32-бітне значення ISSa (Initial Sequence Number).
В відповідає:
2. B -> A: SYN, ACK, ISSb, ACK(ISSa+1)
У відповідь на отриманий від А запит В відповідає повідомленням, в якому встановлений біт SYN та встановлений біт ACK; у поле Sequence Number хостом В встановлюється своє початкове значення лічильника - ISSb; поле Acknowledgment Number містить значення ISSa, отримане у першому пакеті від хоста А та збільшене на одиницю.
А, завершуючи “рукостискання” (handshake), надсилає:
3. A -> B: ACK, ISSa+1, ACK(ISSb+1)
У цьому пакеті встановлений біт ACK; поле Sequence Number містить ISSa + 1; поле Acknowledgment Number містить значення ISSb + 1. Відсиланням цього пакету на хост В закінчується трьохступеневий handshake та TCP-з’єднання між
хостами А та В вважається встановленим. Тепер хост А може посилати пакети з даними на хост В по щойно свтвореному віртуальному TCP-каналу:
4. A -> B: ACK, ISSa+1, ACK(ISSb+1); DATA
Щоб ідентифікувати окремі потоки даних, які підтримує протокол TCP, останній визначає ідентифікатори портів. Оскільки ідентифікатори портів обираються кожною програмою протокола TCP незалежно, то вони не будуть унікальними. Щоб забеспечити унікальність адрес для кожної програми протокола TCP, треба об’єднати ідентифікуючу цю програму Internet адресу та ідентифікатор порта. В результаті отримуємо сокет, який буде унікальний у всіх локальних мережах, об’єднаних у єдине ціле.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021