1
00:00:00,000 --> 00:00:08,000
Podczas korzystania z protokołu TCP urządzenia muszą najpierw nawiązać połączenie z systemem równorzędnym przed transmisją danych,

2
00:00:09,000 --> 00:00:10,000
aby sesja

3
00:00:11,000 --> 00:00:16,000
połączenia zorientowana została ustanowiona między hostem A i hostem B.

4
00:00:17,000 --> 00:00:23,000
Jedna maszyna zainicjuje połączenie, które musi następnie zostać zaakceptowane przez drugą maszynę.

5
00:00:24,000 --> 00:00:28,000
Protokoły modułów oprogramowania w systemach operacyjnych urządzeń hosta komunikują się ze

6
00:00:29,000 --> 00:00:33,000
sobą, wysyłając komunikaty przez sieć, aby sprawdzić, czy transfer jest

7
00:00:34,000 --> 00:00:36,000
autoryzowany i że obie strony

8
00:00:37,000 --> 00:00:39,000
są gotowe do przesłania danych.

9
00:00:40,000 --> 00:00:48,000
Aby to nastąpiło, następuje trójstronne uzgadnianie między urządzeniami hosta używającymi protokołu TCP.

10
00:00:49,000 --> 00:00:55,000
Zatem host inicjujący sesję ustawi flagę SYN lub bit SYN w nagłówku

11
00:00:56,000 --> 00:01:00,000
TCP początkowego segmentu wysyłającemu do hosta B.

12
00:01:01,000 --> 00:01:05,000
Host A wybierze również początkowy numer sekwencji, który w

13
00:01:06,000 --> 00:01:08,000
tym przykładzie powiedzmy 100.

14
00:01:09,000 --> 00:01:12,000
Zatem flaga kontrolna SYN jest ustawiona, a numer

15
00:01:13,000 --> 00:01:16,000
sekwencji jest ustawiony na wartość początkową równą 100.

16
00:01:17,000 --> 00:01:20,000
Jest to używane do rozpoczęcia procesu uzgadniania.

17
00:01:21,000 --> 00:01:27,000
Ten segment synchronizacji określa również numer portu, z którym chce nawiązać

18
00:01:28,000 --> 00:01:32,000
połączenie, na przykład port 80 lub HTTP.

19
00:01:33,000 --> 00:01:38,000
Host po prawej stronie będzie oczekiwał na żądanie połączenia od zdalnego klienta, w

20
00:01:39,000 --> 00:01:41,000
tym przypadku hosta A.

21
00:01:42,000 --> 00:01:45,000
kiedy SYN jest odebrany i

22
00:01:46,000 --> 00:01:53,000
zaakceptowany host b odeśle segment TCP z ustawionymi flagami SYN i ACK.

23
00:01:54,000 --> 00:01:57,000
Zatem flagi kontrolne SYN i ACK są włączone

24
00:01:58,000 --> 00:02:01,000
i służą do negocjowania połączenia i potwierdzania odbioru

25
00:02:02,000 --> 00:02:04,000
segmentu synchronizacji inicjałów nadawcy.

26
00:02:05,000 --> 00:02:08,000
B ustawia również początkowy numer sekwencji, aby wskazać

27
00:02:09,000 --> 00:02:12,000
następny numer kolejnego bajtu danych, które spodziewa się

28
00:02:13,000 --> 00:02:15,000
odebrać od hosta A.

29
00:02:16,000 --> 00:02:21,000
host B ustawia także flagę potwierdzenia, w tym

30
00:02:22,000 --> 00:02:30,000
przypadku 101, jak wskazuje flaga ACK, następna porcja danych, którą host oczekuje odebrać.

31
00:02:31,000 --> 00:02:34,000
Tak więc host A początkowo wysłał numer sekwencyjny 100

32
00:02:35,000 --> 00:02:39,000
i host B, w tym przypadku przyjmując, że rozmiar okna wynoszący 1

33
00:02:40,000 --> 00:02:41,000
odsyła potwierdzenie 101.

34
00:02:42,000 --> 00:02:47,000
Trzeci krok w potrójnym uzgadnianiu polega na tym, że host inicjujący

35
00:02:48,000 --> 00:02:56,000
w tym przypadku host A odebrał SYN z hosta B i odsyła segment TCP z polem kontrolnym ustawionym

36
00:03:01,000 --> 00:03:06,000
na ACK, innymi słowy potwierdzeniem. 36 W związku z tym host A potwierdza następny segment,

37
00:03:07,000 --> 00:03:11,000
który spodziewa się odebrać od hosta B w tym przypadku 301, początkowo host B wysłał sekwencyjny numer 300.

38
00:03:12,000 --> 00:03:16,000
Tak więc host A spodziewa się następnego segmentu 301.

