No video

Интерфейс сокетов | Курс "Компьютерные сети"

  Рет қаралды 120,901

Andrey Sozykin

Andrey Sozykin

8 жыл бұрын

Интерфейс транспортного уровня стека TCP/IP "Сокеты". Лекции по курсу "Компьютерные сети" - goo.gl/0aIOuf
Страница курса - www.asozykin.ru...
Сокеты - это интерфейс для взаимодействия с транспортным уровнем. В отличие от протоколов транспортного уровня TCP и UDP, которые используются для связи между транспортными уровнями разных хостов, интерфейс сокетов используется для взаимодействия приложения с транспортным уровнем внутри одного компьютера.
Интерфейс сокетов был впервые предложен в Berkeley UNIX 4.2 BSD. Это файл специального вида, при записи данных в которой они передаются по сети.
Сокеты оказались удобным интерфейсом, поэтому различные варианты сокетов реализованы в разных операционных системах (в том числе в Windows и Linux) и языках программирования.
Операции сокетов:
socket - cоздание новыго сокета
bind - установка связи сокета с IP-адресом и портом
listen - объявление о желании принимать соединения
accept - прием запроса на установку соединения
сonnect - установка соединения
send - отправка данные по сети
receive - получение данные из сети
close - закрытие соединения
Рассматривается пример использования сокетов на Python.
Программист взаимодействует с транспортным уровнем через интерфейс сокетов, поэтому протоколы TCP и UDP скрыты от программиста. Следовательно, при изменении протоколов транспортного уровня программу менять не придется.
Сокеты в Python - docs.python.or...
Лекция "Основы организации компьютерных сетей" - • Основы организации ком...
Лекция "Транспортный уровень" - • Транспортный уровень |...
Лекция "Протокол TCP" - • Протокол TCP | Курс "К...
Лекция "Протокол UDP" - • Протокол UDP | Курс "...
Практические занятия по курсу "Компьютерные сети" - goo.gl/YP3l83
Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках:
goo.gl/kW93MA

