По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Сетевые устройства Huawei обычно поставляются неконфигурированными по умолчанию, поэтому, для использования устройства необходимо сначала настроить некоторые из его основных функций. 1. Настройка имени хоста В интерфейсе командной строки имя хоста (имя устройства) заключено в угловые скобки (...) или квадратные скобки ([...]). Имя хоста по умолчанию - Huawei, но это имя следует изменить, чтобы лучше различать несколько устройств. Чтобы изменить имя хоста, используйте команду sysname host-name. В следующем примере показано, как изменить имя хоста на Huawei-AR-01. system-view Enter system view, return user view with Ctrl+Z. [Huawei] sysname Huawei-AR-01 [Huawei-AR-01] 2. Настройка системного времени По умолчанию устройства Huawei используют Coordinated Universal Time (UTC). Чтобы указать другой часовой пояс для устройства, выполните команду сlock timezone time-zone-name {add | minus} offset. Вы можете назвать часовой пояс в параметре time-zone-name и указать, является ли смещение часового пояса к UTC положительным (add offset) или отрицательным (minus offset). Обратите внимание, что {...} указывает на то, что один из вложенных параметров должен быть выбран. Например, если вы хотите установить часовой пояс устройства как Пекинское время, выполните следующую команду: [Huawei-AR-01] clock timezone BJ add 08:00 После установки часового пояса выполните команду clock datetime HH:MM: SS YYYY-MM-DD для установки времени и даты. Параметр HH:MM:SS задает время в 24-часовом формате, а YYYY-MM-DD-дату. (Устройства Huawei поддерживают только 24-часовой формат.) Например, чтобы установить время и дату 18: 30 10 марта 2019 года, выполните следующую команду: [Huawei-AR-01] clock datetime 18:30:00 2019-03-10 3. Задание IP-адреса на устройстве Для входа в систему, вы можете использовать Telnet . Однако Telnet требует, чтобы на интерфейсе устройства был установлен IP-адрес. Для присвоения IP-адреса, выполните команду ip-address {mask | mask-length} в интерфейсном виде. Параметры ip-address и mask задают IP-адрес и маску подсети соответственно в десятичной системе счисления, а mask-length задает число последовательных "1"в двоичной системе счисления маски подсети. В следующем примере показано, как установить IP-адрес 10.1.1.100 и маску подсети 255.255.255.0 для интерфейса управления Ethernet 1/0/0: <Huawei-AR-01> system-view [Huawei-AR-01] interface ethernet 1/0/0 [Huawei-AR-01-Ethernet1/0/0] ip address 10.1.1.100 255.255.255.0 Длина двоичной записи маски подсети равна 24 (255.255.255.0 эквивалентна двоичному значению 11111111.11111111.11111111.00000000), поэтому в этом примере вы можете заменить 255.255.255.0 на 24. 4. Конфигурации интерфейса пользователя Если вы входите в устройство через консольный порт, отображается консольный пользовательский интерфейс. При входе в систему через Telnet отображается пользовательский интерфейс терминала виртуального типа (VTY). Чтобы реализовать управление пользователем через консольный порт, например, установить User Layer равным 2, можно выполнить следующие команды: system-view [Huawei] user-interface console 0 [Huawei-ui-console0] user privilege level 2 Другие пользователи также могут войти в устройство, даже тогда когда вы находитесь в нем. Каждый пользователь имеет отдельный пользовательский интерфейс (количество поддерживаемых интерфейсов VTY варьируется в зависимости от устройства), поэтому для дифференциации нескольких пользовательских интерфейсов устройство реализует нумерацию пользовательских интерфейсов. Нумерация интерфейса пользователя. Когда пользователь входит в устройство, устройство выделяет пользователю самый низкий пронумерованный простой пользовательский интерфейс в соответствии с используемым методом входа в систему. Пользовательские интерфейсы нумеруются либо относительно, либо абсолютно. НОтносительная нумерация Формат нумерации - тип пользовательского интерфейса + номер. Как правило, устройство имеет один консольный порт (некоторые устройства могут иметь больше) и 15 пользовательских интерфейсов VTY (5 пользовательских интерфейсов VTY включены по умолчанию). При использовании относительной нумерации порты отображаются следующим образом:Консольный пользовательский интерфейс: CON 0Пользовательские интерфейсы VTY: первый пользовательский интерфейс VTY - это VTY 0, второй VTY 1 и т. д. Абсолютная нумерация Абсолютное число однозначно идентифицирует пользовательский интерфейс. Абсолютные и относительные числа находятся в взаимно однозначном отображении. Пользовательский интерфейс консоли имеет относительное число CON 0 и абсолютное число 0. Пользовательский интерфейс VTY имеет относительное число в диапазоне от VTY 0 до VTY 14 и абсолютное число в диапазоне от 129 до 143.Чтобы проверить пользовательские интерфейсы, поддерживаемые устройством, выполните команду display user-interface. Например: В выходных данных команды столбец Idx показывает абсолютные числа, а столбец Type-относительные числа. Проверка подлинности пользователя. Для гарантированного входа авторизованным пользователям, устройство поддерживает проверку подлинности паролем и проверку подлинности AAA. Так же можно входить и без проверки подлинности. Проверка подлинности паролем Этот режим используется по дефолту и требует от пользователей ввода правильного пароля для входа в систему. Если пароль не настроен, вход в систему будет запрещен. Проверка подлинности ААА Этот режим требует правильного сочетания имени пользователя и пароля. Использование комбинации имени пользователя и пароля повышает безопасность по сравнению с проверкой подлинности паролем. Кроме того, пользователи дифференцированы и не влияют друг на друга во время проверки подлинности. Проверка подлинности AAA обычно используется для входа по Telnet из-за ее повышенной безопасности. Отсутствие проверки подлинности Этот режим не выполняет проверки подлинности пользователей и не рекомендуется. Отсутствие проверки подлинности позволяет пользователям входить в систему напрямую без каких-либо учетных данных.Механизм проверки подлинности пользователя проверяет логин пользователя. По дефолту после входа пользователя на устройство с помощью Telnet ему присваивается Layer0. Пример: настройка пользовательских интерфейсов VTY Во время ввода устройства в эксплуатацию многие пользователи могут войти на устройство для настройки сервисов. Чтобы ограничить число пользователей, которые могут войти в систему через Telnet, до 15, настройте 15 пользовательских интерфейсов VTY. Затем, чтобы разрешить пользователям настраивать службы, установите User Layer равным 2. Установите максимальное число пользовательских интерфейсов VTY равным 15. Выполните команду пользовательского интерфейса user-interface maximum-vty number . Укажите number равным 15. system-view [Huawei] user-interface maximum-vty 15 Войдите в режим интерфейса пользователя VTY Запустите команду пользовательского интерфейса vty first-ui-number [last-ui-number]. Укажите first-ui-number как 0 и last-ui-number как 14 (относительные номера пользовательских интерфейсов VTY). Обратите внимание, что [...] указывает, что вложенный параметр является необязательным; однако в этом примере этот параметр необходим для ограничения числа разрешенных пользователей. [Huawei] user-interface vty 0 14 [Huawei-ui-vty0-14] Установите уровень пользователя 2 для пользовательского интерфейса VTY. Запустите команду user privilege level level. Укажите level равным 2. [Huawei-ui-vty0-14] user privilege level 2 Установите режим проверки подлинности пользователя на AAA для пользовательского интерфейса VTY. Запустите команду authentication-mode {aaa | none | password} [Huawei-ui-vty0-14] authentication-mode aaa Настройте user name и password, используемые при аутентификации AAA. Выйдите из пользовательского интерфейса VTY и выполните команду aaa, для перехода в режим AAA. Запустите local-user user-name password cipher password для настройки user name и password (cipher указывает, что указанный password зашифрован). После выполните telnet local-user-name-service-type для настройки типа службы Telnet. После завершения настройки необходимо ввести имя пользователя (admin) и пароль (admin@123), прежде чем отобразится командный интерфейс.
img
Производительность приложений может оказаться решающим показателем для многих предприятий. Если уж на то пошло, то стоимость размещения серверного оборудования напрямую влияет на ваш чистый доход. Именно поэтому если вы будете использовать инструменты профилирования производительности для отладки запускаемого кода, вы сможете в итоге сэкономить ваши деньги.  На что стоит обратить внимание «Узкое место» - это любая медленно работающая часть вашего приложения, которая замедляет остальную часть, которая работает быстрее, прямо как крышка на бутылке с водой или узкая дорога, которая мешает движению транспорта. Абсолютно любой код, который вы пишете, с большей долей вероятности имеет узкие места, и неважно, маленькие они или большие, вы в любом случае можете использовать инструменты профилирования производительности, чтобы их найти.  Все программы разные, но, как правило, страдают от одних и тех же проблем: Функции вызываются слишком часто (кэширование или планирование могут уменьшить количество вызовов). Код блокировки ввода-вывода, обычно сюда относится синхронный доступ к диску, но иногда и чрезмерное использования памяти. Большое количество циклов с затратными методами. Длительное время запуска, особенно в JIT-компилируемых языках. Нецелесообразное выделение памяти, особенно при работе программы сборки мусора.  Области, которые выиграют от распараллеливания или асинхронного программирования.  При проверке вашего кода с помощью профилировщика вы сможете выявить любые из них. Даже если у вашего приложения нет какого-то серьезного заметного узкого места, в любом случае даже минимальный процент улучшения поспособствует тому, что ваше приложение будет работать быстрее и эффективнее. А увеличение скорости работы хотя бы на несколько процентов, может в перспективе привести к значительным результатам.  Кроме того, есть вероятность, что узким местом вашего приложения может оказаться не серверный код, а его расположение в вашей общей сети. Например, у вас есть API, который подключается к медленной базе данных. И здесь не имеет значения, насколько быстро работает ваш веб-сервер, если он всегда долго ждет результатов. Профилировщики производительности могут помочь решить проблемы только в рамках вашего кода, но никак не в общей сетевой структуре.  Как работает профилирование? Инструменты профилирования производительности немного отличны от инструментов отладки. IDE использует такие инструменты отладки, как точки останова и инспектирование, для тестирования и решения проблем в процессе разработки. Профилировщики обычно работают, предполагая, что вы не знаете, в чем заключается проблема, и хотите  профилировать код целиком , чтобы ее выявить. Профилировщик подключается к вашему приложению и с помощью высокоточного таймера отслеживает, какие функции работают дольше всего. Спустя какое-то время у вас будет достаточное количество данных, чтобы понять причину проблемы.  Большая часть профилировщиков представляют данные в виде стека, отсортированного по «потребителям» с наибольшим временем. Чаще всего в профилировщике используют Flame graph, который наглядно отображает разбиение всей истории вызовов программы.  Выбор определенного инструмента или метода зависит от того, для какого языка программирования или для какой среды выполнения кода вы профилируете, и от того, требуется ли вам профилирование приложения в производственных средах или нет, но в общих чертах идея одна и та же.  Так как каждый профилировщик должен быть интегрирован в исполняемый код, то вам необходимо будет загрузить профилировщик для языка, который использует ваше приложение. Некоторые из них проще в использовании, нежели другие, особенно это касается таких языков, как C# и Java. Профилировщик проще внедрить в приложение, которое использует именно эти языки, а не компилируемые.  Многие IDE имеют инструменты профилирования, которые встроены поверх стандартного набора инструментов отладки. Их вы также можете использовать. Например, Visual Studio может профилировать производительность и использование памяти во многих приложениях. Java –  JProfiler , IDEA/Eclipse/Netbeans IDEs Python –  cProfiler ,  Palanteer JavaScript –  Chrome DevTools C# –  dotTrace , Visual Studio IDE C, C++ –  Orbit  Если вы уже примерно знаете, что может занимать времени больше, чем положено, то вы всегда можете воспользоваться библиотекой, которая имеет в своем арсенале секундомер, для того, чтобы провести оценку производительности.  Например, Benchmark.NET может проводить высокоточные тестирования различных функций и, как правило, используется для сравнения различных алгоритмов. Также можно использовать обычный класс Stopwatch для какого-то фрагмента кода, который вы хотите протестировать.  Использование профилировщика производительности В этом руководстве мы покажем, как использовать dotTrace. Это полнофункциональный профилировщик производительности для приложений платформы .NET, в котором есть большая часть инструментов, которые есть и в других профилировщиках. Если вы профилируете код, написанный не на C#, то вам, скорее всего, потребуется другое приложение, но общий принцип остается тем же.  Открыв приложение, вы можете подключиться к запущенным .NET процессам или настроить свою собственную конфигурацию запуска для того, чтобы вы могли запускать приложение прямо из dotTrace. Запуск приложения непосредственно из профилировщика может оказаться довольно полезным, если вы пытаетесь устранить проблему, связанную с медленным запуском приложения.  Как только вы запустите приложение, профилировщик начнет собирать данные. Он может работать столько, сколько вы захотите, а для того, чтобы открыть анализ за накопленный период времени, вам нужно просто нажать «Get Snapshot and Wait».  Как только он откроется, вы увидите большое количество графиков рядом со стеком и деревом вызовов, которые, и, скорее всего, они будут нечитабельными. Если вы видите много всего, связанного с потоками, блокировками и ожиданием, то это, скорее всего, потому, что вам нужно оценить «основной поток».  Профилировщик перехватывает все потоки, которые часто используются для фоновых задач и которые простаивают в течение длительного периода времени. Несмотря на то, что это может говорить о проблемах с блокировкой ввода-вывода, здесь все куда более неоднозначно, чем вы можете себе представить, и это действительно зависит от того, какие действия выполняет поток.  dotTrace также имеет функцию фильтрации кода с точки зрения области, в которой он работает. Для этого используются фильтры «Subsystems» слева. Там можно найти системный код (system code), машинный код (native code) и другие запаздывающие области, такие как отражение (reflection), коллекции (collections), строки (string) и LINQ.  В главном окне вы можете найти Flame graph. Он показывает разбиение всего вашего приложения, начиная с «All Calls» (все вызовы) и разбивая дальше время, которое требуется на выполнение каждого уровня функций. Некоторые из них будут неразрешенными, а некоторые будут слишком малы, чтобы отобразить их на графике, но его можно увеличить до любого масштаба, чтобы увидеть любую функцию и более детальное разбиение стека вызовов.  Еще одна важная функция профилировщиков производительности – это дерево вызовов. Оно показывает вложенное разбиение самых быстрых функций, отсортированных по времени, которое необходимо для их выполнения. Здесь dotTrace также показывает процентное соотношение, то есть долю общего времени, которое данная функция и ее дочерние элементы тратят на свое выполнение.  Затраченное время ЦП не всегда является проблемой, особенно есть речь идет о таком языке, как C#, и если у него есть программы сборки мусора. dotTrace также отслеживает использование и распределение памяти, и его можно использовать для того, чтобы определить, что оказывает нежелательную нагрузку на вашу программу сборки мусора.  
img
Основная цель TCP состоит в том, чтобы обеспечить транспортировать данные поверх IP. Как протокол более высокого уровня, он полагается на возможности адресации и мультиплексирования IPv6 для передачи информации на правильный хост назначения. По этой причине TCP не требует схемы адресации. Управление потоком TCP использует метод скользящего окна для управления потоком информации по каждому соединению между двумя хостами. Рисунок 1 демонстрирует это. На рисунке 1 предположим, что начальный размер окна установлен равным 20. Затем последовательность событий: В момент времени t1 отправитель передает 10 пакетов или октетов данных (в случае TCP это 10 октетов данных). В момент времени t2 получатель подтверждает эти 10 октетов, и для окна установлено значение 30. Это означает, что отправителю теперь разрешено отправлять еще до 30 октетов данных перед ожиданием следующего подтверждения; другими словами, отправитель может отправить до 40 октетов, прежде чем он должен будет дождаться подтверждения для отправки дополнительных данных. В момент времени t3 отправитель отправляет еще 5 октетов данных, номера 11–15. В момент времени t4 приемник подтверждает получение октетов через 15, и окно устанавливается на 40 октетов. В момент времени t5 отправитель отправляет около 20 октетов данных, пронумерованных 16–35. В момент времени t6 получатель подтверждает 35, и окно устанавливается на 50. Следует отметить несколько важных моментов, касающихся этой техники: Когда получатель подтверждает получение определенного фрагмента данных, он неявно также подтверждает получение всего, что было до этого фрагмента данных. Если приемник не отправляет подтверждение—к примеру , передатчик отправляет 16-35 в момент времени t5, а приемник не отправляет подтверждение—отправитель будет ждать некоторое время и считать, что данные никогда не поступали, поэтому он будет повторно отправлять данные. Если получатель подтверждает некоторые данные, переданные отправителем, но не все, отправитель предполагает, что некоторые данные отсутствуют, и ретранслирует с точки, которую подтвердил получатель. Например, если отправитель передал 16-35 в момент времени t6, а получатель подтвердил 30, отправитель должен повторно передать 30 и переслать. Окно устанавливается как для отправителя, так и для получателя Вместо использования номеров октетов TCP присваивает каждой передаче порядковый номер; когда приемник подтверждает определенный порядковый номер, передатчик предполагает, что приемник фактически получил все октеты информации вплоть порядкового номера передачи. Для TCP, таким образом, порядковый номер действует как своего рода “стенография” для набора октетов. Рисунок 2 демонстрирует это. На рисунке 2: В момент времени t1 отправитель объединяет октеты 1–10 и передает их, помечая их как порядковый номер 1. В момент времени t2 получатель подтверждает порядковый номер 1, неявно подтверждая получение октетов 1–10. В момент времени t3 отправитель связывает октеты 11–15 вместе и передает их, помечая их как порядковый номер 2. В момент времени t4 получатель подтверждает порядковый номер 2, неявно подтверждая октеты, отправленные через 15. В момент времени t5 предположим, что 10 октетов поместятся в один пакет; в этом случае отправитель отправит два пакета, один из которых содержит 16–25 с порядковым номером 3, а другой - октеты 26–35 с порядковым номером 4. В момент времени t6 приемник подтверждает порядковый номер 4, неявно подтверждая все ранее переданные данные. Что произойдет, если один пакет информации будет пропущен? Что делать, если первый пакет из потока в 100 пакетов не получен? Используя систему, описанную на рисунке 2, получатель просто не подтвердит этот первый пакет информации, вынуждая отправителя повторно передать данные через некоторое время. Однако это неэффективно; каждый потерянный пакет информации требует полной повторной отправки из этого пакета. Реализации TCP используют два разных способа, чтобы получатель мог запросить один пакет. Первый способ - тройное признание. Если получатель трижды подтверждает пакет, который предшествует последнему подтвержденному серийному номеру, отправитель предполагает, что получатель запрашивает повторную передачу пакета. Три повторных подтверждения используются для предотвращения неправильной доставки пакетов или отброшенных пакетов, вызывающих ложный запрос на повторную передачу. Второй способ заключается в реализации выборочных подтверждений (SACK).15 SACK добавляет новое поле к подтверждению TCP, которое позволяет получателю подтвердить получение определенного набора серийных номеров, а не предполагать, что подтверждение одного серийного номера также подтверждает каждый более низкий серийный номер. Как долго передатчик ждет перед повторной передачи? Первый способ, которым отправитель может обнаружить потерянный пакет - это время ожидания повторной передачи (RTO), которое рассчитывается как функция времени приема-передачи (RTT или rtt). Rtt — это временной интервал между передачей пакета отправителем и получением подтверждения от получателя. RTT измеряет задержку в сети от передатчика до приемника, время обработки в приемнике и задержку в сети от приемника до передатчика. Обратите внимание, что rtt может варьироваться в зависимости от пути, по которому каждый пакет проходит через сеть, локальных условий в момент коммутации пакета и т. д. RTO обычно рассчитывается как средневзвешенное значение, при котором более старые временные интервалы оказывают меньшее влияние, чем более поздние измеренные значения. Альтернативным механизмом, используемым в большинстве реализаций TCP, является быстрая ретрансляция. При быстрой повторной передаче получатель добавляет единицу к ожидаемому порядковому номеру в любом подтверждении. Например, если отправитель передает последовательность 10, получатель подтверждает последовательность 11, даже если он еще не получил последовательность 11. В этом случае порядковый номер в подтверждении подтверждает получение данных и указывает, какой порядковый номер он ожидает от отправителя для передачи в следующий раз. Если передатчик получает подтверждение с порядковым номером, который на единицу больше последнего подтвержденного порядкового номера три раза подряд, он будет считать, что следующие пакеты были отброшены. Таким образом, существует два типа потери пакетов в TCP, когда реализован быстрый запуск. Первый-это стандартный тайм-аут, который возникает, когда отправитель передает пакет и не получает подтверждения до истечения срока действия RTO. Это называется отказом RTO. Второй называется быстрым сбоем ретрансляции. Эти два условия часто обрабатываются по-разному. Как выбирается размер окна? При выборе размера окна необходимо учитывать ряд различных факторов, но доминирующим фактором часто является получение максимально возможной производительности при одновременном предотвращении перегрузки канала. Фактически, контроль перегрузки TCP, вероятно, является основной формой контроля перегрузки, фактически применяемой в глобальном Интернете. Чтобы понять контроль перегрузки TCP, лучше всего начать с некоторых определений: Окно приема (RWND): объем данных, которые приемник готов принять; это окно обычно устанавливается на основе размера буфера приемника или какого-либо другого ресурса, доступного в приемнике. Это размер окна, объявленный в заголовке TCP. Окно перегрузки (CWND): объем данных, которые передатчик готов отправить до получения подтверждения. Это окно не объявляется в заголовке TCP; получатель не знает размер CWND. Порог медленного запуска (SST): CWND, при котором отправитель считает соединение с максимальной скоростью передачи пакетов без возникновения перегрузки в сети. SST изначально устанавливается реализацией и изменяется в случае потери пакета в зависимости от используемого механизма предотвращения перегрузки. Большинство реализаций TCP начинают сеансы с алгоритма медленного старта. 16 На этом этапе CWND начинается с 1, 2 или 10. Для каждого сегмента, для которого получено подтверждение, размер CWND увеличивается на 1. Учитывая, что такие подтверждения должны занимать ненамного больше времени, чем один rtt, медленный запуск должен привести к удвоению окна каждого rtt. Окно будет продолжать увеличиваться с этой скоростью до тех пор, пока либо пакет не будет потерян (приемник не сможет подтвердить пакет), CWND не достигнет RWND, либо CWND не достигнет SST. Как только любое из этих трех условий происходит, отправитель переходит в режим предотвращения перегрузки. Примечание. Каким образом увеличение CWND на 1 для каждого полученного ACL удваивает окно для каждого rtt? Идея состоит в следующем: когда размер окна равен 1, вы должны получать один сегмент на каждый RTT. Когда вы увеличиваете размер окна до 2, вы должны получать 2 сегмента в каждом rtt; на 4, вы должны получить 4 и т. д. Поскольку получатель подтверждает каждый сегмент отдельно и увеличивает окно на 1 каждый раз, когда он подтверждает сегмент, он должен подтвердить 1 сегмент в первом rtt и установить окно на 2; 2 сегмента во втором rtt, добавляя 2 к окну, чтобы установить окно на 4; 4 сегмента в третьем RTT, добавив 4 к окну, чтобы установить размер окна равным 8 и т. д. В режиме предотвращения перегрузки CWND увеличивается один раз за каждый rtt, что означает, что размер окна перестает расти экспоненциально, а вместо этого увеличивается линейно. CWND будет продолжать расти либо до тех пор, пока получатель не подтвердит получение пакета (TCP предполагает, что это означает, что пакет был потерян или отброшен), либо пока CWND не достигнет RWND. Существует два широко распространенных способа, которыми реализация TCP может реагировать на потерю пакета, называемых Tahoe и Reno. Примечание. На самом деле существует множество различных вариаций Tahoe и Reno; здесь рассматриваются только самые базовые реализации. Также существует множество различных методов реагирования на потерю пакета, когда соединение находится в режиме предотвращения перегрузки. Если реализация использует Tahoe, и потеря пакета обнаружена посредством быстрой повторной передачи, она установит SST на половину текущего CWND, установит CWND на исходное значение и снова начнет медленный запуск. Это означает, что отправитель снова будет передавать 1, 2 или 10 порядковых номеров, увеличивая CWND для каждого подтвержденного порядкового номера. Как и в начале процесса медленного запуска, это приводит к удвоению CWND каждого rtt. Как только CWND достигнет SST, TCP вернется в режим предотвращения перегрузки. Если реализация использует Reno, и потеря пакета обнаружена посредством быстрой повторной передачи, она установит SST и CWND на половину текущего CWND и продолжит работу в режиме предотвращения перегрузки. В любой реализации, если обнаруживается потеря пакета из-за того, что получатель не отправляет подтверждение в пределах RTO, CWND устанавливается на 1, и медленный запуск используется для увеличения скорости соединения. Контроль ошибок TCP предоставляет две формы обнаружения ошибок и управления ими: Сам протокол, наряду с механизмом управления окнами, обеспечивает доставку данных в приложение по порядку и без какой-либо недостающей информации. Контрольная сумма дополнения единицы, включенная в заголовок TCP, считается более слабой, чем Cyclic Redundancy Check (CRC) и многие другие формы обнаружения ошибок. Эта проверка ошибок служит дополнением, а не заменой, коррекции ошибок, обеспечиваемой протоколами ниже и выше в стеке. Если получатель обнаруживает ошибку контрольной суммы, он может использовать любой из описанных здесь механизмов, чтобы запросить отправителя повторно передать данные—просто не подтверждая получение данных, запрашивая повторную передачу через SACK, активно не подтверждая получение данных через быструю повторную передачу или отправляя тройное подтверждение для конкретного сегмента, содержащего поврежденные данные. Номера портов TCP TCP не управляет каким-либо типом мультиплексирования напрямую; однако он предоставляет номера портов, которые приложения и протоколы выше TCP в стеке протоколов могут использовать для мультиплексирования. Хотя эти номера портов передаются в TCP, они обычно непрозрачны для TCP; TCP не придает никакого значения этим номерам портов, кроме использования их для отправки информации правильному приложению на принимающем узле. Номера TCP-портов делятся на два широких класса: хорошо известные и эфемерные. Хорошо известные порты определяются как часть спецификации протокола верхнего уровня; эти порты являются портами «по умолчанию» для этих приложений. Например, службу, поддерживающую Simple Mail Transfer Protocol (SMTP), обычно можно найти, подключившись к узлу с использованием TCP на порт номер 25. Службу, поддерживающую Hypertext Transport Protocol (HTTP), обычно можно найти, подключившись к узлу с использованием TCP на порт 80. Эти службы не обязательно должны использовать эти номера портов; большинство серверов можно настроить на использование какого-либо номера порта, отличного от указанного в спецификации протокола. Например, веб-серверы, не предназначенные для общего (или общедоступного) использования, могут использовать какой-либо другой TCP-порт, например 8080. Эфемерные порты значимы только для локального хоста и обычно назначаются из пула доступных номеров портов на локальном хосте. Эфемерные порты чаще всего используются в качестве исходных портов для TCP-соединений; например, хост, подключающийся к службе через порт 80 на сервере, будет использовать эфемерный порт в качестве исходного TCP-порта. До тех пор, пока любой конкретный хост использует данный эфемерный номер порта только один раз для любого TCP-соединения, каждый сеанс TCP в любой сети может быть однозначно идентифицирован через исходный адрес, исходный порт, адрес назначения, порт назначения и номер протокола, работающего поверх TCP. Настройка сеанса TCP TCP использует трехстороннее рукопожатие для установки сеанса: Клиент отправляет синхронизацию (SYN) на сервер. Этот пакет является обычным TCP-пакетом, но с битом SYN, установленным в заголовке TCP, и указывает, что отправитель запрашивает сеанс для настройки с получателем. Этот пакет обычно отправляется на хорошо известный номер порта или на какой-то заранее установленный номер порта, который, как известно клиенту, будет прослушиваться сервером по определенному IP-адресу. Этот пакет включает в себя начальный порядковый номер клиента. Сервер отправляет подтверждение для SYN, SYN-ACK. Этот пакет подтверждает порядковый номер, предоставленный клиентом, плюс один, и включает начальный порядковый номер сервера в качестве порядкового номера для этого пакета. Клиент отправляет подтверждение (ACK), включающее начальный порядковый номер сервера плюс один. Этот процесс используется для обеспечения двусторонней связи между клиентом и сервером перед началом передачи данных. Первоначальный порядковый номер, выбранный отправителем и получателем, в большинстве реализаций рандомизирован, чтобы не дать стороннему злоумышленнику угадать, какой порядковый номер будет использоваться, и захватить сеанс TCP на начальных этапах его формирования.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59