Протокол TCP: соединение | Курс "Компьютерные сети"

Поділитися
Вставка
  • Опубліковано 11 лис 2024

КОМЕНТАРІ • 70

  • @nikolay_antipin
    @nikolay_antipin 3 роки тому +24

    Андрей, огромное спасибо за Вашу работу! Изучал по Вашим урокам компьютерные сети, прошёл собеседование!!!

  • @aleksandrzaremba6520
    @aleksandrzaremba6520 Рік тому +5

    Очень точно, без лишней воды. Благодарю за такой качественный материал

  • @DonorOfHappiness
    @DonorOfHappiness 3 місяці тому

    Согласен с большинством комментаторов - материал на курсе очень доходчивый и крайне полезный сразу с практической точки зрения. Автору канала спасибо!

  • @user-fghjiydsvjk975
    @user-fghjiydsvjk975 8 років тому +4

    спасибо за лекцию
    хочу лишь добавить один момент про установку соединения: отправка пустого ack подтверждения не увеличивает счетчик следущего отправляемого сегмента, поясню на примере (пример взят с rfc793 и он же на вики)
    TCP A (клиент) TCP B (сервер)
    1. CLOSED LISTEN //// клиента еще нет, сервер слушает
    2. SYN-SENT --> --> SYN-RECEIVED //// клиент отправляет сегмент №100 с syn
    3. ESTABLISHED ESTABLISHED //// клиент отправляет пустой сегмент №101, говоря, что ждет №301
    5. ESTABLISHED --> --> ESTABLISHED //// и вот тут отправляются данные с №101, чего и ждет сервер
    если бы мы на шаге 4 отправили бы сегмент с увеличением счетчика до №102, то серверу пришлось бы подтверждать этот ack своим пустым ack-ом
    и ситуация могла бы усложниться

    • @w1tcherj
      @w1tcherj 5 років тому +1

      а с чего это на 4 шаге мы должны отправлять 102, если на 3 сервер говорит, что получил 100, ждёт 101? мы на 4 и отправили ему 101.

  • @qcandrey
    @qcandrey Рік тому +2

    Вы далете хорошее дело, спасибо!

  • @andreipomorev6292
    @andreipomorev6292 4 роки тому +3

    Спасибо за столь полезный набор видео!

  • @AltaïrFreeman
    @AltaïrFreeman Рік тому

    Спасибо большое, лайкаю каждое видео!

  • @atillaattila8900
    @atillaattila8900 8 років тому +3

    Spasibo Vam Za Klasnie video kursi

    • @AndreySozykin
      @AndreySozykin  8 років тому

      +atilla atilla, пожалуйста!

  • @Q_School
    @Q_School 3 роки тому

    Спасибо.
    Qilgan bu yaxshi amallariyezni ajrini bersin.

  • @kseniyasakki4382
    @kseniyasakki4382 3 роки тому +1

    Спасибо вам, Андрей!

  • @DoubleViolence
    @DoubleViolence 2 роки тому +2

    Спасибо! Доступно и понятно!

  • @AndreySozykin
    @AndreySozykin  9 років тому +3

    + Иван Николайчук, Именно номер байта. В TCP нумеруются не пакеты, а байты.

  • @andreypolevoy5311
    @andreypolevoy5311 4 роки тому +2

    Лайк, спасибо

  • @kovalev94
    @kovalev94 4 роки тому +4

    Спасибо за ваши лекции, очень доступно объясняете.
    Хотел уточнить один момент, могу ли я использовать RST в плохих целях?
    Например, если я нахожусь посередине между клиентом и сервером, и вижу что есть установленное соединение, могу ли я сформировать tcp пакет с rst, чтобы закрыть соединение, и делать так постоянно?

    • @AndreySozykin
      @AndreySozykin  4 роки тому

      Да, конечно так можно делать.

    • @andreykelip5631
      @andreykelip5631 4 роки тому +5

      вижу мышление кибербезопасника! ))

  • @Andrzej3935
    @Andrzej3935 2 роки тому

    Спасибо!

  • @algmy
    @algmy 7 років тому +3

    если произойдёт interference в процессе отправки RST, разрыв не произойдёт. Там точно нет никаких ACK?

  • @ИванИванов-ю2е5ц
    @ИванИванов-ю2е5ц 3 роки тому +1

    спасибо!!!

  • @MrSorrow
    @MrSorrow 3 роки тому +1

    Благодарю за полезное видео, все четко и понятно. Только два вопроса волнуют... в основном про RST. Это сообщение может вдруг не дойти до пункта назначения? Если может, то какие действия предпринимаются?

    • @AndreySozykin
      @AndreySozykin  3 роки тому +2

      1. Конечно сообщение RST, как и любые другие сообщения, может не дойти до получателя.
      2. Если сообщение RST не дойдёт, то соединение будет закрыто по тайм-ауту.

  • @-XAH-
    @-XAH- 5 років тому +1

    Что нужно ввести в командной строке cmd, чтобы вывести соединения протокола TCP?

  • @pie4928
    @pie4928 2 роки тому +1

    Что такое RST ? В технологии MACA андрей говорил что RST содержит в себе данные отправителя и размер данных для передачи :/ Что то запутал... А FIN что такое ?!

    • @Yato私菜
      @Yato私菜 Рік тому

      FİN это сообшения для разрыва соеденения , а RST тоже самое просто исполльзуется при критических моментах, если есть какая то ошибка и он разрывает соеденение с обейих сторон тоесть больше не потребуется отправить ACK как в примере с FİN. (2:54)

    • @pie4928
      @pie4928 Рік тому +1

      @@Yato私菜 Спасибо, но я уже давно разобралась :)

  • @anoname10
    @anoname10 4 роки тому +1

    Здравствуйте. Как установить TCP соединение между двумя случайными компьютерами?

    • @AndreySozykin
      @AndreySozykin  4 роки тому

      Один из компютеров должен являться инициатором соединения.

  • @ruslanalpysbayev1209
    @ruslanalpysbayev1209 8 років тому +5

    Очередное спасибо, но я не понял на 1:28 , т.е что значит " номер байта в потоке байт". Пожалуйста, объясните тут по-подробней, если можно.

    • @AndreySozykin
      @AndreySozykin  8 років тому +29

      +Ruslan Alpysbayev Протокол TCP получает от приложения поток байт (например, фильм размером 2 ГБ). Этот поток разбивается на отдельные части - сегменты, которые передаются по сети отдельно. Для гарантии доставки используется подтверждение получения сегментов и нумерация.
      Можно нумеровать сегменты, но по разным причинам это неудобно (например, сегменты могут иметь разный размер). Поэтому TCP вместо сегментов нумерует байты в потоке. Например, первый сегмент содержит байты с 0 по 999, второй с 1000 по 1999 и т.д. (в примере с фильмом до 2 ГБ).
      Более подробно об этом рассказано в лекции о протоколе TCP:
      ua-cam.com/video/CKUOb4htnB4/v-deo.html
      На самом деле байты в потоке нумеруются не с 0, а по более сложным правилам. Если всегда начинать нумерацию с 0, то если компьютер захочет открыть два соединения, сегменты из них могут перепутаться. Также есть много других проблем. Поэтому для начального номера байт в потоке выбираются разные числа так, чтобы они не совпадали ни с каким другим соединением на данном компьютере. Алгоритмы достаточно сложные, но для простоты можно представлять себе, что начальный номер байта в потоке выбирается случайным образом. Именно этот номер и указывается в сегменте SYN при установке соединения.
      Стало ли понятнее?

    • @trek3456
      @trek3456 8 років тому +1

      Да, понятно объяснили. Спасибо

    • @algmy
      @algmy 7 років тому +1

      а как может начаться передача сегментов до установки соединени?

    • @w1tcherj
      @w1tcherj 5 років тому +2

      @@algmy никак, вначале соединение и после того как оно установлено передаются сегменты.

    • @Nikdoge
      @Nikdoge 5 років тому +1

      @@w1tcherj Тогда о каких номерах байтов говорится при установке соединения, если никакие сегменты информации ещё не передаются?

  • @denzel2412
    @denzel2412 3 роки тому +2

    Так в чем разница байтов между 36829 и 7538?

    • @Enliven89
      @Enliven89 3 роки тому +3

      байты передаются в обе стороны. 7537 это номер байт, которые отправил левый клиент, 36829 номер байт, которые отправил правый клиент. Поэтому за одно сообщение сообщается номер отправленных сообщение 36829 и подтверждение полученных сообщений 7537. Андрей поясняет значение 7538 тем, что правый клиент ждет следующий байт. Я в других источниках слышал немного иначе, что это фантомный байт, но сходу не объясню.

  • @kotpsihopat6392
    @kotpsihopat6392 6 років тому +2

    Где можно подробнее узнать про процесс нумерации байтов в потоке?

    • @AndreySozykin
      @AndreySozykin  6 років тому +1

      В RFC 793 по TCP - tools.ietf.org/html/rfc793#page-24

  • @artimity
    @artimity 5 років тому +3

    Сколько раз будет соединятся и разрываться канал при скачивании 2 Гб?

    • @AndreySozykin
      @AndreySozykin  5 років тому

      Сложный вопрос, зависит от качества связи.

    • @artimity
      @artimity 5 років тому

      @@AndreySozykin примерно, речь идёт о десятка, сотнях или тысячах?

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 5 років тому

    Спасибо

  • @alexzakharchenko8993
    @alexzakharchenko8993 6 років тому +8

    Не понял, что такое "порядковый номер передаваемого байта" и чем он отличается от "номера байта в потоке"?
    Порядковый номер передаваемого байта - это номер байта начала следующего сегмента от отправителя? А номера байта в потоке - это номер байта от получателя? или как? Тоесть они оба шлют информацию друг другу?

    • @w1tcherj
      @w1tcherj 5 років тому +2

      короче. Есть два поля в TCP. Первое используется для обозначения байт которые ты отправляешь и нумеруется лишь первый байт в сегменте. Второе поле используется для подтверждения, номер байта, которое ты ожидаешь. Они оба шлют друг другу.

    • @manOfPlanetEarth
      @manOfPlanetEarth 24 дні тому

      как я понял, это пример для случая, когда обе стороны сразу после установления соединения будут передавать друг другу данные🤔 Т.е. у каждой стороны есть свой поток байт для передачи и, соответственно, требуются два отсчета для этих потоков байт. Одна сторона отправляет SYN, другая присылает ей ACK, и заодно другая сторона отправляей первой стороне СВОЙ☝🏼 SYN, на который хотела бы получить от первой стороны соответствующий ACK. Просто тут совмещены отправка второй стороной ACK и своего же SYN и из-за этого черт ногу сломит. Я сначала тоже нихрена не понял. В общем, это место мутное и его можно было объяснить гораздо лучше.
      Да, я не дописал мысль! Вот эти номера байтов в потоке байт после "SYN" - это и есть предлагаемые начала отсчета байт в каждом потоке. Я ТАК додумал. Типа, первая сторона: "я начинаю отсчитывать свой поток не с нуля, а с 7537", а другая сторона: "а я начинаю отсчитывать свой поток не с нуля, а с 36829"

  • @ИванНиколайчук-ф1ы
    @ИванНиколайчук-ф1ы 9 років тому +1

    Добрый день.
    Спасибо за ваши лекции, узнал много нового, у вас отличная подача материала.
    Есть один вопрос: при установке соединения клиент отправляет именно номер байта, или номер пакета?

    • @trek3456
      @trek3456 8 років тому +2

      На транспортном уровне нет понятия "пакет". Автор в предыдущем комментарии все отлично разъяснил.

    • @AndreySozykin
      @AndreySozykin  8 років тому +3

      Наверное, в вопросе имелось с виду номер сегмента, а не пакета.
      Указывается именно номер байта.

  • @TeuFortMan
    @TeuFortMan 3 роки тому +1

    Может не номер байта, а номер некой последовательности? Тут у Вас какая-то не досказанность.

  • @w1tcherj
    @w1tcherj 5 років тому +2

    А как может быть подтверждение +1 байт, если в самом сегменте больше байт, нежели один?

    • @AndreySozykin
      @AndreySozykin  5 років тому +2

      Указывается номер последнего полученного байта +1.

    • @w1tcherj
      @w1tcherj 5 років тому +1

      @@AndreySozykin Я наверно 3 дня назад имел в виду пример на картинке 1:03. Там отправитель отправил сегмент с №7537, а подтверждение №7538. Вопрос был как подтверждение может быть 7538, если сам сегмент+хэдерыL2+L3 размер которых больше) но в примере, скорей всего, для упрощения так сделано.

    • @AndreySozykin
      @AndreySozykin  5 років тому +5

      Считаются только байты данных TCP, без заголовков.

  • @kekkekovich3374
    @kekkekovich3374 Рік тому

    Андрей, для чего нам третий пакет (ACK), если мы уже на втором этапе (SYN, ACK) можем передавать сообщение?

    • @ilyashevelev9256
      @ilyashevelev9256 Рік тому +1

      Вероятно для того, чтобы каждый компьютер получил подтверждение, чтобы убедиться, что соединение установлено.

  • @abdarrahman_l7
    @abdarrahman_l7 3 роки тому +1

    Вы программист?

    • @AndreySozykin
      @AndreySozykin  3 роки тому

      Нет, я преподаватель университета. Но учился на ИТ-шинка и долго работал системные инженером по серверам и сетям.

    • @manOfPlanetEarth
      @manOfPlanetEarth Рік тому +2

      @@AndreySozykin
      видать, когда долго работали, старались вникнуть в суть всего. это видно по такому осмысленному курсу по сетям.
      годы идут, а курс всё такой же четкий.

  • @artur_kia
    @artur_kia 3 роки тому +1

    Спасибо