1
00:00:00,000 --> 00:00:05,000
W swojej podstawowej postaci, TCP może mieć rozmiar okna 1,

2
00:00:06,000 --> 00:00:10,000
co oznacza, że dla każdego segmentu nadawanego

3
00:00:11,000 --> 00:00:16,000
przez nadawcę, odbiornik wysyła potwierdzenie dla tego pojedynczego segmentu.

4
00:00:17,000 --> 00:00:19,000
Powoduje to jednak znaczne

5
00:00:20,000 --> 00:00:23,000
spowolnienie przepustowości, ponieważ nadawca nie może

6
00:00:24,000 --> 00:00:29,000
przesyłać więcej danych, dopóki nie otrzyma potwierdzenia wysłania tego pojedynczego segmentu.

7
00:00:30,000 --> 00:00:32,000
Przepustowość będzie bardzo niska w zależności

8
00:00:33,000 --> 00:00:34,000
od czasu wyjazdu

9
00:00:35,000 --> 00:00:38,000
w obie strony między wysłaniem danych a odebraniem potwierdzenia.

10
00:00:39,000 --> 00:00:42,000
Protokół TCP pozwala jednak na większe rozmiary okien, aby umożliwić przesłanie większej

11
00:00:43,000 --> 00:00:44,000
liczby segmentów przed odebraniem

12
00:00:49,000 --> 00:00:50,000
potwierdzenia. 12

13
00:00:51,000 --> 00:00:52,000
Okno to liczba segmentów

14
00:00:53,000 --> 00:00:56,000
danych, które nadawca może wysłać bez otrzymania potwierdzenia od odbiorcy.

15
00:00:57,000 --> 00:00:58,000
W tym przypadku

16
00:00:59,000 --> 00:01:02,000
ustawiliśmy go na 1, co oznacza, że gdy host

17
00:01:03,000 --> 00:01:07,000
A chce wysłać ruch do hosta B, może wysłać 1 segment, ponieważ rozmiar

18
00:01:03,000 --> 00:01:07,000
okna jest ustawiony na 1 host B, po otrzymaniu tego segmentu, wysyła potwierdzenie.

19
00:01:14,000 --> 00:01:18,000
W tym przykładzie, załóżmy, że host A, wyśle segment z numerem sekwencji 1 hosta

20
00:01:19,000 --> 00:01:21,000
B, który potwierdzi dla segmentu 2.

21
00:01:22,000 --> 00:01:24,000
Host A następnie wyśle segment

22
00:01:25,000 --> 00:01:29,000
2 i host B, po pomyślnym otrzymaniu tego segmentu potwierdzi

23
00:01:30,000 --> 00:01:32,000
lub potwierdzi dla segmentu 3.

24
00:01:33,000 --> 00:01:36,000
Host A następnie wyśle segment 3 do hosta B.

25
00:01:37,000 --> 00:01:41,000
Proces ten będzie kontynuowany przez cały czas trwania sesji, co

26
00:01:42,000 --> 00:01:46,000
oczywiście jest bardzo wiarygodne, ale przepustowość jest bardzo niska.

27
00:01:47,000 --> 00:01:50,000
A musiałby buforować wychodzące segmenty, dopóki

28
00:01:51,000 --> 00:01:54,000
nie otrzyma potwierdzenia dla transmitowanego segmentu.

29
00:01:55,000 --> 00:01:57,000
teraz dla argumentu załóżmy, że trwa

30
00:01:58,000 --> 00:02:00,000
1 sekunda dla ruchu z

31
00:04:04,000 --> 00:04:06,000
początkiem z małym rozmiarem okna,

32
00:04:07,000 --> 00:04:10,000
a następnie wykładniczo zwiększa rozmiar okna, aby ocenić

33
00:04:11,000 --> 00:04:15,000
ilość danych, które odbiornik może odbierać i co sieć może obsłużyć.

34
00:04:16,000 --> 00:04:20,000
Zauważyłeś to prawdopodobnie, gdy pobierasz plik z Internetu, początkowo

35
00:04:21,000 --> 00:04:23,000
prędkość pobierania jest wolna,

36
00:04:24,000 --> 00:04:27,000
ale z czasem wzrasta do określonego punktu.

37
00:04:28,000 --> 00:04:31,000
Wynika to z faktu, że rozmiar okna początkowo jest mały,

