Sieć

Jakie są kroki w uzgadnianiu TCP??

Jakie są kroki w uzgadnianiu TCP??

TCP lub Transmission Control Protocol to standardowy protokół warstwy transportowej, którego Internet używa do przesyłania danych. Request for Comments (RFC) 793 definiuje protokół TCP jako niezawodny i zorientowany na połączenie protokół. Ponieważ jest zorientowany na połączenie, przed przesłaniem jakichkolwiek danych należy ustanowić ścieżkę lub połączenie. TCP wykorzystuje trójstronny mechanizm uzgadniania do nawiązywania połączenia między dwoma urządzeniami. W tym przewodniku zobaczymy, jak działa mechanizm uzgadniania trójstronnego. Przyjrzyjmy się najpierw problemom z modelem dwukierunkowego uścisku dłoni.

Problemy z dwukierunkowym modelem uścisku dłoni

Dwukierunkowy model uzgadniania nie powiódł się z powodu starego problemu z duplikatem pakietu. Załóżmy, że stary zduplikowany pakiet dociera do serwera. Ten stary pakiet przybył z poprzednio zamkniętego połączenia i zawiera numer sekwencyjny „z”. W pewnym momencie nowego połączenia serwer przyjmuje pakiet o numerze sekwencyjnym 'z'. Kiedy otrzymuje ten stary pakiet o tym samym numerze sekwencyjnym „z”, nieświadomie akceptuje ten stary pakiet i odrzuca aktualny pakiet z nowego połączenia.

W powyższym przypadku, jeśli połączenie między klientem a serwerem nie jest nawiązywane, nadejście starego zduplikowanego pakietu żądania połączenia nadal powoduje problemy. Jeśli serwer otrzyma taki pakiet, odpowie pakietem SYN+ACK. Ten pakiet zostanie odrzucony przez klienta, ponieważ nie zamierza się połączyć. Ale serwer wejdzie w stan impasu, czekając, aż klient wyśle ​​dane.

Innym problemem jest to, że jeśli host C wyśle ​​żądanie połączenia do serwera podszywając się pod klienta, serwer odpowie klientowi ACK. Klient odrzuci ten pakiet „ACK” i powie serwerowi, aby zakończył połączenie. Podczas tego okresu zdarzeń host C może przeprowadzić atak fałszowania, wysyłając wiele pakietów.

Model trójdrożnego uścisku dłoni w TCP/IP

Bardzo ważny jest model trójstronnego uścisku dłoni. Jeśli go nie użyjemy i zaczniemy bezpośrednio wysyłać dane, aplikacja odbierająca może zacząć odbierać zduplikowane pakiety. Atakujący może mieć szansę na przeprowadzenie ataków (takich jak DDoS) pomiędzy połączeniem. Procedurę trójetapowego uzgadniania uruchamia jedna maszyna, a druga strona na nią reaguje. W celu wyjaśnienia tej procedury zastosowano następującą konwencję:

„Jeżeli strona otrzyma pakiet o numerze sekwencyjnym 'x', odpowie numerem ACK 'x+1'.”

Podsumujmy kroki wykonywane podczas trójetapowego uzgadniania między komputerem klienckim a serwerem:

Krok 1. W pierwszym uzgadnianiu klient wysyła do serwera pakiet żądania połączenia SYN z losowym początkowym numerem sekwencyjnym ('x').

Krok 2. W drugim uzgadnianiu serwer odpowiada pakietem SYN, który ma losowy numer sekwencyjny („y”) i pakietem ACK z numerem sekwencyjnym („x+1”), aby potwierdzić wysłany początkowy numer sekwencyjny („x”) przez klienta.

Krok 3. W trzecim uzgadnianiu klient wyśle ​​pakiet ACK z numerem sekwencji ('y+1') do serwera w celu potwierdzenia pakietu SYN ('y') wysłanego przez serwer.

Krok 4. Oba końce są teraz zsynchronizowane i mogą niezależnie rozpocząć transmisję danych. [1]

Procedura trójstronnego uzgadniania TCP jest nadal ważna, jeśli obie strony jednocześnie rozpoczną proces inicjalizacji. W takiej sytuacji każda maszyna po wysłaniu pakietu „SYN” otrzyma segment „SYN” bez potwierdzenia. Jeśli stary zduplikowany pakiet „SYN” dotrze do odbiorcy, może wydawać się odbiorcy, że w tym samym czasie trwa proces inicjacji połączenia. Możemy użyć pakietów „reset”, aby usunąć tę niejednoznaczność.

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 przesłać segment TCP z ustawionym bitem FINFIN. Oznacza to, że strona wysyłająca nie ma już żadnych danych do wysłania. Strona odbierająca potwierdzi ten pakiet FIN, wysyłając pakiet potwierdzający. Spowoduje to zamknięcie połączenia z jednej strony (strony nadawcy). Teraz odbiorca wykona te same kroki, aby zakończyć połączenie w swoim imieniu. To całkowicie zamknie połączenie.

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

W przypadku utraty lub zablokowania ACK z klienta do serwera w trzecim etapie uzgadniania, klient nie będzie świadomy tej sytuacji. Klient założy, że połączenie zostało nawiązane i rozpocznie wysyłanie danych. Serwer nadal czeka na ACK, które już zostało utracone, więc odrzuci dane otrzymane od klienta. [2]

Wniosek

W tym przewodniku poznaliśmy procedury połączenia TCP przy użyciu trójstronnego uzgadniania. Widzieliśmy również problem zduplikowanych pakietów związanych z procedurą dwukierunkowego uzgadniania i jak został on rozwiązany w modelu uzgadniania trójstronnego. Wielu badaczy wniosło różne artykuły badawcze dotyczące ulepszenia modelu trójstronnego 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., & Chang, K. (2016). TRAP: Trójkierunkowy serwer uzgadniania do nawiązywania połączenia TCP. Nauki stosowane, 6(11), 358. https://doi.org/10.3390/aplikacja6110358
  1. Qin-Min Ma, Shou-Yin Liu, Xiao-jun Wen. (2016). Protokół TCP Three-Way Handshake oparty na splątaniu kwantowym. Journal of Computers, 27 (3), 33-40, doi:10.3966/199115592016102703004
5 najlepszych ergonomicznych myszy komputerowych dla systemu Linux
Czy długotrwałe korzystanie z komputera powoduje ból nadgarstka lub palców?? Cierpisz na sztywne stawy i ciągle musisz uścisnąć dłonie? Czy czujesz pa...
Jak zmienić ustawienia myszy i touchpada za pomocą Xinput w systemie Linux?
Większość dystrybucji Linuksa jest domyślnie dostarczana z biblioteką „libinput” do obsługi zdarzeń wejściowych w systemie. Może przetwarzać zdarzenia...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...