Поставување на TCP врска
Кога ја разгледуваме мрежата, испраќаме е -пошта или играме онлајн игра, честопати не размислуваме за сложената мрежна врска зад неа. Сепак, токму овие навидум мали чекори обезбедуваат стабилна комуникација помеѓу нас и серверот. Еден од најважните чекори е поставувањето на врската TCP, а јадрото на ова е тринасочна ракување.
Оваа статија детално ќе разговара за принципот, процесот и важноста на тринасочната ракување. Чекор по чекор, ќе објасниме зошто е потребна тринасочна ракување, како се обезбедува стабилност и сигурност за поврзување и колку е важно за пренесување на податоци. Со подлабоко разбирање на тринасочната ракување, ќе добиеме подобро разбирање на основните механизми на мрежна комуникација и појасен преглед на веродостојноста на врските на TCP.
TCP тринасочен процес на ракување и државни транзиции
TCP е протокол за транспорт ориентиран кон врска, кој бара воспоставување врска пред преносот на податоци. Овој процес на воспоставување на врската се прави со тринасочна ракување.
Ајде да ги разгледаме подетално пакетите TCP што се испраќаат во секоја врска.
Првично, и клиентот и серверот се затворени. Прво, серверот активно слуша на порта и е во состојба на слушање, што значи дека серверот мора да се започне. Следно, клиентот е подготвен да започне со пристап до веб -страницата. Треба да воспостави врска со серверот. Форматот на првиот пакет за поврзување е како што следува:
Кога клиентот иницира врска, тој генерира случаен почетен број на секвенца (Client_ISN) и го става во полето "Број на низа" на заглавието TCP. Во исто време, клиентот ја поставува позицијата на знамето SYN на 1 за да означи дека пакетот во заминување е SYN пакет. Клиентот означува дека сака да воспостави врска со серверот со испраќање на првиот SYN пакет на серверот. Овој пакет не содржи податоци за слојот на апликации (т.е. испратени податоци). Во овој момент, статусот на клиентот е обележан како Syn-Sent.
Кога серверот добива SYN пакет од клиент, тој случајно го иницијализира сопствениот сериски број (Server_ISN) и потоа го става тој број во полето "сериски број" на заглавието TCP. Следно, серверот влегува во Client_ISN + 1 во полето "Број на потврда" и ги поставува и парчињата SYN и ACK на 1. Конечно, серверот го испраќа пакетот до клиентот, кој не содржи податоци за слој на апликации (и нема податоци за серверот да ги испрати). Во ова време, серверот е во состојба на SYN-RCVD.
Откако клиентот ќе го прими пакетот од серверот, треба да ги изврши следниве оптимизации за да одговори на конечниот пакет за одговор: прво, клиентот го поставува ACK малку на заглавието на TCP на пакетот за одговор на 1; Второ, клиентот влегува во вредноста на серверот_исн + 1 во полето "Потврди број за одговор"; Конечно, клиентот го испраќа пакетот до серверот. Овој пакет може да носи податоци од клиентот до серверот. По завршувањето на овие операции, клиентот ќе влезе во утврдената држава.
Откако серверот ќе го прими пакетот за одговор од клиентот, тој исто така се префрла на воспоставената состојба.
Како што можете да видите од горенаведениот процес, при изведување на тринасочна ракување, на третата ракување е дозволено да носи податоци, но првите две ракувања не се. Ова е прашање што често се поставува во интервјуа. Откако ќе заврши тринасочната ракување, обете страни влегуваат во воспоставената состојба, што укажува дека врската е успешно воспоставена, во кој момент клиентот и серверот можат да започнат да испраќаат податоци едни на други.
Зошто три ракувања? Не двапати, четири пати?
Заедничкиот одговор е: „Бидејќи тринасочната ракување гарантира можност за примање и испраќање“. Овој одговор е точен, но тоа е само површинската причина, не ја поставува главната причина. Во продолжение, ќе ги анализирам причините за тројно ракување од три аспекти за да го продлабочиме нашето разбирање за ова прашање.
Тринасочната ракување може ефикасно да ја избегне иницијализацијата на историски повторените врски (главната причина)
Тринасочната ракување гарантира дека и двете страни добиле сигурен број на почетна секвенца.
Тринасочната ракување избегнува да троши ресурси.
Причина 1: Избегнувајте историски дупликати спојувања
Накратко, главната причина за тринасочната ракување е да се избегне збунетост предизвикана од старата иницијализација на дупликат конекција. Во комплексно мрежно опкружување, преносот на пакетите со податоци не е секогаш испратен до домаќинот на дестинацијата во согласност со одредено време, а старите пакети со податоци може да пристигнат до домаќинот на дестинацијата прво заради мрежно метеж и други причини. За да се избегне ова, TCP користи тринасочна ракување за да ја воспостави врската.
Кога клиентот ќе испрати повеќе пакети за воспоставување на синхронизација во сукцесија, во ситуации како што е мрежен метеж, може да се случи следново:
1- Старите пакети SYN пристигнуваат на серверот пред најновите SYN пакети.
2- Серверот ќе одговори на пакетот SYN + ACK на клиентот по приемот на стариот SYN пакет.
3- Кога клиентот ќе го прими пакетот SYN + ACK, тој одредува дека врската е историска врска (број на секвенца истечен или истечен рок) според сопствениот контекст, а потоа го испраќа RST пакетот до серверот за да ја абортира врската.
Со врска со две раце, не постои начин да се утврди дали тековната врска е историска врска. Тринасочната ракување му овозможува на клиентот да утврди дали сегашната врска е историска врска заснована на контекстот кога е подготвена да го испрати третиот пакет:
1- Ако е историска врска (број на секвенца истечен или истек на време), пакетот испратен од третата ракување е прв пакет за да се абортира историската врска.
2- Ако не е историска врска, пакетот испратен по трет пат е пакет ACK, а двете страни за комуникација успешно ја воспоставуваат врската.
Затоа, главната причина што TCP ја користи тринасочната ракување е тоа што ја иницијализира врската за да ги спречи историските врски.
Причина 2: Да се синхронизираат почетните броеви на секвенци на обете страни
Двете страни на протоколот TCP мора да одржат број на секвенца, што е клучен фактор за да се обезбеди сигурен пренос. Броевите на секвенци играат важна улога во врските TCP. Тие го прават следново:
Примачот може да ги елиминира дупликатните податоци и да обезбеди точност на податоците.
Примачот може да прима пакети по редослед на број на секвенца за да се обезбеди интегритет на податоците.
● Бројот на секвенцата може да го идентификува пакетот со податоци што е примена од другата страна, овозможувајќи сигурен пренос на податоци.
Затоа, по воспоставувањето на TCP врска, клиентот испраќа SYN пакети со почетниот број на секвенца и бара серверот да одговори со пакет ACK што укажува на успешен прием на SYN пакетот на клиентот. Потоа, серверот го испраќа SYN пакетот со почетниот број на секвенца на клиентот и чека клиентот да одговори, еднаш засекогаш, за да се осигури дека почетните броеви на секвенци се со сигурност синхронизирани.
Иако е можно и четиристрана ракување со сигурност за да се синхронизираат почетните броеви на секвенци на обете страни, вториот и третиот чекори може да се комбинираат во еден чекор, што резултира во тринасочна ракување. Сепак, двете ракувања можат да гарантираат само дека почетниот број на секвенца на едната страна успешно го прими другата страна, но не постои гаранција дека почетниот број на секвенци на обете страни може да се потврди. Затоа, тринасочната ракување е најдобриот избор за да се земе со цел да се обезбеди стабилност и сигурност на врските на TCP.
Причина 3: Избегнувајте трошење ресурси
Ако има само „две раце“, кога барањето на клиентот SYN е блокирано во мрежата, клиентот не може да го прими пакетот ACK испратен од серверот, така што SYN ќе биде негоден. Меѓутоа, бидејќи нема трета ракување, серверот не може да утврди дали клиентот добил признание за ACK за да ја воспостави врската. Затоа, серверот може проактивно да воспостави врска само откако ќе го прими секое барање SYN. Ова води кон следново:
Отпад на ресурси: Ако е блокирано барањето SYN на клиентот, што резултира во повторено пренесување на повеќе SYN пакети, серверот ќе воспостави повеќекратни непотребни невалидни врски по приемот на барањето. Ова доведува до непотребно губење на ресурсите на серверот.
Задржување на пораките: Поради недостаток на трета ракување, серверот нема начин да знае дали клиентот правилно го добил признанието на ACK за да ја воспостави врската. Како резултат, ако пораките се заглават во мрежата, клиентот ќе ги испраќа барањата за SYN одново и одново, предизвикувајќи серверот постојано да воспоставува нови врски. Ова ќе го зголеми мрежниот метеж и одложувањето и негативно ќе влијае на целокупните перформанси на мрежата.
Затоа, за да се обезбеди стабилност и веродостојност на мрежната врска, TCP ја користи тринасочната ракување за да воспостави врска за да се избегне појава на овие проблеми.
Резиме
НаБрокер за мрежни пакетиОсновањето за поврзување на TCP се врши со тринасочна ракување. За време на тринасочната ракување, клиентот прво испраќа пакет со знамето SYN на серверот, што укажува дека сака да воспостави врска. По приемот на барањето од клиентот, серверот одговара на пакет со знамиња SYN и ACK на клиентот, што укажува дека барањето за врска е прифатено и испраќа свој почетен број на секвенца. Конечно, клиентот одговара со знамето на ACK на серверот за да укаже дека врската е успешно воспоставена. Така, двете страни се во воспоставената состојба и можат да започнат да испраќаат податоци едни на други.
Во принцип, тринасочниот процес на ракување за воспоставување на TCP конекција е дизајниран да обезбеди стабилност и сигурност на врската, да избегнете забуна и губење на ресурси над историските врски и да обезбеди и двете страни да можат да примаат и испраќаат податоци.
Време на објавување: Јануари-08-2025