Понимание основ сокетов - PullRequest
       21

Понимание основ сокетов

17 голосов
/ 24 января 2011

Я читал об основах сетевого программирования, но мне трудно найти прямое объяснение, что именно и что такое сокет, и как он связан со стеком OSI или TCP / IP.

  1. Может кто-нибудь объяснить мне, что такое сокет?Это структура данных, определяемая программистом или API, или аппаратное устройство на сетевой карте?

  2. Какие уровни упомянутых сетевых моделей имеют дело с «необработанными» сокетами?Транспортный слой?Сетевой уровень?

  3. С точки зрения данных, которые они передают между ними, основаны ли они на текстовом сокете или двоичные?

  4. Есть ли альтернатива сетевому программированию на основе сокетов?Или все сетевые приложения используют какую-либо форму сокета?

Если я смогу получить так много, у меня должно быть довольно четкое понимание всего остального, что я читаю.Спасибо за любую помощь!

Ответы [ 4 ]

7 голосов
/ 24 января 2011

Короткие ответы:

  1. Сокет - это абстракция конечной точки IP-соединения, поэтому, если вы думаете о ней как о структуре API, вы не очень далеки от этого. Пожалуйста, прочитайте http://en.wikipedia.org/wiki/Internet_socket
  2. Интернет-уровень , т.е. протокол IP. На практике вы обычно явно используете сокеты, которые связываются с определенными параметрами транспортного уровня (датаграмма / UDP или поток / TCP)
  3. Сокеты отправляют данные в порядке сетевых байтов - текстовых или двоичных, зависит от протокола верхнего уровня.
  4. Теоретически, возможно, да - но на практике весь IP-трафик осуществляется с использованием «сокетов»
4 голосов
/ 24 января 2011

Сокет - это программный механизм, предоставляемый операционной системой.Как следует из названия, вы можете думать о нем как о «электрической розетке» или каком-то электрическом разъеме, хотя розетка - это не физическое устройство, а программный механизм.В реальном мире, когда у вас есть два электрических разъема, вы можете подключить их с помощью провода.Таким же образом в сетевом программировании вы можете создать один сокет на одном компьютере и другой сокет на другом компьютере, а затем подключить эти сокеты.И когда вы записываете данные в одну из них, вы получаете их в другую.Есть также несколько разных видов розеток.Например, если вы программируете серверное программное обеспечение, вы хотите иметь прослушивающий сокет, который никогда не отправляет и не принимает фактические данные, а только прослушивает и принимает входящие соединения и создает новый сокет для каждого нового соединения.

3 голосов
/ 24 января 2011

Сокет, на языке C, представляет собой структуру данных в пространстве ядра, соответствующую одной конечной точке сеанса UDP или TCP (я использую сеанс очень свободно, когда говорю о UDP). Обычно он связан с одним единственным номером порта на локальной стороне и редко более чем одним «известным» номером на любой стороне сеанса.

«Необработанный сокет» - это конечная точка более или менее физического транспорта. Они редко используются при разработке приложений, но иногда используются для различных диагностических целей (traceroute, ping, возможно, другие), и для их открытия могут потребоваться повышенные привилегии.

Сокеты по своей природе являются бинарным переносом октетов. Нередко к сокетам (по крайней мере, к сокетам TCP) относятся как к текстовым потокам.

Я еще не видел модели программирования, в которой бы не использовалось что-то вроде сокетов, если вы копали достаточно глубоко, но, безусловно, были и другие модели создания сетей. Псевдо-файловая система "/ net /", где открытие "/net/127.0.0.0.1/tcp/80" (или "tcp / www") даст вам дескриптор файла, в котором записи заканчиваются на веб-сервере на localhost это только один.

0 голосов
/ 05 марта 2019

Предположим, your PC at home, и у вас открыто two browser окна.

Один смотрит на facebook website, а другой на Yahoo website.

Подключение к Facebookбудет:

Your PC – IP1+port 30200 ——– facebook IP2 +port 80 (standard port)

combination IP1+30200 = the socket on the client computer и IP2 + port 80 = destination socket on the facebook server.

Подключение к Yahoo будет:

your PC – IP1+port 60401 ——–Yahoo IP3 +port 80 (standard port)

The combination IP1+60401 = the socket on the client computer и IP3 + port 80 = destination socket on the Yahoo server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...