2011-01-24 5 views
15

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

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

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

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

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

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

ответ

7

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

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

Спасибо, Кимва! Итак, можно ли сказать, что кто-то, реализующий структуру сокета, должен позволить ему соответствовать IP-протоколу? – Eugie

+0

... Кроме того, если сокеты являются конструкциями уровня IP, то в чем различие между сокетом, реализующим IPv4 или IPSec? – Eugie

+0

Сокеты не реализуют (обычно) IPSec - вы (обычно) просто используете «обычный» TCP или UDP-сокет для создания трафика, а нижние уровни сетевого стека (возможно, на другом сетевом узле) обрабатывают преобразование ESP для IPSec , С точки зрения приложения-программиста не должно быть разницы между сокетами IPv4 и IPv6, чтобы исключить адреса, которые необходимо использовать при открытии сокета. – Kimvais

4

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

+0

Кто позаботится о передаче данных с одного конца на другой? –

3

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

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

Розетки по своей природе являются двоичными октетными транспортными средствами.Необычно рассматривать сокеты (TCP-сокеты, как минимум) как потоки, основанные на тексте.

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

Смежные вопросы