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
Gry Najlepsze gry w laboratorium aplikacji Oculus
Najlepsze gry w laboratorium aplikacji Oculus
Jeśli jesteś posiadaczem gogli Oculus, musisz wiedzieć o sideloadingu. Sideloading to proces instalowania w zestawie nagłownym treści innych niż sklep...
Gry Top 10 Games to Play on Ubuntu
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...
Gry 5 najlepszych gier zręcznościowych dla systemu Linux
5 najlepszych gier zręcznościowych dla systemu Linux
W dzisiejszych czasach komputery to poważne maszyny używane do gier. Jeśli nie możesz uzyskać nowego wysokiego wyniku, będziesz wiedział, o co mi chod...