Основно съдържание
Компютрите и интернет
Курс: Компютрите и интернет > Раздел 3
Урок 5: Транспортиране на пакетиПротокол за управление на предаването (TCP)
Протоколът за управление на предаването (TCP) е транспортен протокол, който се използва върху IP, за да се гарантира надеждният пренос на пакети.
TCP включва механизми за решаване на много от проблемите, които възникват при пакетно-базирани съобщения, като загубени пакети, разбъркани пакети, дублирани пакети и повредени пакети.
Тъй като TCP е протоколът, който се използва най-често върху IP, стекът от интернет протоколи понякога се нарича TCP/IP.
Формат на пакета
При изпращането на пакети чрез TCP/IP, частта от данни на всеки IP пакет е форматирана като TCP сегмент.
Всеки TCP сегмент съдържа заглавка и данни. TCP заглавката съдържа много повече полета от UDP заглавката и може да варира в размер от 20 до 60 байта, в зависимост от размера на полето с опции.
TCP заглавката споделя някои полета с UDP заглавката: номер на порта на източника, номер на порта на местоназначението и контролна сума. За да си припомниш как се използват, виж тази статия за UDP.
От начало до край
Нека преминем през процеса на пренос на пакет с TCP/IP.
Стъпка 1: Установяване на връзка
Когато два компютъра искат да изпращат данни един към друг през TCP, първо трябва да установят връзка помежду си с помощта на тристранно ръкостискане.
Първият компютър изпраща пакет с бит SYN, зададен на 1 (SYN = "синхронизиране?"). Вторият компютър изпраща обратно пакет с бит ACK, зададен на 1 (ACK = "потвърждаване!") плюс бит SYN, зададен на 1. Първият компютър отговаря с ACK.
Битовете SYN и ACK са част от TCP заглавката:
Всъщност трите пакета, участващи в тристранното ръкостискане, обикновено не включват никакви данни. След като компютрите приключат с ръкостискането, те са готови да приемат пакети, съдържащи реални данни.
Стъпка 2: Изпращане на пакети данни
Когато пакет от данни се изпраща през TCP, получателят винаги трябва да потвърди какво е получил.
Първият компютър изпраща пакет с данни и пореден номер. Вторият компютър го потвърждава, като задава бит ACK и увеличава номера на потвърждение с дължината на получените данни.
Номерата на последователността и потвърждението са част от TCP заглавката:
Тези две числа помагат на компютрите да следят кои данни са били успешно получени, кои са загубени и кои данни са били случайно изпратени два пъти.
Стъпка 3: Затваряне на връзката
Всеки компютър може да затвори връзката, когато вече не иска да изпраща или получава данни.
Компютърът инициира затваряне на връзката, като изпраща пакет с бит FIN, зададен на 1 (FIN = край). Другият компютър отговаря с ACK и още един FIN. След още едно ACK от иницииращия компютър връзката се затваря.
Откриване на загубени пакети
TCP връзките могат да открият загубени пакети с помощта на изчакване.
След изпращане на пакет подателят стартира таймер и поставя пакета на опашка за повторен пренос. Ако таймерът изтече и подателят все още не е получил ACK от получателя, той изпраща пакета отново.
Повторният пренос може да доведе до получаване на дублиращи се пакети от получателя, ако пакетът всъщност не е загубен, а просто много бавно пристига или се потвърждава. Ако случаят е такъв, получателят може просто да изхвърли дублираните пакети. По-добре е данните да са налични два пъти, отколкото изобщо да не бъдат получени!
Обработка на разбъркани пакети
TCP връзките могат да откриват разбъркани пакети, като използват поредния номер и номера на потвърждение.
Когато получателят види по-висок пореден номер от този, който е потвърдил до момента, той знае, че му липсва поне един пакет помежду тях. В ситуацията, показана по-горе, получателят вижда пореден номер #73, но очаква пореден номер #37. Получателят уведомява подателя, че има нещо погрешно, като изпраща пакет с номер за потвърждение, зададен на очаквания пореден номер.
Понякога липсващият пакет просто поема по-бавен маршрут през интернет и пристига скоро след това.
В други случаи липсващият пакет може всъщност да е загубен пакет и подателят трябва отново да изпрати за пренос пакета.
И в двете ситуации получателят трябва да се справи с разбъркани пакети. За щастие, получателят може да използва поредните номера, за да сглоби отново пакетните данни в правилния ред.
🙋🏽🙋🏻♀️🙋🏿♂️Имаш въпроси по тази тема? Ще се радваме да отговорим — само ни попитай, като използваш полето за въпроси по-долу!
Искаш ли да се присъединиш към разговора?
Все още няма публикации.