38
00:04:32,000 --> 00:04:35,000
ale następnie wzrasta wykładniczo, aż do momentu, gdy pakiet

39
00:04:36,000 --> 00:04:40,000
zostanie upuszczony lub host odbierający nie będzie w stanie obsłużyć ilości danych, które odbiera.

40
00:04:41,000 --> 00:04:43,000
Początkowo zauważysz, że prędkość pobierania jest bardzo wolna,

41
00:04:44,000 --> 00:04:47,000
wzrasta bardzo szybko, a następnie osiąga punkt, a następnie utrzymuje się

42
00:04:48,000 --> 00:04:49,000
na tym poziomie.

43
00:04:50,000 --> 00:04:51,000
Przypuśćmy więc, że

44
00:04:52,000 --> 00:04:55,000
hosty w tym przykładzie mają stały rozmiar okna wynoszący 3.

45
00:04:56,000 --> 00:05:01,000
Oznacza to, że A może wysłać 3 segmenty przed otrzymaniem potwierdzenia.

46
00:05:02,000 --> 00:05:05,000
Tak więc w tym przypadku host A

47
00:05:06,000 --> 00:05:10,000
wysyła segmenty 1, 2 i 3 potwierdzeń hosta B dla

48
00:05:11,000 --> 00:05:15,000
segmentu 4, dzięki czemu A wie, że pomyślnie odebrał segmenty

49
00:05:16,000 --> 00:05:21,000
1, 2 i 3 hosta A, a następnie wysyła segmenty 4,5 i 6,

50
00:05:22,000 --> 00:05:25,000
ponieważ ma rozmiar okna poprawki 3 i

51
00:05:26,000 --> 00:05:31,000
B potwierdzają dla segmentu 7, pozwalając A, że otrzymał segmenty 4,5 i 6.

52
00:05:32,000 --> 00:05:37,000
Zapamiętaj z potwierdzeniami, potwierdzaj następny segment, który chcesz otrzymać, a nie segment,

53
00:05:41,000 --> 00:05:44,000
który już otrzymałeś. 80 Tak więc host B nie potwierdza dla segmentu

54
00:05:45,000 --> 00:05:46,000
6, ale uznaje segment 7.

55
00:05:47,000 --> 00:05:52,000
Jak już wspomniałem, przesuwne okno pozwala gospodarzom zmierzyć ilość danych, które

56
00:05:53,000 --> 00:05:57,000
odbiornik może odbierać i co może obsłużyć sieć.

57
00:05:58,000 --> 00:06:01,000
Tak więc w tym przykładzie załóżmy, że host

58
00:06:02,000 --> 00:06:05,000
używa okna przesuwnego w taki sposób, że określa,

59
00:06:06,000 --> 00:06:10,000
co sieć może obsłużyć, gdy pakiet zostanie upuszczony przez sieć, host zwolni.

60
00:06:11,000 --> 00:06:13,000
Informacje te są bardziej

61
00:06:14,000 --> 00:06:17,000
szczegółowo omówione na kursach zawierających jakość usług.

62
00:06:18,000 --> 00:06:20,000
W tym kursie

63
00:06:21,000 --> 00:06:23,000
zakładamy, że po

64
00:06:24,000 --> 00:06:32,000
upuszczeniu pakietu zmniejszyły one dramatycznie rozmiar okna, rozmiar okna to okno nadane przez nadawcę przez odbiorcę

65
00:06:33,000 --> 00:06:38,000
lub okno obliczeniowe zwane oknem przeciążenia lub CWND okno ruchu

66
00:06:39,000 --> 00:06:45,000
lub CWND początkowo ustawiony na bardzo niską wartość przy ustanawianiu połączenia,

67
00:06:46,000 --> 00:06:49,000
a następnie wzrasta w tempie wykładniczym.

68
00:06:50,000 --> 00:06:53,000
Dla każdego zgubionego segmentu, okno zatoru jest

69
00:06:54,000 --> 00:06:57,000
o połowę po tym, jak utracony segment

70
00:06:58,000 --> 00:07:01,000
został pomyślnie ponownie przesłany, okno zatoru rośnie

71
00:07:02,000 --> 00:07:05,000
ponownie, aż osiągnie wartość połowy oryginalnego

