שליסל מיסטעריעס פון נעטוואָרק פּאַקאַט בראָקער טקפּ קאַנעקשאַנז: דימיסטאַפייד די נויט פֿאַר טריפּלע האַנדשאַקע

TCP קאַנעקשאַן סעטאַפּ
ווען מיר בלעטער די וועב, שיקן אַן E- בריוו אָדער שפּילן אַן אָנליין שפּיל, מיר אָפט טאָן ניט טראַכטן וועגן די קאָמפּלעקס נעץ פֿאַרבינדונג הינטער עס. אָבער, עס זענען די פּאָנעם קליין סטעפּס וואָס ענשור סטאַביל קאָמוניקאַציע צווישן אונדז און די סערווער. איינער פון די מערסט וויכטיק סטעפּס איז די TCP פֿאַרבינדונג סעטאַפּ, און די האַרץ פון דעם איז די דריי-וועג כאַנדשייק.

דער אַרטיקל וועט דיסקוטירן דעם פּרינציפּ, פּראָצעס און וויכטיקייט פון די דריי-וועג האַנדשייק אין דעטאַל. שריט דורך שריט, מיר וועט דערקלערן וואָס די דריי-וועג כאַנדשייק איז דארף, ווי עס ינשורז קשר פעסטקייַט און רילייאַבילאַטי און ווי וויכטיק עס איז פֿאַר דאַטן אַריבערפירן. מיט אַ דיפּער פארשטאנד פון די דריי-וועג האַנדשייק, מיר וועלן באַקומען אַ בעסער פארשטאנד פון די אַנדערלייינג מעקאַניזאַמז פון נעץ קאָמוניקאַציע און אַ קלירער מיינונג פון די רילייאַבילאַטי פון TCP קאַנעקשאַנז.

TCP דריי-וועג האַנדשאַקע פּראָצעס און שטאַט טראַנזישאַנז
TCP איז אַ פֿאַרבינדונג-אָריענטיד אַריבערפירן פּראָטאָקאָל, וואָס ריקווייערז אַ קשר פאַרלייגן איידער דאַטן טראַנסמיסיע. דעם פֿאַרבינדונג פאַרלייגן פּראָצעס איז דורכגעקאָכט דורך אַ דריי-וועג כאַנדשייק.

 טקפּ דריי-וועג האַנדשייק

לאָמיר נעמען אַ נעענטער קוק אין די TCP פּאַקיץ וואָס זענען געשיקט אין יעדער קשר.

טכילעס, ביידע דער קליענט און סערווער זענען פארמאכט. ערשטער, דער סערווער אַקטיוולי ליסאַנז אויף אַ פּאָרט און איז אין די LISTEN שטאַט, וואָס מיטל אַז דער סערווער מוזן זיין סטאַרטעד. דערנאָך, דער קליענט איז גרייט צו אָנהייבן אַקסעס די וועבפּאַגע. עס דאַרף צו פאַרלייגן אַ קשר מיט די סערווער. דער פֿאָרמאַט פון דער ערשטער קשר פּאַקאַט איז ווי גייט:

 SYN פּאַקאַט

ווען אַ קליענט ינישיאַץ אַ קשר, עס דזשענערייץ אַ טראַפ - ערשט סיקוואַנס נומער (קליענט_יסן) און שטעלן עס אין די "סיקוואַנס נומער" פעלד פון די טקפּ כעדער. אין דער זעלביקער צייט, דער קליענט שטעלט די SYN פאָן שטעלע צו 1 צו אָנווייַזן אַז די אַוטגאָוינג פּאַקאַט איז אַ SYN פּאַקאַט. דער קליענט ינדיקייץ אַז ער וויל צו פאַרלייגן אַ קשר מיט די סערווער דורך שיקן די ערשטער SYN פּאַקאַט צו די סערווער. דעם פּאַקאַט טוט נישט אַנטהאַלטן אַפּלאַקיישאַן שיכטע דאַטן (דאָס איז געשיקט דאַטן). אין דעם פונט, דער קליענט סטאַטוס איז אנגעצייכנט ווי SYN-SENT.

SYN + ACK פּאַקאַט

ווען אַ סערווער באקומט אַ SYN פּאַקאַט פון אַ קליענט, עס ראַנדאַמלי ינישאַלייזיז זיין אייגענע סיריאַל נומער (סערווער_יסן) און שטעלן דעם נומער אין די "סיריאַל נומער" פעלד פון די טקפּ כעדער. ווייַטער, דער סערווער גייט אריין client_isn + 1 אין די "דערקענטעניש נומער" פעלד און שטעלט ביידע SYN און ACK ביטן צו 1. צום סוף, דער סערווער סענדז די פּאַקאַט צו דעם קליענט, וואָס כּולל קיין אַפּלאַקיישאַן-שיכטע דאַטן (און קיין דאַטן פֿאַר די סערווער) צו שיקן). אין דעם צייט, דער סערווער איז אין SYN-RCVD שטאַט.

