If you're seeing this message, it means we're having trouble loading external resources on our website.

Ако си зад уеб филтър, моля, увери се, че домейните *. kastatic.org и *. kasandbox.org са разрешени.

Основно съдържание

Протокол за управление на предаването (TCP)

Протоколът за управление на предаването (TCP) е транспортен протокол, който се използва върху IP, за да се гарантира надеждният пренос на пакети.
TCP включва механизми за решаване на много от проблемите, които възникват при пакетно-базирани съобщения, като загубени пакети, разбъркани пакети, дублирани пакети и повредени пакети.
Тъй като TCP е протоколът, който се използва най-често върху IP, стекът от интернет протоколи понякога се нарича TCP/IP.

Формат на пакета

При изпращането на пакети чрез TCP/IP, частта от данни на всеки IP пакет е форматирана като TCP сегмент.
Диаграма на TCP сегмент в IP пакет. IP пакетът съдържа секции за заглавка и данни. Разделът с IP данни е TCP сегментът, който сам по себе си съдържа секции за заглавка и данни.
Всеки TCP сегмент съдържа заглавка и данни. TCP заглавката съдържа много повече полета от UDP заглавката и може да варира в размер от 20 до 60 байта, в зависимост от размера на полето с опции.
TCP заглавката споделя някои полета с UDP заглавката: номер на порта на източника, номер на порта на местоназначението и контролна сума. За да си припомниш как се използват, виж тази статия за UDP.

От начало до край

Нека преминем през процеса на пренос на пакет с TCP/IP.

Стъпка 1: Установяване на връзка

Когато два компютъра искат да изпращат данни един към друг през TCP, първо трябва да установят връзка помежду си с помощта на тристранно ръкостискане.
Диаграма на два компютъра със стрелки между тях.
  • Стрелката преминава от компютър 1 към компютър 2 с етикет "SYN".
  • Стрелката преминава от компютър 2 към компютър 1 с етикет "ACK SYN".
  • Стрелката преминава от компютър 1 към компютър 2 с етикет "ACK".
Първият компютър изпраща пакет с бит SYN, зададен на 1 (SYN = "синхронизиране?"). Вторият компютър изпраща обратно пакет с бит ACK, зададен на 1 (ACK = "потвърждаване!") плюс бит SYN, зададен на 1. Първият компютър отговаря с ACK.
Битовете SYN и ACK са част от TCP заглавката:
Диаграма на TCP заглавката с редове от полета. Всеки ред е дълъг 32 бита. Първият ред съдържа 16-битов номер на порта на източника и 16-битов номер на порта на местоназначението. Вторият ред съдържа 32-битов пореден номер. Третият ред съдържа 32-битов номер на потвърждение. Четвъртият ред съдържа 4-битов номер на изместване на данни, 6 бита, които са маркирани като запазени, 6 контролни бита (URG, ACK, PSH, RST, SYN, и FIN) и 16-битов номер на размера на прозореца. Петият ред съдържа 16-битова контролна сума и 16-битов указател за спешни данни. Заглавката завършва с опции и отстояние, които могат да бъдат с променлива дължина.
Битовете ACK и SYN са маркирани на четвъртия ред на заглавката.
Всъщност трите пакета, участващи в тристранното ръкостискане, обикновено не включват никакви данни. След като компютрите приключат с ръкостискането, те са готови да приемат пакети, съдържащи реални данни.

Стъпка 2: Изпращане на пакети данни

Когато пакет от данни се изпраща през TCP, получателят винаги трябва да потвърди какво е получил.
Диаграма на два компютъра със стрелки между тях.
  • Стрелка преминава от Компютър 1 към Компютър 2 и показва кутия с двоични данни и етикета "Пореден #1".
  • Стрелка преминава от Компютър 2 към Компютър 1 с етикета "ACK".
Първият компютър изпраща пакет с данни и пореден номер. Вторият компютър го потвърждава, като задава бит ACK и увеличава номера на потвърждение с дължината на получените данни.
Номерата на последователността и потвърждението са част от TCP заглавката:
Диаграма на TCP заглавката с редове от полета. Всеки ред е дълъг 32 бита. Първият ред съдържа 16-битов номер на порта на източника и 16-битов номер на порта на местоназначението. Вторият ред съдържа 32-битов пореден номер. Третият ред съдържа 32-битов номер на потвърждение. Четвъртият ред съдържа 4-битов номер на изместване на данни, 6 бита, които са маркирани като запазени, 6 контролни бита (URG, ACK, PSH, RST, SYN, и FIN) и 16-битов номер на размера на прозореца. Петият ред съдържа 16-битова контролна сума и 16-битов указател за спешни данни. Заглавката завършва с опции и отстояние, които могат да бъдат с променлива дължина.
32-битовите пореден номер и номер на потвърждение са маркирани.
Тези две числа помагат на компютрите да следят кои данни са били успешно получени, кои са загубени и кои данни са били случайно изпратени два пъти.

Стъпка 3: Затваряне на връзката

