Хобрук: Ваш путь к мастерству в программировании

Почему сокет UDP идентифицируется по IP-адресу назначения и порту назначения?

Согласно «Компьютерным сетям: нисходящий подход» Куросе и др., UDP-сокет полностью идентифицируется по IP-адресу назначения и порту назначения.

Зачем нам нужен целевой IP здесь? Я думал, что UDP нужен только порт назначения для демультиплексирования.

27.03.2015

  • Вы не даете достаточного контекста этому утверждению. В каких пределах они это имели в виду. Границы машин, границы интернета? 27.03.2015
  • Они ошибаются. Он идентифицируется по его собственному IP-адресу: порт точно по той же причине, что и в вашем предыдущий вопрос. 27.03.2015

Ответы:


1

Машина может иметь несколько IP-адресов, и разные сокеты могут быть привязаны к одному и тому же порту на разных IP-адресах. Он должен использовать IP-адрес назначения, чтобы узнать, в какой из этих сокетов следует отправить входящую дейтаграмму.

На самом деле, довольно часто для каждого IP-адреса используется отдельный сокет. При отправке ответа мы хотим убедиться, что IP-адрес источника соответствует IP-адресу назначения запроса, чтобы клиент мог сказать, что ответ пришел с того же сервера, на который он был отправлен. Благодаря использованию разных сокетов для каждого IP-адреса и отправке ответа из того же сокета, на который пришел запрос, поддерживается эта согласованность. Некоторые реализации сокетов имеют расширение, позволяющее установить исходный IP-адрес во время отправки ответа, поэтому они могут использовать один сокет для всех IP-адресов, но это не является частью стандартного API сокетов.

27.03.2015

2

Я думаю, что вы путаете UDP с Multicast.

Многоадресная рассылка — это широковещательный протокол, которому не требуется IP-адрес назначения. Ему нужен только номер порта, потому что он доставляется на все IP-адреса на данном порту.

UDP, напротив, доставляется только на один IP-адрес. Вот почему ему нужен этот IP-адрес назначения.

27.03.2015
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..