ACK פּאַקאַט

אַמאָל דער קליענט נעמט די פּאַקאַט פון די סערווער, עס דאַרף צו דורכפירן די פאלגענדע אָפּטימיזאַטיאָנס צו ריספּאַנד צו די לעצט ענטפער פּאַקאַט: ערשטער, דער קליענט שטעלט די ACK ביסל פון די TCP כעדער פון די ענטפער פּאַקאַט צו 1; רגע, דער קליענט גייט אריין די ווערט סערווער_יסן + 1 אין די "באַשטעטיקן ענטפֿערן נומער" פעלד; צום סוף, דער קליענט סענדז די פּאַקאַט צו די סערווער. דעם פּאַקאַט קענען פירן דאַטן פון דעם קליענט צו די סערווער. נאָך קאַמפּלישאַן פון די אַפּעריישאַנז, דער קליענט וועט אַרייַן די געגרינדעט שטאַט.

אַמאָל דער סערווער באקומט די ענטפער פּאַקאַט פון דעם קליענט, עס אויך סוויטשיז צו די עסטאַבלישעד שטאַט.

ווי איר קענען זען פון די אויבן פּראָצעס, ווען פּערפאָרמינג אַ דריי-וועג האַנדשייק, די דריט האַנדשייק איז ערלויבט צו פירן דאַטן, אָבער די ערשטער צוויי האַנדשייקס זענען נישט. דאָס איז אַ קשיא וואָס איז אָפט געפרעגט אין ינטערוויוז. אַמאָל די דריי-וועג כאַנדשייק איז גאַנץ, ביידע פּאַרטיעס אַרייַן די עסטאַבלישעד שטאַט, וואָס ינדיקייץ אַז די פֿאַרבינדונג איז הצלחה געגרינדעט, אין וואָס פונט דער קליענט און סערווער קענען אָנהייבן שיקן דאַטן צו יעדער אנדערער.

פארוואס דריי האַנדשייקס? ניט צוויי מאָל, פיר מאָל?
דער פּראָסט ענטפער איז, "ווייַל די דריי-וועג האַנדשייק געראַנטיז די פיייקייַט צו באַקומען און שיקן." דער ענטפער איז ריכטיק, אָבער עס איז בלויז די ייבערפלאַך סיבה, טוט נישט שטעלן די הויפּט סיבה. אין די פאלגענדע, איך וועל אַנאַלייז די סיבות פֿאַר די דרייַיק האַנדשייק פון דריי אַספּעקץ צו דיפּער אונדזער פארשטאנד פון דעם אַרויסגעבן.

די דריי-וועג האַנדשייק קענען יפעקטיוולי ויסמיידן די יניטיאַליזיישאַן פון כיסטאָריקלי ריפּיטיד קאַנעקשאַנז (די הויפּט סיבה)
די דריי-וועג האַנדשייק געראַנטיז אַז ביידע פּאַרטיעס האָבן באקומען אַ פאַרלאָזלעך ערשט סיקוואַנס נומער.
די דריי-וועג האַנדשייק אַוווידז ווייסטינג רעסורסן.

סיבה 1: ויסמיידן היסטאָריש דופּליקאַט דזשאָינס
אין אַ נאַטשעל, די הויפּט סיבה פֿאַר די דריי-וועג האַנדשייק איז צו ויסמיידן צעמישונג געפֿירט דורך די אַלט דופּליקאַט קשר יניטיאַליזיישאַן. אין אַ קאָמפּלעקס נעץ סוויווע, די טראַנסמיסיע פון ​​דאַטן פּאַקיץ איז ניט שטענדיק געשיקט צו די דעסטיניישאַן באַלעבאָס אין לויט מיט די ספּעסיפיעד צייט, און אַלט דאַטן פּאַקיץ קען אָנקומען ערשטער צו די דעסטיניישאַן באַלעבאָס ווייַל פון נעץ קאַנדזשעסטשאַן און אנדערע סיבות. צו ויסמיידן דעם, TCP ניצט אַ דריי-וועג האַנדשייק צו פאַרלייגן די קשר.

דריי-וועג האַנדשייק אַוווידז היסטארישע דופּליקאַט קאַנעקשאַנז

ווען אַ קליענט סענדז קייפל SYN קשר פאַרלייגן פּאַקיץ אין סאַקסעשאַן, אין סיטואַטיאָנס אַזאַ ווי נעץ קאַנדזשעסטשאַן, די פאלגענדע קען פּאַסירן:

1- די אַלט SYN פּאַקיץ אָנקומען צו די סערווער איידער די לעצטע SYN פּאַקיץ.
2- דער סערווער וועט ענטפֿערן אַ SYN + ACK פּאַקאַט צו דעם קליענט נאָך באקומען די אַלט SYN פּאַקאַט.
3- ווען דער קליענט באקומט די SYN + ACK פּאַקאַט, עס דיטערמאַנז אַז די קשר איז אַ היסטארישע פֿאַרבינדונג (סיקוואַנס נומער אויסגעגאנגען אָדער טיימאַוט) לויט זיין אייגענע קאָנטעקסט, און דאַן סענדז די RST פּאַקאַט צו די סערווער צו אַבאָרט די קשר.

מיט אַ צוויי-האַנדשייק קשר, עס איז קיין וועג צו באַשליסן אויב די קראַנט קשר איז אַ היסטארישע קשר. די דריי-וועג האַנדשייק אַלאַוז דער קליענט צו באַשליסן צי די קראַנט קשר איז אַ היסטארישע קשר באזירט אויף דעם קאָנטעקסט ווען עס איז גרייט צו שיקן די דריט פּאַקאַט:

1- אויב עס איז אַ היסטארישע פֿאַרבינדונג (סיקוואַנס נומער אויסגעגאנגען אָדער טיימאַוט), די פּאַקאַט געשיקט דורך די דריט כאַנדשייק איז אַ RST פּאַקאַט צו אַבאָרט די היסטארישע קשר.
2- אויב עס איז נישט אַ היסטארישע פֿאַרבינדונג, די פּאַקאַט געשיקט פֿאַר די דריט מאָל איז אַ ACK פּאַקאַט, און די צוויי קאַמיונאַקייטינג פּאַרטיעס הצלחה פאַרלייגן די קשר.

דעריבער, די הויפּט סיבה אַז TCP ניצט די דריי-וועג האַנדשייק איז אַז עס ינישאַלייזיז די קשר צו פאַרמייַדן היסטארישע קאַנעקשאַנז.

סיבה 2: צו סינגקראַנייז די ערשט סיקוואַנס נומערן פון ביידע פּאַרטיעס
ביידע זייטן פון די TCP פּראָטאָקאָל מוזן האַלטן אַ סיקוואַנס נומער, וואָס איז אַ שליסל פאַקטאָר צו ענשור פאַרלאָזלעך טראַנסמיסיע. סיקוואַנס נומערן שפּילן אַ וויכטיק ראָלע אין טקפּ קאַנעקשאַנז. זיי טאָן די פאלגענדע:

דער ופנעמער קענען עלימינירן דופּליקאַט דאַטן און ענשור די אַקיעראַסי פון די דאַטן.

דער ופנעמער קענען באַקומען פּאַקיץ אין די סדר פון די סיקוואַנס נומער צו ענשור די אָרנטלעכקייַט פון די דאַטן.

● די סיקוואַנס נומער קענען ידענטיפיצירן די דאַטן פּאַקאַט וואָס איז באקומען דורך די אנדערע פּאַרטיי, וואָס אַלאַוז פאַרלאָזלעך דאַטן טראַנסמיסיע.

דעריבער, ביי גרינדן אַ TCP פֿאַרבינדונג, דער קליענט סענדז SYN פּאַקיץ מיט די ערשט סיקוואַנס נומער און ריקווייערז די סערווער צו ענטפֿערן מיט אַ ACK פּאַקאַט וואָס ינדיקייץ אַ מצליח אָפּטראָג פון דעם קליענט ס SYN פּאַקאַט. דערנאָך, דער סערווער סענדז די SYN פּאַקאַט מיט די ערשט סיקוואַנס נומער צו דעם קליענט און ווארטן פֿאַר דער קליענט צו ענטפֿערן, אַמאָל און פֿאַר אַלע, צו ענשור אַז די ערשט סיקוואַנס נומערן זענען רילייאַבלי סינגקראַנייזד.

סינגקראַנייז די ערשט סיריאַל נומערן פון ביידע פּאַרטיעס

