Hálózatépítés

Melyek a TCP kézfogás lépései?

Melyek a TCP kézfogás lépései?

A TCP vagy Transmission Control Protocol egy szabványos szállítási réteg protokoll, amelyet az internet az adatok továbbítására használ. Megjegyzések kérése (RFC) 793 a TCP-t megbízható és kapcsolatorientált protokollként határozza meg. Mivel kapcsolat-orientált, az adatok továbbítása előtt létre kell hozni egy útvonalat vagy kapcsolatot. A TCP háromirányú kézfogási mechanizmust használ a kapcsolat létrehozásához két eszköz között. Ebben az útmutatóban megnézzük, hogyan működik a háromirányú kézfogás mechanizmusa. Először nézzük meg a kétirányú kézfogás modell problémáit.

Problémák a kétirányú kézfogás modellel

A kétirányú kézfogás modell egy régi duplikált csomagprobléma miatt nem sikerült. Tegyük fel, hogy egy régi duplikált csomag érkezik a kiszolgáló géphez. Ez a régi csomag egy korábban bezárt kapcsolatból érkezett, és egy „z” sorszámot tartalmaz. Az új kapcsolat során a kiszolgáló egy „z” sorszámú csomagot fogad el. Amikor megkapja ezt a régi csomagot ugyanazzal a „z” sorszámmal, öntudatlanul elfogadja ezt a régi csomagot és eldobja a tényleges csomagot az új kapcsolattól.

A fenti esetben, ha a kliens és a szerver között nincs kapcsolat, a régi duplikált kapcsolati kérelem érkezése még mindig problémákat okoz. Ha a szerver fogad ilyen csomagot, akkor SYN + ACK csomaggal válaszol vissza. Ezt a csomagot az ügyfél eldobja, mert nem szándékozott csatlakozni. De a szerver belép a holtpont állapotába, és várja, hogy az ügyfél elküldje az adatokat.

Egy másik probléma az, hogy ha a C hoszt csatlakozási kérelmet küld a kiszolgálónak az ügyfél megszemélyesítésével, akkor a kiszolgáló ACK-val válaszol vissza az ügyfélre. Az ügyfél eldobja ezt az „ACK” csomagot, és felszólítja a kiszolgálót, hogy szakítsa meg a kapcsolatot. Az események ezen időtartama alatt a C állomás sok csomag küldésével hamis támadást indíthat.

A háromutas HandShake modell TCP / IP-ben

A háromirányú kézfogás modell nagyon fontos. Ha nem használjuk, és közvetlenül megkezdjük az adatok küldését, akkor a fogadó alkalmazás megkezdheti a duplikált csomagok fogadását. A támadó esélyt kap arra, hogy támadásokat indítson (például DDoS) egy kapcsolat között. A háromirányú kézfogási eljárást az egyik gép elindítja, a másik oldal pedig reagál rá. A következő konvenciót használjuk az eljárás magyarázatára:

„Ha egy webhely„ x ”sorszámú csomagot kap, akkor az„ x + 1 ”ACK számmal válaszol.”

Összegezzük az ügyfélgép és a kiszolgálógép közötti háromirányú kézfogás során végrehajtott lépéseket:

1. lépés. Az első kézfogáskor az ügyfél egy SYN kapcsolati kérelem csomagot küld egy véletlenszerű kezdő sorszámmal ('x') a szervernek.

2. lépés. A második kézfogásban a szerver egy SYN csomaggal válaszol, amely véletlenszerű sorszámmal ('y') és egy ACK csomaggal rendelkezik egy sorszámmal ('x + 1'), hogy nyugtázza a kezdeti sorszámot ('x'). az ügyfél által.

3. lépés. A harmadik kézfogáskor az ügyfél egy ACK csomagot küld egy sorszámmal ('y + 1') a szervernek a szerver által küldött SYN ('y') csomag nyugtázására.

4. lépés. Mindkét vége szinkronizálva van, és önállóan kezdheti meg az adatok továbbítását. [1]

A TCP háromutas kézfogási eljárás továbbra is érvényes, ha mindkét fél egyszerre megkezdi az inicializálási folyamatot. Ilyen helyzetben minden gép „SYN” csomag elküldése után nyugtázás nélküli „SYN” szegmenst kap. Ha egy régi duplikált „SYN” csomag érkezik a vevőhöz, akkor a vevő számára úgy tűnhet, hogy egyidejűleg folyamatban van egy kapcsolatindítás. Használhatjuk a „reset” csomagokat ennek a kétértelműségnek a megszüntetésére.

TCP kapcsolat megszüntetése

A két fél bármelyike ​​felmondhatja a TCP kapcsolatot. Ehhez bármelyik fél továbbíthat egy TCP szegmenst a FIN bitkészlettel. Ez azt jelenti, hogy a küldő félnek nincs több elküldendő adata. A fogadó fél nyugtázó csomag küldésével nyugtázza ezt a FIN csomagot. Ez lezárja a kapcsolatot az egyik oldalról (a feladó oldaláról). Most a vevő ugyanazokkal a lépésekkel fogja megszakítani a kapcsolatot a nevében. Ez teljesen megszünteti a kapcsolatot.

Problémák a háromutas kézfogás modellel

Abban az esetben, ha az ügyfélkiszolgálóról az ACK elveszik vagy blokkolódik a harmadik kézfogás szakaszában, az ügyfél nem fog tudni erről a helyzetről. Az ügyfél feltételezi, hogy a kapcsolat létrejött, és elkezdi az adatok küldését. A szerver továbbra is várja az ACK-t, amely már elveszett, így eldobja az ügyféltől kapott adatokat. [2]

Következtetés

Ebben az útmutatóban megismerkedtünk a TCP csatlakozási eljárásokkal egy háromirányú kézfogás segítségével. Láttuk a kétirányú kézfogási eljáráshoz kapcsolódó duplikált csomagok problémáját és azt, hogy hogyan oldották meg egy háromutas kézfogás modellel. Sok kutató különféle kutatási cikkekkel járult hozzá a háromirányú kézfogás modelljének javításához és a vele kapcsolatos problémák leküzdéséhez.

Hivatkozások

  1. Hsu, F., Hwang, Y., Tsai, C., Cai, W., Lee, C., & Chang, K. (2016). TRAP: Háromutas kézfogás szerver a TCP kapcsolat létrehozásához. Alkalmazott tudományok, 6 (11), 358. https: // doi.org / 10.3390 / app6110358
  1. Qin-Min Ma, Shou-Yin Liu, Xiao-jun Wen. (2016). TCP háromutas kézfogás protokoll, kvantum összefonódáson alapul. Journal of Computers, 27 (3), 33-40, doi: 10.3966/199115592016102703004
Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...
Hogyan lehet játékot fejleszteni Linuxon
Egy évtizeddel ezelőtt nem sok Linux-felhasználó jósolta, hogy kedvenc operációs rendszerük egy napon a videojátékok népszerű játékplatformja lesz. El...