39
00:03:17,000 --> 00:03:21,000
Host A ustawia numer sekwencji na 101.

40
00:03:22,000 --> 00:03:29,000
Początkowy segment wysłany to 100, a następny w tym przypadku to 101, ponieważ bit

41
00:03:30,000 --> 00:03:32,000
SYN lub flaga SYN

42
00:03:33,000 --> 00:03:37,000
jest rozbrojony, co potwierdza pomyślne zakończenie potrójnego uzgadniania.

43
00:03:38,000 --> 00:03:45,000
Aby powtórzyć, bity kontrolne lub flagi początkowo A wysyłają segment

44
00:03:46,000 --> 00:03:51,000
z ustawionym bitem SYN lub SYN.

45
00:03:55,000 --> 00:04:00,000
Zatem flaga kontrolna SYN jest ustawiona na 1. 46 Host B w drugim kroku potrójnego

46
00:04:01,000 --> 00:04:04,000
uzgadniania ustawia swoje flagi kontrolne lub bity na SYN ACK.

47
00:04:05,000 --> 00:04:07,000
Innymi słowy, bit SYN jest ustawiony na

48
00:04:08,000 --> 00:04:10,000
1, a bit ACK na 1.

49
00:04:11,000 --> 00:04:13,000
W ostatnim kroku potrójnego

50
00:04:14,000 --> 00:04:19,000
uzgadniania Host A ustawia bit ACK na 1 lub włącza flagę ACK.

51
00:04:21,000 --> 00:04:24,000
Bit SYN lub flaga SYN jest ustawiony na 0, aby wskazać,

52
00:04:25,000 --> 00:04:27,000
że potrójne uzgadnianie zakończyło się pomyślnie.

53
00:04:28,000 --> 00:04:32,000
Teraz numery porządkowe i podziękowania mogą powodować wiele zamieszania, więc teraz zamierzam je

54
00:04:33,000 --> 00:04:34,000
bardziej szczegółowo wyjaśnić.

55
00:04:35,000 --> 00:04:39,000
Zakładamy, że w tym przykładzie użyto okna o rozmiarze 1.

56
00:04:40,000 --> 00:04:42,000
Teraz, jeśli pamiętasz rozmiar okna, to maksymalna ilość danych,

57
00:04:48,000 --> 00:04:52,000
które odbiorca może odbierać od nadawcy i przetwarzać poprawnie. 59 Zakładamy, że tylko 1 segment

58
00:04:53,000 --> 00:04:56,000
może zostać przesłany w dowolnym momencie, zanim zostanie odebrane

59
00:04:57,000 --> 00:04:59,000
potwierdzenie potwierdzające odbiór tego segmentu.

60
00:05:00,000 --> 00:05:03,000
Przyjmijmy więc, że A zaczyna się od początkowej sekwencji

61
00:05:04,000 --> 00:05:09,000
5 z powodu rozmiaru okna 1, tylko 1 segment może być wysłany z A do B.

62
00:05:10,000 --> 00:05:14,000
B pomyślnie odbiera segment od A i

63
00:05:15,000 --> 00:05:19,000
potwierdza następny segment, który chce otrzymać.

64
00:05:20,000 --> 00:05:23,000
więc zamiast potwierdzać otrzymanie numeru sekwencyjnego 5,

65
00:05:24,000 --> 00:05:26,000
potwierdza on numer sekwencyjny

66
00:05:27,000 --> 00:05:32,000
6, co oznacza, że wszystkie poprzednie numery sekwencji będą poprawnie odbierane.

67
00:05:33,000 --> 00:05:37,000
Zatem B potwierdza w tym przypadku sekwencję numer 6, ale B może

68
00:05:42,000 --> 00:05:47,000
zaczynać się od początkowego numeru sekwencyjnego 10. 71 więc w nagłówku TCP B mówi A, że

69
00:05:48,000 --> 00:05:52,000
jego początkowy numer sekwencyjny to 10 i że pomyślnie otrzymał sekwencję o numerze 5 od

70
00:05:53,000 --> 00:05:56,000
A i oczekuje sekwencji numer 6 od A w następnym pakiecie.

71
00:05:57,000 --> 00:06:00,000
Załóżmy, że z powodzeniem odbiera ten segment,

72
00:06:01,000 --> 00:06:05,000
więc A będzie teraz wysyłać segment 6 do B, innymi

73
00:06:06,000 --> 00:06:08,000
słowy, kolejny numer sekwencji.

74
00:06:09,000 --> 00:06:14,000
A również potwierdza odbiór segmentu 10 od hosta B.

75
00:06:15,000 --> 00:06:19,000
A więc A pomyślnie odebrał segment o numerze kolejnym 10.

76
00:06:20,000 --> 00:06:21,000
Należy jeszcze

77
00:06:22,000 --> 00:06:24,000
raz zaznaczyć, że host może losowo

