Jakie są kroki w uścisku dłoni TCP?

Jakie są kroki w uścisku dłoni TCP?

TCP lub protokół kontroli transmisji to standardowy protokół warstwy transportowej, którego Internet wykorzystuje do transmisji danych. Prośba o komentarze (RFC) 793 określa TCP jako wiarygodny i zorientowany na połączenie protokół. Ponieważ jest ono zorientowane na połączenie, przed przesłaniem jakichkolwiek danych należy ustalić ścieżkę lub połączenie. TCP używa trójstronnego mechanizmu uścisku dłoni do ustanowienia połączenia między dwoma urządzeniami. W tym przewodniku zobaczymy, jak działa trójstronny mechanizm uścisku dłoni. Najpierw zobaczmy problemy z dwukierunkowym modelem uścisku dłoni.

Problemy z dwukierunkowym modelem uścisku dłoni

Dwukierunkowy model uścisku dłoni nie powiódł się z powodu starego zduplikowanego problemu pakietu. Załóżmy, że stary zduplikowany pakiet przybywa na komputer serwerowy. Ten stary pakiet przybył z wcześniej zamkniętego połączenia i zawiera numer sekwencji „Z”. W pewnym czasie podczas nowego połączenia serwer akceptuje pakiet z numerem sekwencji „Z”. Kiedy odbiera ten stary pakiet z tym samym numerem sekwencji „Z”, nieświadomie akceptuje ten stary pakiet i odrzuca rzeczywisty pakiet z nowego połączenia.

W powyższym przypadku, jeśli połączenie nie odbywa się między klientem a serwerem, przybycie starego zduplikowanego pakietu żądania połączenia nadal powoduje problemy. Jeśli serwer otrzyma taki pakiet, odpowie na pakiet SYN+ACK. Ten pakiet zostanie upuszczony przez klienta, ponieważ nie zamierzał się połączyć. Ale serwer wprowadzi stan impasu, czekając na wysłanie danych.

Kolejnym problemem jest to, że jeśli host C wyśle ​​żądanie połączenia do serwera, podszywając się pod klienta, serwer odpowie na klienta. Klient odrzuci ten pakiet „ACK” i poinformuje serwer, aby zakończył połączenie. W tym okresie wydarzeń Host C może rozpocząć atak fałszowania, wysyłając wiele pakietów.

Trójstronny model uścisku dłoni w TCP/IP

Trójstronny model uścisku dłoni jest bardzo ważny. Jeśli go nie używamy i zaczniemy wysyłać dane, aplikacja odbierająca może rozpocząć odbieranie zduplikowanych pakietów. Atakujący może mieć szansę na rozpoczęcie ataków (takich jak DDOS) pomiędzy połączeniem. Trójstronna procedura uścisku dłoni jest uruchamiana przez jedną maszynę, a druga strona odpowiada na nią. Do wyjaśnienia tej procedury stosuje się następującą konwencję:

„Jeśli strona odbędzie pakiet z numerem sekwencji„ x ”, odpowie na numer ACK„ x+1 ”."

Podsumujmy kroki wykonane w trójstronnym uścisku dłoni między komputerem klienckim a komputerem serwerowym:

Krok 1. W pierwszym uścisku dłoni klient wysyła pakiet żądania połączenia SYN z losowym numerem początkowej sekwencji („x”).

Krok 2. W drugim uścisku, serwer odpowiada pakietem SYN, który ma losowy numer sekwencji („Y”) i pakiet ACK z numerem sekwencji („x+1”), aby potwierdzić wysłany początkowy numer sekwencji („x”) przez klienta.

Krok 3. W trzecim uścisku dłoni klient wyśle ​​pakiet ACK z numerem sekwencji („Y+1”) do serwera w celu potwierdzenia pakietu SYN („Y”) wysyłanego przez serwer.

Krok 4. Oba końce są teraz synchronizowane i mogą rozpocząć przesyłanie danych niezależnie. [1]

Trójdrożna procedura uścisku dłoni TCP jest nadal ważna, jeśli obie strony jednocześnie rozpoczynają proces inicjalizacji. W takiej sytuacji każda maszyna po wysłaniu pakietu „syn” otrzyma segment „syn” bez potwierdzenia. Jeśli do odbiornika dotrze stary duplikat „syn”, może wydawać się, że odbiornik trwa w tym samym czasie proces inicjacji połączenia. Możemy użyć pakietów „Resetuj”, aby usunąć tę dwuznaczność.

Zakończenie połączenia TCP

Każda z dwóch stron może zakończyć połączenie TCP. W tym celu każda strona może przesyłać segment TCP z zestawem bitów płetwy. Oznacza to, że strona wysyłania nie ma więcej danych do wysłania. Strona odbierająca potwierdzi ten pakiet płetwy, wysyłając pakiet potwierdzenia. To zamknie połączenie z jednej strony (strona nadawcy). Teraz odbiornik użyje tych samych kroków, aby zakończyć połączenie w jego imieniu. To całkowicie zamknie połączenie.

Problemy z trójstronnym modelem uścisku dłoni

W przypadku utraty lub zablokowania ACK z klienta na serwer. Klient założy, że połączenie jest ustanowione i zacznie wysyłać dane. Serwer wciąż czeka na ACK, który został już utracony, więc odrzuci dane otrzymane od klienta. [2]

Wniosek

W tym przewodniku dowiedzieliśmy się o procedurach połączenia TCP za pomocą trójdrożnego uścisku dłoni. Widzieliśmy również problem zduplikowanych pakietów powiązanych z dwukierunkową procedurą uścisku dłoni i sposób ich rozwiązania za pomocą trójstronnego modelu uścisku dłoni. Wielu badaczy przyczyniło się do różnych artykułów naukowych w celu poprawy trójstronnego modelu uścisku dłoni i przezwyciężenia związanych z nim problemów.

Bibliografia

  1. Hsu, f., Hwang, y., Tsai, c., Cai, w., Lee, c., I Chang, K. (2016). Pułapka: trójstronny serwer uścisku dłoni do ustanowienia połączenia TCP. Applied Sciences, 6 (11), 358. https: // doi.Org/10.3390/App6110358
  1. Qin-min MA, Shou-Yin Liu, Xiao-jun Wen. (2016). Trójstronny protokół uścisku dłoni TCP oparty na splątaniu kwantowym. Journal of Computers, 27 (3), 33-40, doi: 10.3966/199115592016102703004