Всеки компютър може да затвори връзката, когато вече не иска да изпраща или получава данни.
Диаграма на два компютъра със стрелки между тях.
  • Стрелка преминава от Компютър 1 към Компютър 2 с етикета "FIN".
  • Стрелка преминава от Компютър 2 към Компютър 1 с етикета "ACK FIN".
  • Стрелка преминава от Компютър 1 към Компютър 2 с етикета "ACK".
Компютърът инициира затваряне на връзката, като изпраща пакет с бит FIN, зададен на 1 (FIN = край). Другият компютър отговаря с ACK и още един FIN. След още едно ACK от иницииращия компютър връзката се затваря.

Откриване на загубени пакети

TCP връзките могат да открият загубени пакети с помощта на изчакване.
Диаграма, показваща повторен пренос на пакет от един компютър към друг компютър. Стрелката преминава от първия компютър към втория компютър и е етикирана с "пореден #1" и низ от двоични данни. Хронометърът се показва на различни етапи след стрелката, първо при изминало 0 време, след това при изминало половината време, след това при изминало цялото време и в състояние на аларма. Другата стрелка върви от първия лаптоп към втория лаптоп, който е етикетиран като първия.
След изпращане на пакет подателят стартира таймер и поставя пакета на опашка за повторен пренос. Ако таймерът изтече и подателят все още не е получил ACK от получателя, той изпраща пакета отново.
Повторният пренос може да доведе до получаване на дублиращи се пакети от получателя, ако пакетът всъщност не е загубен, а просто много бавно пристига или се потвърждава. Ако случаят е такъв, получателят може просто да изхвърли дублираните пакети. По-добре е данните да са налични два пъти, отколкото изобщо да не бъдат получени!

Обработка на разбъркани пакети

TCP връзките могат да откриват разбъркани пакети, като използват поредния номер и номера на потвърждение.
Диаграма на два компютъра със стрелки между тях.
  • Стрелката преминава от Компютър 1 към Компютър 2 и показва кутия с двоични данни с етикета "Seq #1".
  • Стрелката преминава от Компютър 2 към Компютър 1 с етикета "Ack #37".
  • Стрелката преминава от Компютър 1 към Компютър 2 и показва кутия с двоични данни с етикета "Seq #73".
  • Стрелката преминава от Компютър 2 към Компютър 1 с етикета "Ack #37".
Когато получателят види по-висок пореден номер от този, който е потвърдил до момента, той знае, че му липсва поне един пакет помежду тях. В ситуацията, показана по-горе, получателят вижда пореден номер #73, но очаква пореден номер #37. Получателят уведомява подателя, че има нещо погрешно, като изпраща пакет с номер за потвърждение, зададен на очаквания пореден номер.
Понякога липсващият пакет просто поема по-бавен маршрут през интернет и пристига скоро след това.
Диаграма на TCP пакети, които пристигат разбъркани. Два компютъра са показани с входящи и изходящи стрелки, а вертикалното им местоположение показва часа на изпращане и пристигане:
  • Стрелка с етикет "Seq #1" стартира от Компютър 1 и завършва скоро след това при Компютър 2.
  • Стрелка с етикет "Ack #37" стартира от Компютър 2 и завършва скоро след това при Компютър 1.
  • Стрелка с етикет "Seq #37" стартира от Компютър 1 и приключва много по-късно при Компютър 2.
  • Стрелка с етикет "Seq #73" стартира от Компютър 1 и завършва скоро след това при Компютър 2 (преди стрелката за "Seq #37").
  • Стрелка с етикет "Ack #37" стартира от Компютър 2 и завършва скоро след това при Компютър 1 (преди стрелката за "Seq #37").
В други случаи липсващият пакет може всъщност да е загубен пакет и подателят трябва отново да изпрати за пренос пакета.
Диаграма на TCP пакети, които пристигат разбъркани. Два компютъра са показани с входящи и изходящи стрелки, а вертикалното им местоположение показва часа на изпращане и пристигане:
  • Стрелка с етикет "Seq #1" стартира от Компютър 1 и завършва скоро след това при Компютър 2.
  • Стрелка с етикет "Ack #37" стартира от Компютър 2 и завършва скоро след това при Компютър 1.
  • Стрелка с етикет "Seq #37" стартира от Компютър 1 и завършва преди да достигне Компютър 2, с X, което показва, че е загубена.
  • Стрелка с етикет "Seq #73" стартира от Компютър 1 и завършва скоро след това при Компютър 2.
  • Стрелка с етикет "Ack #37" стартира от Компютър 2 и завършва скоро след това при Компютър 1.
  • Стрелка с етикет "Seq #37" стартира от Компютър 1 и завършва скоро след това при Компютър 2.
И в двете ситуации получателят трябва да се справи с разбъркани пакети. За щастие, получателят може да използва поредните номера, за да сглоби отново пакетните данни в правилния ред.
Диаграма на повторно сглобяване на TCP данни.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Имаш въпроси по тази тема? Ще се радваме да отговорим — само ни попитай, като използваш полето за въпроси по-долу!

Искаш ли да се присъединиш към разговора?

Все още няма публикации.
Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.