78
00:06:25,000 --> 00:06:27,000
wybierać początkowe numery sekwencji, a

79
00:06:28,000 --> 00:06:31,000
więc w początkowym potrójnym uzgadnianiu, że informacja musi zostać

80
00:06:35,000 --> 00:06:42,000
przekazana między dwoma hostami, aby wiedzieli, jakie są początkowe numery sekwencji. 84
Zatem ponownie A wysyła sekwencję numer 6 do B i potwierdza sekwencję 11.

81
00:06:43,000 --> 00:06:45,000
Załóżmy, że B z powodzeniem

82
00:06:46,000 --> 00:06:49,000
odbiera ten segment i dlatego potwierdza dla segmentu 7.

83
00:06:50,000 --> 00:06:52,000
Następny segment, który ma

84
00:06:53,000 --> 00:06:58,000
otrzymać ponownie 7 w potwierdzeniu wskazuje, że poprzedni segment został pomyślnie odebrany.

85
00:06:59,000 --> 00:07:03,000
Zatem host B, ustawiając numer sekwencji na 7, mówi hostowi A, że

86
00:07:04,000 --> 00:07:06,000
numer sekwencji 6 został pomyślnie odebrany.

87
00:07:07,000 --> 00:07:10,000
Host B wysyła numer sekwencji 11, ponieważ jest

88
00:07:11,000 --> 00:07:14,000
to następny numer sekwencji, który A oczekuje odebrać.

89
00:07:15,000 --> 00:07:19,000
Należy jeszcze raz zauważyć, że początkowe numery sekwencji,

90
00:07:25,000 --> 00:07:29,000
które host oczekuje, a kolejność numerów na przykład

91
00:07:30,000 --> 00:07:36,000
11 oznacza, że pomyślnie otrzymano numer porządkowy 10 i poprzedni numer sekwencji.

92
00:07:37,000 --> 00:07:41,000
Teraz kontrola przepływu po raz kolejny zapobiega problemowi, w którym nadawca wysyła tak dużo

93
00:07:45,000 --> 00:07:47,000
danych 99 że bufory odbiornika są przepełnione.

94
00:08:05,000 --> 00:08:09,000
Jeśli jest to bardzo potężna maszyna i jest to starsza maszyna

to nie jest tak potężne, możliwe, że A może zostać pokonany

bufory B, ponieważ wysyłają tak dużo danych. 103 Tak więc B potrzebuje mechanizmu, aby poinformować A o spowolnieniu, aby D

95
00:08:14,000 --> 00:08:16,000
mógł pomyślnie przetworzyć ruch, który odbiera. 105 Jako przykład załóżmy, że rozmiar okna w tym przykładzie

96
00:08:49,000 --> 00:08:51,000
wynosi 3 zamiast 1. 107
A może wysłać 3 segmenty danych przed uzyskaniem potwierdzenia. 108
Zaletą zwiększenia rozmiaru okna jest przepustowość

może znacznie wzrosnąć, ponieważ host może przesłać więcej danych

z mniejszą liczbą potwierdzeń, a zatem czasy podróży w obie strony drastycznie spadają. 111
W tym przykładzie A wysyła 3 segmenty do B. 112 Załóżmy, że

97
00:09:00,000 --> 00:09:03,000
odebrany bufor B jest pełny i nie może obsłużyć takiej ilości danych 114 B wyśle nie gotowy wskaźnik do A 115 i robi to poprzez ustawienie rozmiaru okna na 0.

98
00:09:20,000 --> 00:09:27,000
To mówi nadawcy, aby przestał wysyłać dane

i czekać na gotowy wskaźnik od odbiornika. 118
Zakładając, że host B jest teraz w stanie przetworzyć dane

w jego buforze odbioru i może teraz otrzymywać więcej danych. 120
Może wysłać gotowy wskaźnik do A, aby powiadomić go o wznowieniu wysyłania datagramów.

99
00:09:37,000 --> 00:09:42,000
więc A wznawia transmisję, wysyłając na przykład 3 segmenty do B. 122
Ponieważ rozmiar okna wynosi 3. 123 Proszę zauważyć w tle, że host TCP w rozmowie może negocjować różne

100
00:09:54,000 --> 00:09:58,000
parametry, a jednym z nich jest kontrola przepływu 125 gdzie odbiornik może poinformować nadawcę o spowolnieniu lub przestać wysyłać dane 126 dopóki odbiornik nie ma dostępnej przestrzeni buforowej do odbioru przesyłanych segmentów.

101
00:10:08,000 --> 00:10:12,000
Pozwala to na komunikację pomiędzy bardzo potężnymi

lub szybka maszyna i wolniejsza lub mniej wydajna maszyna

gdzie mogą wynegocjować szybkość transmisji.