כאָטש אַ פיר-וועג האַנדשייק איז אויך מעגלעך צו רילייאַבלי סינגקראַנייז די ערשט סיקוואַנס נומערן פון ביידע פּאַרטיעס, די רגע און דריט סטעפּס קענען זיין קאַמביינד אין אַ איין שריט, ריזאַלטינג אין אַ דריי-וועג האַנדשייק. אָבער, די צוויי האַנדשאַקעס קענען בלויז גאַראַנטירן אַז דער ערשט סיקוואַנס נומער פון איין פּאַרטיי איז הצלחה באקומען דורך די אנדערע פּאַרטיי, אָבער עס איז קיין גאַראַנטירן אַז די ערשט סיקוואַנס נומער פון ביידע פּאַרטיעס קענען זיין באשטעטיקט. דעריבער, די דריי-וועג כאַנדשייק איז דער בעסטער ברירה צו נעמען אין סדר צו ענשור די פעסטקייַט און רילייאַבילאַטי פון טקפּ קאַנעקשאַנז.

סיבה 3: ויסמיידן ווייסטינג רעסורסן
אויב עס איז בלויז אַ "צוויי-האַנדשייק", ווען דער קליענט SYN בעטן איז אפגעשטעלט אין די נעץ, דער קליענט קען נישט באַקומען די ACK פּאַקאַט געשיקט דורך די סערווער, אַזוי די SYN וועט זיין ריזענט. אָבער, זינט עס איז קיין דריט כאַנדשייק, דער סערווער קען נישט באַשליסן אויב דער קליענט באקומען אַ ACK דערקענטעניש צו פאַרלייגן די קשר. דעריבער, דער סערווער קענען בלויז פּראָואַקטיוולי פאַרלייגן אַ קשר נאָך באקומען יעדער SYN בעטן. דאָס פירט צו די פאלגענדע:

וויסט פון רעסורסן: אויב דער קליענט ס SYN בעטן איז אפגעשטעלט, ריזאַלטינג אין ריפּיטיד טראַנסמיסיע פון ​​קייפל SYN פּאַקיץ, דער סערווער וועט פאַרלייגן קייפל יבעריק פאַרקריפּלט קאַנעקשאַנז נאָך ריסיווינג די בעטן. דאָס פירט צו אַ ומנייטיק וויסט פון סערווער רעסורסן.

אָנזאָג ריטענשאַן: רעכט צו דער פעלן פון אַ דריט כאַנדשייק, דער סערווער האט קיין וועג צו וויסן צי דער קליענט ריכטיק באקומען די ACK דערקענטעניש צו פאַרלייגן די קשר. דער רעזולטאַט, אויב אַרטיקלען באַקומען סטאַק אין די נעץ, דער קליענט וועט האַלטן שיקט SYN ריקוועס איבער און איבער ווידער, וואָס דער סערווער קעסיידער פאַרלייגן נייַ קאַנעקשאַנז. דאָס וועט פאַרגרעסערן נעץ קאַנדזשעסטשאַן און פאַרהאַלטן און נעגאַטיוולי ווירקן די קוילעלדיק נעץ פאָרשטעלונג.

ויסמיידן ווייסטינג רעסורסן

דעריבער, אין סדר צו ענשור די פעסטקייַט און רילייאַבילאַטי פון די נעץ קשר, TCP ניצט די דריי-וועג כאַנדשייק צו פאַרלייגן די קשר צו ויסמיידן די פּאַסירונג פון די פּראָבלעמס.

קיצער
דינעץ פּאַקאַט בראָקערטקפּ קשר פאַרלייגן איז דורכגעקאָכט מיט אַ דריי-וועג כאַנדשייק. בעשאַס די דריי-וועג כאַנדשייק, דער קליענט ערשטער סענדז אַ פּאַקאַט מיט די SYN פאָן צו די סערווער, וואָס ינדיקייץ אַז ער וויל צו פאַרלייגן אַ קשר. נאָך באקומען די בקשה פון דעם קליענט, דער סערווער ריספּאַנדז אַ פּאַקאַט מיט SYN און ACK פלאַגס צו דעם קליענט, וואָס ינדיקייץ אַז די קשר בעטן איז אנגענומען און סענדז זיין אייגענע ערשט סיקוואַנס נומער. צום סוף, דער קליענט ריספּאַנדז מיט אַ ACK פאָן צו די סערווער צו אָנווייַזן אַז די קשר איז הצלחה געגרינדעט. אזוי, די צוויי פּאַרטיעס זענען אין די געגרינדעט שטאַט און קענען אָנהייבן שיקן דאַטן צו יעדער אנדערער.

אין אַלגעמיין, די דריי-וועג כאַנדשייק פּראָצעס פֿאַר TCP פֿאַרבינדונג פאַרלייגן איז דיזיינד צו ענשור קשר פעסטקייַט און רילייאַבילאַטי, ויסמיידן צעמישונג און וויסט פון רעסורסן איבער היסטארישע קאַנעקשאַנז, און צו ענשור אַז ביידע פּאַרטיעס זענען ביכולת צו באַקומען און שיקן דאַטן.


פּאָסטן צייט: Jan-08-2025