72
00:07:06,000 --> 00:07:11,000
okna przeciążenia, a następnie spowalnia jego wzrost, stosując algorytm zwany unikaniem przeciążenia.

73
00:07:12,000 --> 00:07:17,000
To wykładniczo rośnie do połowy oryginalnego rozmiaru okna przeciążenia, a następnie

74
00:07:18,000 --> 00:07:21,000
zwiększa się powoli z prędkością liniową.

75
00:07:22,000 --> 00:07:27,000
W jakości usługi Ważone Losowe Wczesne Wykrywanie lub WRED mogą być wykorzystane

76
00:07:28,000 --> 00:07:33,000
do poprawy wydajności transmisji TCP przez łącze, ponieważ pakiety są losowo usuwane

77
00:07:34,000 --> 00:07:39,000
z różnych przepływów lub różnych sesji przechodzących przez indywidualny interfejs, a nie

78
00:07:40,000 --> 00:07:41,000
pakietów z

79
00:07:42,000 --> 00:07:45,000
wielu nadawców spada w tym samym czasie.

80
00:07:46,000 --> 00:07:49,000
w ten sposób unika się problemu zwanego globalną synchronizacją, w którym pakiety

81
00:07:50,000 --> 00:07:54,000
z wielu sesji TCP upuszczają się w tym samym czasie i dlatego wiele hostów zmniejsza jednocześnie ich

82
00:08:02,000 --> 00:08:04,000
rozmiar okna i spowolnienie 110 a następnie stopniowo

83
00:08:05,000 --> 00:08:08,000
zwiększają rozmiar okna, a tym samym ich przepustowość w tym samym czasie.

84
00:08:09,000 --> 00:08:14,000
Więc wielu gospodarzy zwalnia i przyspiesza jednocześnie z

85
00:08:15,000 --> 00:08:17,000
WRED, niektóre hosty

86
00:08:18,000 --> 00:08:24,000
będą zwalniać, a inni gospodarze zwiększą przepustowość, ponieważ losowo spadną.

87
00:08:25,000 --> 00:08:30,000
Więcej informacji na temat WRED można znaleźć w dokumentacji jakości usług.

88
00:08:34,000 --> 00:08:39,000
W tym przykładzie załóżmy, że zaczynamy od początkowego rozmiaru okna 3.

89
00:08:40,000 --> 00:08:49,000
A przekazuje 3 segmenty do B, jednak tylko segment 1 i 2 dociera do segmentu

90
00:08:50,000 --> 00:08:52,000
3 hosta B.

91
00:08:53,000 --> 00:09:00,000
Host B może zmniejszyć rozmiar okna w tym przykładzie do 2 i potwierdzić segment 3.

92
00:09:01,000 --> 00:09:08,000
Pamiętaj, że potwierdzenie dotyczy następnego pakietu, który hosty spodziewają się odebrać, a ponieważ host

93
00:09:10,000 --> 00:09:12,000
B nie otrzymał segmentu

94
00:09:13,000 --> 00:09:17,000
3, potwierdza pomyślne odebranie segmentów 1 i 2.

95
00:09:18,000 --> 00:09:25,000
Host A przekaże ponownie segment 3 i w tym przykładzie wyśle segment 4, ale także zażąda rozmiaru

96
00:09:26,000 --> 00:09:27,000
okna 3.

97
00:09:28,000 --> 00:09:32,000
Oba te segmenty zostały pomyślnie odebrane przez hosta B, więc host B

98
00:09:33,000 --> 00:09:35,000
potwierdzi dla segmentu 5, ale

99
00:09:36,000 --> 00:09:39,000
w tym przykładzie nadal chce mieć rozmiar okna 2.

100
00:09:40,000 --> 00:09:45,000
Host A wyśle tylko 2 segmenty, ponieważ wynegocjowany rozmiar okna wynosi

101
00:09:46,000 --> 00:09:51,000
2, ale A może zażądać zwiększenia rozmiaru okna do 3.

102
00:09:52,000 --> 00:09:57,000
Przy przesuwanym oknie istnieje dynamiczna negocjacja rozmiaru okna i rozmiar okna może

103
00:09:58,000 --> 00:10:02,000
się radykalnie zmienić podczas sesji, w zależności od tego,

104
00:10:03,000 --> 00:10:07,000
co może obsłużyć odbiornik i co może obsłużyć sieć.