Пікірлер: 198
@miketuev3241
@miketuev3241 3 жыл бұрын
Удивительно короткое и при этом супер понятное объяснение. У вас талант огромные штуки объяснять!!!!
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо!
@davidghukasyan1038
@davidghukasyan1038 7 жыл бұрын
Андрей, вы мне так помогли! У меня через час экзамен, почти все ваши лекции смотрел, стал намного уверенным в своих знаниях. Спасибо вам большое, объясняете лучше чем все мои преподаватели вместе взятые!
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+David Ghukasyan, спасибо за хороший отзыв! Удалось ли сдать экзамен? Какой университет?
@davidghukasyan1038
@davidghukasyan1038 7 жыл бұрын
да, Андрей, сдал на отлично! Ереванский Государственный Университет, факультет Информатики и Прикладной Математики. Спасибо еще раз, жду новых ваших лекций!
@dustinjamal8689
@dustinjamal8689 3 жыл бұрын
I know Im pretty randomly asking but does anyone know of a good place to stream newly released tv shows online ?
@benjaminahmed3236
@benjaminahmed3236 3 жыл бұрын
@Dustin Jamal I use FlixZone. You can find it by googling =)
@ahmirmekhi4415
@ahmirmekhi4415 3 жыл бұрын
@Benjamin Ahmed Yea, I have been using flixzone for months myself :D
@PitonyJory
@PitonyJory 4 жыл бұрын
Смотрю весь курс, не устаю поражаться качеству донесения информации!
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Спасибо!
@user-dx7rq2qb9y
@user-dx7rq2qb9y 4 жыл бұрын
Огромное Вам спасибо, Андрей. К сожалению, на ютубе очень мало людей, которые могут столь информативно дать большой объем знаний! Продолжайте в том же духе!
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Обязательно буду продолжать!
@sergey_rozhkov
@sergey_rozhkov Жыл бұрын
Спасибо вам за полезный материал! Невероятно круто у вас получается объяснять все темы по компьютерным сетям! Браво!
@SuperHero777
@SuperHero777 3 жыл бұрын
Отличный материал !!! Лаконично, понятно и хорошо подаётся. Легко запоминается. А то некоторые как усложнят, как закрутят, что даже имея знания, уже можно запутаться. Благодарим Вас за проделанню работу !!!
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо за приятный отзыв! Рад, что мой подход нравится!
@dswonderchild
@dswonderchild 4 жыл бұрын
ОГРОМНОЕ СПАСИБО, особенно был поражен тем, что Вы привели пример кода на Python.
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Вроде бы Python сейчас один из самых популярных языков для сетевых приложений. Если, конечно, Web не брать.
@firstandlast4435
@firstandlast4435 Жыл бұрын
Да, пример на питоне хорошо зашёл
@user-yk2ff5pj7x
@user-yk2ff5pj7x 5 жыл бұрын
Огромное Вам спасибо! И ещё большЕе спасибо за то что ПОДРОБНО отвечаете на вопросы в комментариях!!!
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Пожалуйста! Всегда рад вопросам.
@nikolaybaranov2213
@nikolaybaranov2213 5 жыл бұрын
Применительно ко всему циклу и даже каналу - просто отличная работа, объясняющая технологии простым языком. При этом упрощения делаются небольшими. Т.е. именно теория даётся отлично. Завидую, что автор может объяснить все простым языком!
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Спасибо за приятный отзыв!
@Alnorda
@Alnorda 3 жыл бұрын
Восхитительный курс! Вы очень просто и доходчиво объясняете сложные вещи, за что вам огромное человеческое спасибо. Прохожу курс обучения на образовательном портале, как раз сейчас нам читают компьютерные сети. Чтобы понимать, о чём вообще речь, параллельно смотрю ваш курс. По сравнению с путанными объяснениями нашего преподавателя - это просто сказочный восторг! А примеры на Python очень порадовали - учусь на программиста Python)
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо за приятный отзыв!
@alextokarev7562
@alextokarev7562 8 жыл бұрын
Andrey Sozykin , большое Вам спасибо за данный курс. Самый низкий поклон.
@AndreySozykin
@AndreySozykin 8 жыл бұрын
+Alex Tokarev, пожалуйста! Рад, что оказалось полезно!
@massyr
@massyr 3 жыл бұрын
@@AndreySozykin А можно вам задонатить куда нибудь? Очень круто объясняете
@trek3456
@trek3456 8 жыл бұрын
Отличная работа! Спасибо)
@AndreySozykin
@AndreySozykin 8 жыл бұрын
+Дмитрий Ларионов, рад, что нравится!
@andyanderson222
@andyanderson222 2 жыл бұрын
Превосходное объяснение, как и всегда! Огромное спасибо!
@AndreySozykin
@AndreySozykin 2 жыл бұрын
Пожалуйста!
@user-go8ww5kq2i
@user-go8ww5kq2i 3 жыл бұрын
Большое вам спасибо! Много раз читала man-страницы и прочие источники, но благодаря вашему видео всё стало понятно на лету.
@nikolay_antipin
@nikolay_antipin 3 жыл бұрын
Андрей, огромное спасибо за Вашу работу! Изучал по Вашим урокам компьютерные сети, прошёл собеседование!!!
@basilio6832
@basilio6832 2 жыл бұрын
Спасибо, вы очень хороший преподаватель, информация изложена понятно и последовательно
@kl45gp
@kl45gp 5 жыл бұрын
Офигенное обьяснение!
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Спасибо!
@viecheslavp4392
@viecheslavp4392 4 жыл бұрын
Отличные видео, очень информативные, и чем дальше, тем интереснее, смотрю с самого начала на одном дыхании, многое уже знал, но многое было и новой информацией, но все равно очень полезно и интересно! Благодарю за проделанную работу, за видео и презентации! Успехов! :)
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Спасибо за приятный отзыв! Рад, что курс полезен и формат нравится!
@denvanrain8793
@denvanrain8793 4 жыл бұрын
Спасибо большое за видео!Очень четко и понятно объяснили! Прохожу курс по сетевым технологиям и мне очень помогло Ваше видео в понимании материала! Однозначно лайк и подписка!
@braiN941
@braiN941 4 жыл бұрын
Спасибо большое, хорошее объяснение, а то везде непонятно
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Пожалуйста!
@strakhov
@strakhov 2 жыл бұрын
Великолепный курс, огромное спасибо!
@AndreySozykin
@AndreySozykin 2 жыл бұрын
Пожалуйста!
@AlekseySergeev278
@AlekseySergeev278 4 ай бұрын
Спасибо, Андрей
@AndreySozykin
@AndreySozykin 4 ай бұрын
Пожалуйста!
@user-fghjiydsvjk975
@user-fghjiydsvjk975 8 жыл бұрын
спасибо за очередную хорошо разжеванную тему с твоего позволения хочу лишь внести пару корректив для полноты картины 1) connect - устанавливает соединение лишь в случае работы с TCP, но не UDP. В случае использования UDP сокетов (SOCK_DGRAM) этот вызов лишь сохраняет информацию удаленного адреса сервера и порта для отправки сообщений и их получений. То есть этот вызов можно и не использовать, но в этом случае придется использовать другие API для работы с сокетами, которые подразумевают ЯВНОЕ указание информации о сервере (sendto / recvfrom) 2) важное API для работы с TCP протоколом, которое подразумевает отправку fin флага или другими словами "одностороннее закрытие соединения" - shutdown уж не знаю, есть ли оно в python, но среди стандартных posix API оно должно пристуствовать и иногда полезно
@AndreySozykin
@AndreySozykin 8 жыл бұрын
+conquistador, спасибо, все написано правильно. Я об этом не говорю, чтобы не перегружать техническими деталями.
@user-gd6il5zb8l
@user-gd6il5zb8l 4 жыл бұрын
Спасибо за инфо!
@user-yi7gw9vu6n
@user-yi7gw9vu6n 7 жыл бұрын
Умница! Честь и похвала! Все точки расставил над и))
@AndreySozykin
@AndreySozykin 7 жыл бұрын
Рад, что оказалось полезным!
@sorrelofsuccess5513
@sorrelofsuccess5513 4 жыл бұрын
Очень интересно! На С++ синтаксис плюс минус аналогичный. Отличные лекции!
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Синтаксис похож, потому что операции с сокетами придумали не зависимо от языка программирования.
@Q_School
@Q_School 3 жыл бұрын
Спасибо. Qilgan bu yaxshi amallariyezni ajrini bersin.
@celasitpc5831
@celasitpc5831 6 жыл бұрын
Спс за урок. Все подробно разобрал и объяснил
@AndreySozykin
@AndreySozykin 6 жыл бұрын
Пожалуйста!
@phoenixturock2286
@phoenixturock2286 4 жыл бұрын
Классная лекция. Спасибо!
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Пожалуйста!
@kseniyasakki4382
@kseniyasakki4382 3 жыл бұрын
Спасибо вам, Андрей!
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Пожалуйста!
@user-xe9kv1kl7k
@user-xe9kv1kl7k 4 жыл бұрын
Несколько раз пересмотрел лекцию, вроде в целом понял о чем речь, но все же до конца не усваивается информация. Возможно потому, что я не имею представления о программировании. Мне показалось, что лекция скорее нацелена на тех, кто понимает программирование, но не силен в устройстве сети. Но благодаря этой лекции появилось желание и в программировании разобраться. В интернете много ресурсов, обучающих компьютерным сетям, но, как и многие на этом канале, я считаю, что Ваш курс лучший (по крайней мере из тех, с которыми я сталкивался) по доступности изложения для уровня новичок и по лаконичности. Был бы рад, еслибы Вы выложили подобный курс по программированию с нуля. Думаю, достаточно многим людям это было бы интересно и многие были бы Вам благодарны.
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Да, интерфейс - это скорее для программирования. Кажется, что базовых курсов по программированию сейчас достаточно много хороших.
@user-xd1su3sk3i
@user-xd1su3sk3i 2 ай бұрын
Хороший ролик. Спасибо
@user-ik5yv4op4o
@user-ik5yv4op4o 2 жыл бұрын
Андрей здравствуйте. Вы сказали что интерфейсы используются для взаимодействия между разными уровнями стека протоколов. Я правильно понял, что интерфейс сокетов используется для взаимодействия уровня приложений с транспортным уровнем?
@AndreySozykin
@AndreySozykin 2 жыл бұрын
Да, именно так.
@user-ik5yv4op4o
@user-ik5yv4op4o 2 жыл бұрын
@@AndreySozykin Ок. Спасибо!
@flont1204
@flont1204 3 жыл бұрын
Топ видос. Я как раз на пайтоне сокеты изучаю
@AndreySozykin
@AndreySozykin 3 жыл бұрын
👍
@vchanify
@vchanify 4 жыл бұрын
Молодчина!Спасибо.
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Пожалуйста!
@vladimirgaydamakin7155
@vladimirgaydamakin7155 3 жыл бұрын
класс, отличный материал
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо!
@tetyaasya
@tetyaasya 5 жыл бұрын
коротко и ясно. спасибо!
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Пожалуйста! Рад, что понравилось!
@ivanrished5228
@ivanrished5228 4 жыл бұрын
При сотворении копии сокета, нуно было сказать, что ему присваивается другой номер порта, выбираемой за диапазоном 1024
@manOfPlanetEarth
@manOfPlanetEarth 3 ай бұрын
а как в таком случае ведет себя очередь для соединений? она одна на сервер? или при клонировании сокета клонируется и очередь - но тогда в чем ее смысл, если на каждый клон сокета будет очередь для соединений и при том всегда с одним соединением?
@TheSuperStepan
@TheSuperStepan 8 жыл бұрын
Андрей, я не совсем понял что такое сокет. Олифер трактует определение сокет как ip-adress + port как очередь из данных, идущих на определенный адрес и конкретный порт
@AndreySozykin
@AndreySozykin 8 жыл бұрын
+TheSuperStepan можно понимать и так, как трактует Олифер. Для Интернет сокета это правильно. Вообще сокет - это такая штука, которая объединяет два процесса. Один процесс туда что-то записывает, другой читает. Первоначально сокеты в Unix использовались для взаимодействия процессов на одном компьютере. Процессы, даже если они на одном компьютере, изолированы друг от друга, поэтому для передачи данных им нужны сторонние механизмы (inter-process communication). Сокеты - один из механизмов обмена данными между процессами с помощью файлового дескриптора: один процесс пишет в файл специального вида, а другой читает. Это сокеты протокола Unix. С появлением сетей TCP/IP оказалось что абстракция сокетов хорошо подходит не только для взаимодействия процессов на одном компьютере, но и по сети. Процессы по прежнему пишут данные в файл и читают из него, но данные передаются по сети. Собственно передача данных выполняется операционной системой и скрыта от программиста. Такие сокеты называют Интернет сокетами. Определяются они не именем файла, как Unix сокеты, а парами IP-адрес и порт для клиента и сервера.
@liochamakedonsky7538
@liochamakedonsky7538 7 жыл бұрын
Впервые встретил объяснение которое я понял. Спасибо вам огромное. По сетям у вас очень классный курс! Насколько я понял, многие пытаются преподавать материал, сами не понимая сути...и это вносит такую путаницу....
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+Liocha Makedonsky, спасибо за хороший отзыв! Рад, что оказалось понятно :)
@user-nm2lu8po7l
@user-nm2lu8po7l 6 ай бұрын
С П А С И Б О !
@AndreySozykin
@AndreySozykin 6 ай бұрын
Пожалуйста!
@alexwolkow8534
@alexwolkow8534 4 жыл бұрын
Спасибо Вам!
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Пожалуйста!
@hutoryanin
@hutoryanin 3 жыл бұрын
*Л. а. й. к. о. с.* за видос.
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо!
@savvinovan
@savvinovan 5 жыл бұрын
Спасибо, очень доходчиво
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Пожалуйста!
@Denis-535
@Denis-535 5 жыл бұрын
Еще бы видео про WebSocket'ы.
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Сейчас готовлю материалы. Будет на этой или следующей неделе.
@CmuT_B_naJIbTo
@CmuT_B_naJIbTo 5 жыл бұрын
Чётко. Лайк, подписка
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Спасибо!
@non_holy6286
@non_holy6286 2 жыл бұрын
Большое спасибо!
@andreipomorev6292
@andreipomorev6292 3 жыл бұрын
Спасибо за видео!
@vsezanyato
@vsezanyato 3 жыл бұрын
А копия сокета получаетя имеет другой порт? И непонятно зачем нужен accept, если сервер и так уже слушает, непонятно тогда что он случает до accept
@suvar8667
@suvar8667 3 жыл бұрын
шикарно!
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо!
@mr_robot_20_04
@mr_robot_20_04 4 жыл бұрын
Очень познавательно
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Спасибо!
@Andrzej3935
@Andrzej3935 2 жыл бұрын
Спасибо
@atillaattila8900
@atillaattila8900 8 жыл бұрын
spasibo za klasnoe video
@AndreySozykin
@AndreySozykin 8 жыл бұрын
Пожалуйста!
@user-vv9xp3rk4x
@user-vv9xp3rk4x 3 жыл бұрын
Спасибо!
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Пожалуйста!
@mikhailn.7092
@mikhailn.7092 Ай бұрын
Интерфейс - как получить доступ к сервису уровня. Получаем доступ через интерфейс(пульт/рычаги/кнопка :D) транспортного уровня - сокеты. Сервис - обеспечить передачу данные между хостами. Как это сервис будет реализован? С помощью проколов, вшитых в ОС/или еще куда =)
@zhabokot
@zhabokot 3 жыл бұрын
Я иногдп думаю, что те, кто поставил видосам Андрея дизлайк, просто неуверенной рукой/в темноте/спросонья (нужное подчеркнуть) двумя сантиметрами в выборе кнопки ошиблись.
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Не обязательно всем должно нравиться. Кроме того, без дизлайков youtub будет подозревать накрутки.
@zhabokot
@zhabokot 3 жыл бұрын
@@AndreySozykin я просто по Вашим лекциям на собеседование готовилась. И в полном восторге от того, как Вы так все четко и структурированно обьясняете.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 5 жыл бұрын
класс, спасибо
@RuslanRavilevi4
@RuslanRavilevi4 7 жыл бұрын
добрый день. Спасибо за курс, у меня вопрос по видео - из примера в видео, отправляем данные серверу "hello world", почему клиент их получает обратно? вроде клиент должен получить потверждение? если сервер обратно отправляет пакет - получаются накладные расходы?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
Это просто демонстрационный пример. Сервер отправил клиенту ту же самую строку, поэтому клиент ее и получил. В реальности сервер, конечно же, отправит что-то полезное клиенту. Не нужно путать сокеты и TCP. Подтверждение отправляется по протоколу TCP. Сокеты позволяют передавать процессам на разных хостах данные друг другу. В примере пересылаются простые строки. Причем для передачи используется TCP, и подтверждение о доставке тоже пересылается. Но все это скрыто от программиста.
@user-gd6il5zb8l
@user-gd6il5zb8l 4 жыл бұрын
Ожидал увидеть тут подобный коммент. Сам не сразу понял, зачем одни и те же данные возвращать клиенту. В надежде на то, что мой коммент будет полезным для развития курса, отмечу, что в подобных примерах, кмк, было бы лучше добавить какую-то не совсем связанную с темой урока операцию с полученными данными, чтобы наглядно показать сразу две вещи: 1. Есть смысл в том, чтобы получать от клиента данные и возвращать ему что-то взамен. (Например, отправил клиент "2+2", а сервер ему - "4"). 2. Сокеты, интерфейс транспортного уровня, ну прям _реально_ используются в _программе_ . Мол, вот то место, где эти ваши пока очень теоретические в этом курсе компьютерные сети вполне практически пересекаются с программированием. Вот здесь вы вызываете сокеты, вот тут - вычисляете "2 + 2", а вот здесь - шлете ответ обратно клиенту. Сами вычисления на Питоне не относятся к теме, но это было бы очень наглядно. И в целом я заметил, что мне как человеку, который лучше всего понимает материал на практических примерах, иногда сложно понять какой-то нюанс сетей, потому что он представлен только в теории и весьма упрощенной. Хотя с упрощением я согласен, ибо понимаю, что оно тут реально необходимо, прошу обратить внимание на это и, если вы найдете места, которые можно объяснить на практических примерах без ненужного новичкам усложнения, уделить этим местам больше "практического" времени. Вот как в этом видео про сокеты. Прям вообще чистенько на мое сознанеие положилось из-за практического примера, очень ясно теперь все вижу.
@rostl642
@rostl642 7 жыл бұрын
Здравствуйте Андрей. Спасибо за лекцию, как всегда всё прекрасно. У меня небольшой вопрос, 1 сокет - сугубо для одного порта? Т.е., если допустим на компьютере условно происходит передача и прием данных по двум портам - 45 и 4500 допустим, то на компе будет открыто 2 сокета для каждого из портов?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+rostl, да, именно так.
@user-gd6il5zb8l
@user-gd6il5zb8l 4 жыл бұрын
Я правильно понимаю, что два сокета на один айпишник, но разные порты будут занимать два места в очереди на стороне сервера?
@ruslanvolovik2745
@ruslanvolovik2745 4 жыл бұрын
@@user-gd6il5zb8l нет, очередь из соединений создаеться для кажного сокета отдельно, соответственно будет 2 очереди
@manOfPlanetEarth
@manOfPlanetEarth 3 ай бұрын
@@ruslanvolovik2745 а как, собственно, работает эта очередь соединений?
@user-rz7wq5ui5l
@user-rz7wq5ui5l 6 жыл бұрын
Разве закрытие соединения TCP не инициируется методом socket.shutdown(socket.SHUT_RDWR), а socket.close() просто освобождает ресурсы? docs.python.org/3/library/socket.html?highlight=socket#socket.socket.close
@AndreySozykin
@AndreySozykin 6 жыл бұрын
Не совсем так. socket.close() также закрывает соединение, если сокетом пользовался только один процесс. Если же через сокет работали несколько процессов, то соединение не разорвется и другие процессы смогут передавать данные. socket.shutdown(socket.SHUT_RDWR) закрывает соединение, не зависимо от того, сколько процессов используют сокет. Подробности можно посмотреть по ссыдке - stackoverflow.com/questions/409783/socket-shutdown-vs-socket-close Но эта тема выходит за рамки вводного курса по сетям.
@oleg233
@oleg233 5 жыл бұрын
клас, спосибо! профессиональное
@XanderEVGs
@XanderEVGs 11 ай бұрын
4:45 копия сокета на сервере имеет другой порт, не 80ый(так утверждает один эксперт в одном споре)? Если я правильно помню, сервер отличает клиентов по соурс порт, но как и кем он назначается, рандомно? Ос клиента? Если отличие идет по соурс порт, то смысла подменять порт на сервере нет вроде бы
@user-hh9xr4uj3o
@user-hh9xr4uj3o 3 жыл бұрын
спасибо!!!
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Пожалуйста!
@sergeysemenov3674
@sergeysemenov3674 2 ай бұрын
Правильней бы было коннект в трай завернуть - сервер может быть недоступен или отказать в соединении
@Q_School
@Q_School 3 жыл бұрын
Assalomu alaykum, rahmat sizga
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Спасибо!
@emilsentcov
@emilsentcov 7 жыл бұрын
Здравствуйте! Андрей. Огромное спасибо, очень познавательный материал. Но дойдя до этой темы, я впал ступор, не могу понять что такое Сокеты. Возможно, что-то усложняю для себя в этом вопросе, поэтому не могу понять. Есть возможность объяснить как то иначе, что такое Сокет?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+Эмиль Сенцов, сокеты - это набор функций (или методов) для разработки программ для сетей. Если вы хотите что-то передать по сети из программы, то используете сокеты.
@Valaukar1111
@Valaukar1111 5 жыл бұрын
Андрей, вы делаете отличные лекции! Спасибо большое. Можно уточнить, я так пониманию, сокеты стали нужны, чтобы множество пользователей могло работать с одним сервером. Ведь связка IP-адрес и порт (192.168.1.1:80), если пользователей, скажем, 100 и они постоянно обмениваются информацией с сервером, качают что-нибудь с него, очень "сыроватое" решение. В любом случае, нужно было решение вроде сокетов "порт для порта". Интернет-сокет - это специальный "адрес" конкретного соеднинения + буфер для обмена данными? я правильно понял его предназначение?
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Да, именно так. Сокеты сделали как раз для того, чтобы скрыть взаимодействие по сети. Изначально сокет - это файл специального типа в UNIX. Данные пишутся в этот файл, а читать их можно на другом компьютере. Такая абстракция сетевого ввода-вывода. Связка IP и порт необходима, иначе непонятно, куда клиенту подключаться.
@Valaukar1111
@Valaukar1111 5 жыл бұрын
@@AndreySozykin а каким образом происходит привязка к этому "файлу"? у этого файл есть какой то ID? я просто сейчас усиленно изучаю эту тему, а подробного разбора как устроены сокеты не могу найти. То что вы описали - самое подробное что я нашел в сети.
@AndreySozykin
@AndreySozykin 5 жыл бұрын
В википедии есть описание типа файла для сокетов - en.m.wikipedia.org/wiki/Unix_file_types Еще ссылка с более подробной информацией - unix.stackexchange.com/questions/116563/is-there-a-file-for-each-socket
@ruslanvolovik2745
@ruslanvolovik2745 4 жыл бұрын
@@Valaukar1111 это ты так "усиленно занимаешся", видно...
@user-ct7xm2lz8r
@user-ct7xm2lz8r 6 жыл бұрын
Андрей, а вот такой вопрос. Допустим я пишу чат и хочу напрямую устанавливать соединение через интернет между двумя собеседниками, один из них сервер, другой клиент. Как клиенту узнать IP-адрес сервера?
@AndreySozykin
@AndreySozykin 6 жыл бұрын
Нужен какой-то дополнительный сервис, который будет сводить вместе клиентов и серверы. Подобным образом устроен BitTorrent. Есть torrent трекер, который сам не хранит даннные, но знает, у кого что лежит.
@user-dd2wq2gg9h
@user-dd2wq2gg9h 5 жыл бұрын
Здравствуйте Андрей. Извините что не по теме, вопрос такой где можно зарабатывать специалисту с этими знаниями, учусь на кафедре сетей связи 4 курс
@gijduvon6379
@gijduvon6379 3 жыл бұрын
Андрей, а не планируете более подробные видосы про poll, select, epoll и Linux aio? Спасибо!
@AndreySozykin
@AndreySozykin 3 жыл бұрын
Пока не планировал. Сейчас делаю новый курс по SQL. Потом, возможно, на эту тему подумаю.
@catshannon5064
@catshannon5064 8 жыл бұрын
скажите, это конечно немного не по теме, ну как допустим программист системный на с, взаимодействует с транспортным уровнем. Я читал, что любое взаимодействие например с клавой происходит через поток что записывается в файл, то есть тут также, только файл - сокет?
@AndreySozykin
@AndreySozykin 8 жыл бұрын
+Vlad Stetsenko, да именно так. Сокет (в Unix) - это тип специальный файла. Интерфейс сокетов придуман был именно для программ на C, там такие же вызовы: bind, listen и т.п.
@sashasashovic91
@sashasashovic91 5 ай бұрын
Лучше использовать read вместо receive.
@andrewadmin4328
@andrewadmin4328 4 жыл бұрын
то есть сокеты нужны,чтобы программист мог настраивать сервер?
@alexanderpolyakov7696
@alexanderpolyakov7696 8 жыл бұрын
Андрей, здравствуйте! Извините, что не по теме. Вы не могли бы сказать о чем идет речь в этом предложении? "The TCP stack also maintains the variance in the measured RTT, the RTTVAR" И вообще зачем нужен RTTVAR?
@AndreySozykin
@AndreySozykin 8 жыл бұрын
+Alexander Polyakov, это больше по теме протокола TCP - kzbin.info/www/bejne/npWZgoGOgJqlhs0 TCP использует подтверждение доставки для того чтобы убедится, что данные переданы успешно. Если через заданный период времени подтверждение получения данных не пришло, то сегмент отправляется повторно. Сложный вопрос заключается в том, как правильно выбрать время ожидания подтверждения (обозначается RTO, retransmission timeout). Если RTO будет слишком коротким, то подтверждения часто будут приходить после того, как таймаут закончится. То есть будет много излишних повторных оправок сегментов. С другой стороны, если RTO слишком большой, то обнаруживать проблемы доставки мы будем поздно. TCP динамически вычисляет размер RTO в зависимости от времени прохождения сегмента от отправителя до получателя и обратно (RTT, round-trip time). RTO должен быть немого больше, чем RTT, тогда подтверждения будут приходить вовремя. Но в реальных сетях RTT для разных сегментов TCP может сильно отличатся друг от друга. Поэтому используется схема "сглаживания" RTT, на основе удаления выбросов и последующего усреднения. Для того вычисляются два дополнительных параметра: SRTT - smoothed round-trip time, "сглаженное" RTT. RTTVAR - round-trip time variation, характеризует, насколько значения RTT для разных сегментов TCP могут отличатся друг от друга. Процесс вычисления RTO в TCP описан в документе RFC 6298: 1. Пока RTT не известно, задается RTO
@user-gd6il5zb8l
@user-gd6il5zb8l 4 жыл бұрын
Воу, вот это объяснение!
@traydr-1609
@traydr-1609 Жыл бұрын
Тоесть первый сокет у нас принимает соединение и устанавливает его, а копию мы делаем, чтобы первый сокет всегда принимал новых клиентов? После чего новый клиент на 1ом сокете снова сделает копию и уйдет в нее, а первый сокет снова освободиться для принятия нового клиента?
@andreypolevoy5311
@andreypolevoy5311 4 жыл бұрын
спс
@botsynth
@botsynth Жыл бұрын
Зачем серверному сокету указывать адрес? ОС имеет сетевой интерфейс, интерфейс обладает адресом, на этот адрес маршрутизатор передаст пакет, ОС отправит пакет на определенный порт. В чем я не прав?
@D0sart
@D0sart 7 жыл бұрын
Очередь соединений == размер окна ?
@AndreySozykin
@AndreySozykin 7 жыл бұрын
+D0sart, нет. Размер окна свой для каждого соединения. Очередь нужно для разных соединений. Если запросов на соединение приходит очень много и сервер не успевает их обрабатывать, они устанавливаются в очередь.
@emilsentcov
@emilsentcov 7 жыл бұрын
Благодарствую за разъяснения. Тогда скажите как называется IP адрес в паре с портом приложения?Путаница возникла, Википедия трактует Сокет как IP адрес в паре с портом приложения.
@AndreySozykin
@AndreySozykin 7 жыл бұрын
Упрощенно можно понимать и так. Сокет - это файл специального вида, который связан с IP-адресов и портом на текущем компьютере, а также с IP-адресом и портом на удаленном компьютере (вместе с протоколом транспортного уровня TCP или UDP мы получаем полное описание соединения). Все, что пишется в этот файл, появляется на другом компьютере. Строго говоря, сокеты бывают не только TCP/IP, но и других типов, например, Unix. Там передача данных выполняется без IP-адресов и портов. Но сейчас почти везде используются сокеты TCP/IP, так что в Википедии описан самый популярный вариант сокетов.
@emilsentcov
@emilsentcov 7 жыл бұрын
Теперь понятно. Очень вразумительно.
@mirlaniusUMK
@mirlaniusUMK 4 жыл бұрын
Ах тыж сукин сын я в деле, с меня тоже лайк
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Спасибо!
@alexmaksuta9333
@alexmaksuta9333 3 жыл бұрын
Я хотел бы спросить, мне бы как то прочесть заголовок ip в сокетах, я могу это реализовать в сырых сокетах но это ооочень долго и сложно, нужно будет реализовать весь механизм Tcp в ручну просто чтобы прочесть ip заголовок. Так вопрос, как?
@innokent9985
@innokent9985 5 жыл бұрын
Андрей, а что же тогда порт, это тоже какой-то пронумерованный файл или структура в памяти? Ну или ссылку на вашу лекцию про порты.
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Порт - это идентификатор процесса на транспортном уровне. Про порты в лекции о траеспортном уровне - kzbin.info/www/bejne/nWjZomCAi66Xa5o
@bobobo500
@bobobo500 5 жыл бұрын
@@AndreySozykin Merci
@roman5336
@roman5336 3 жыл бұрын
Скажите, а можно забиндить клиентский сокет на левый ip?
@sergeisokolov8205
@sergeisokolov8205 2 ай бұрын
Bind читается как "байнд"!
@vlad1977list
@vlad1977list 5 жыл бұрын
сокеты у прогеров и технарей совсем разные вещи)
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 5 жыл бұрын
в чем именно разница?
@manOfPlanetEarth
@manOfPlanetEarth 3 ай бұрын
тебе вопрос задали!!! отвечай!:)
@sergeyufimtsev711
@sergeyufimtsev711 8 жыл бұрын
Получается, что сокеты взаимодействуют и с сетевым уровнем? Ведь иначе бы они не привязывались к IP-адресу
@AndreySozykin
@AndreySozykin 8 жыл бұрын
+Sergey Ufimtsev, не совсем так. Сокеты используются для передачи данных от одного приложения другому. Но чтобы знать, где находится другое приложение, нужны обязательно IP-адрес и порт. В этом смысле изоляция не полная. Однако большая часть задач сетевого уровня (маршрутизация и т.п.) от сокетов скрыты.
@manOfPlanetEarth
@manOfPlanetEarth 3 ай бұрын
@@AndreySozykin 6:19 "conn, addr=s.accept()" что означает эта строка? что за "addr", если дальше эта переменная не используется?
@anoninfo97
@anoninfo97 6 жыл бұрын
Запили видосик по стриму, как сделать стрим по типу fm.
@AndreySozykin
@AndreySozykin 6 жыл бұрын
Не понял вопрос :-(
@anoninfo97
@anoninfo97 6 жыл бұрын
Andrey Sozykin как работает стрим в интернет радио к примеру. Какие процессы происходят при этом.
@AndreySozykin
@AndreySozykin 6 жыл бұрын
Понятно. Интересная тема, спасибо! Подумаю, как это можно сделать.
@mysonicteam7977
@mysonicteam7977 4 жыл бұрын
Когда создается копия сокета, то какой ip ей присваивается?
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Тот же самый, что и у основного сокета.
@mysonicteam7977
@mysonicteam7977 4 жыл бұрын
Andrey Sozykin а как сеть воспринимает 2 одинаковых ip?
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Это же на транспортном уровне. Там соединения различаются по 5 параметерам: - IP отправителя - Порт отправителя - IP получателя - Порт получателя - Протокол транспортного уровня (TCP или UDP).
@manOfPlanetEarth
@manOfPlanetEarth 3 ай бұрын
@@AndreySozykin ​⁠​⁠​⁠ 4:24 критикую:) вот в этом моменте вообще ничего не понятно. у другого сокета есть ip адресс и порт? какие? как происходит соединение клиента с другим сокетом? клиент же связан с исходной парой айпи адрес-порт сервера, а тут клиента коннектят на какой-то другой сокет. и кто это делает? ОС сервера? очередь соединений - как конкретно она работает? особенно в свете копирования сокета. очередь копируется или как? ни слова про это. столько вопросов и нет ответов:)
@MrEmityushkin
@MrEmityushkin 2 жыл бұрын
Plus
@nigan952
@nigan952 2 жыл бұрын
Разве системный программист не может работать с IP пакетами?
@vlad1977list
@vlad1977list 5 жыл бұрын
Как бы ещё и Питон выучить?!?
@AndreySozykin
@AndreySozykin 5 жыл бұрын
Есть отличный сайт - pythontutor.ru
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 5 жыл бұрын
у Сергея Лебедева неплохой курс про особенности питона курс для программистов, т.е. его слушатели уже программируют на других языках
@chiklfkif
@chiklfkif 3 жыл бұрын
на курсы на степике есть) для начинающих самое то
@user-wy7ck8rj2z
@user-wy7ck8rj2z 4 жыл бұрын
вообще не понял что такое сокет
@user-Milfs_hub
@user-Milfs_hub 6 жыл бұрын
Я не знал, что Гнойный видео по программированию снимает и да лучше убери свое лицо с видео отвлекает
@AndreySozykin
@AndreySozykin 6 жыл бұрын
Не понял, при чем тут Гнойный :-)
@ubelian
@ubelian 5 жыл бұрын
@@AndreySozykin Я не могу понять следующее: метод accept принимает соединение, но он это делает при любых обстоятельствах. Можно ли как-то глянуть кто просится подключится и если узел нам не угоден(например айпи не нравтся), то отклонить соединение?
@asd99579
@asd99579 Жыл бұрын
Вот вы говорите что транспортный, это первый с которым может взаимодействовать программист. А я думал что вот то подробное описание алгоритмов разных протоколов озвучивается затем чтобы программист, при желании понимал как ему писать алгоритм, если надо на своём устройстве это реализовать, без роутер ОС или других ОС. Теперь не понимаю зачем, кроме общих знаний, знать алгоритмы взаимодействия разных протоколов нижних уровней.
@AndreySozykin
@AndreySozykin Жыл бұрын
Скорее всего, незачем 🙂 В любом случае полезно понимать, что за параметры вводятся при настройке сетевой конфигурации компьютеров. Еще иногда бывает полезно уметь настраивать маршруты к определенным сетям, как на серверах, так и на обычных компьютерах.
@asd99579
@asd99579 Жыл бұрын
@@AndreySozykin понял, админские цели значит. Это тоже очень хорошо.
@bulba1995
@bulba1995 6 ай бұрын
Какраз читаю книгу Stivens_UNIX_Razrabotka_setevykh_prilozheniy там такой подход используется тоже , я вам признателен за видео )
@andriizhydenko7392
@andriizhydenko7392 4 жыл бұрын
Спасибо!
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Пожалуйста!
@user-dr1zc7km8s
@user-dr1zc7km8s 4 жыл бұрын
Спасибо
@AndreySozykin
@AndreySozykin 4 жыл бұрын
Пожалуйста!
@user-vc1mq4zs3t
@user-vc1mq4zs3t 2 жыл бұрын
Спасибо
Клиент-серверное приложение на языке Си (TCP, Linux)
48:02
mxhpns: Программирование на Си от эксперта
Рет қаралды 30 М.
Look at two different videos 😁 @karina-kola
00:11
Andrey Grechka
Рет қаралды 11 МЛН
Алексей Щербаков разнес ВДВшников
00:47
If Barbie came to life! 💝
00:37
Meow-some! Reacts
Рет қаралды 52 МЛН
لااا! هذه البرتقالة مزعجة جدًا #قصير
00:15
One More Arabic
Рет қаралды 50 МЛН
Что такое TCP/IP: Объясняем на пальцах
15:38
Что такое веб-сокеты за 4 минуты
4:36
Look at two different videos 😁 @karina-kola
00:11
Andrey Grechka
Рет қаралды 11 МЛН