Cокеты процессоров, что такое сокет (socket) процессора. Что такое Socket и какие они бывают Что такое сокет файлы

  • 10.10.2022

Персональный компьютер – это привычное устройство для большинства людей, присутствующее в нынешнее время практически в каждом доме. Немногие пользователи задумываются о его технических свойствах, кроме, специалистов и профессиональных пользователей, о том, какие характеристики имеет устройство, установленные деталей на ПК . Вопросы начинают появляться, когда устройство перестаёт справляться с поставленными задачами, что требует его усовершенствования и модернизации. В этой статье расскажем о «сокетах», занимающих не последнюю позицию в производительности компьютера, обуславливают возможности обновления до требуемых параметров, ответим на вопрос многих потребителей, какой сокет выбрать в 2018 году, чтобы его возможности соответствовали потребностям пользователя.

Правила выбора сокета.

Большинство потребителей при подборе нового компьютера или модернизации старой модели ориентируются на сверхмощные, технические параметры процессора и количество ядер, что по умолчанию должно предопределять критерии функциональности ПК. Эта позиция является правильной, однако не стопроцентно. Если разобраться в технической стороне работоспособности компьютера, потенциальному покупателю устройства придётся столкнуться с фразами «материнская плата» и «сокет». Что такое материнская плата, большинство людей знают или имеют приблизительное представление о её значении для агрегата, однако понятие «сокет» для многих является неизвестным. Слово «сокет» относится к компьютерной области терминологии, деталь выступает важной составляющей ПК. С практической стороны, сокет является разъёмом, устанавливающимся на системную плату, через который подсоединяется процессор устройства. Сокеты, как и другие компоненты системы, имеют разные характеристики, при несоответствии которых с процессором , выступающим «сердцем» компьютера, добиться требуемой производительности ПК невозможно.

При подборе комплектующих для ПК важно учитывать не только критерии процессора, но и характеристики разъёма, устанавливающегося на материнскую плату. Одни из них уже устарели по техническим позициям, другие отличаются прекрасными показателями с перспективными возможностями дальнейшего обновления компьютера. Современный рынок предлагает множество разновидностей этого элемента системы. Визуально деталь представляет собой прямоугольную платформу с контактами и фиксатором, на который устанавливается процессор, а также специальными отверстиями для крепления охладительных элементов. Рассмотрим дальше, на каком сокете лучше собрать компьютер в 2018 году, чтобы его возможности и производительность целиком удовлетворили требования пользователя.

Нюансы выбора

Перед тем как ответить, какой сокет лучше установить в систему, необходимо определиться с важными для компьютера комплектующими: процессором и материнской платой , от разновидности которых и будет варьироваться нужный потребителю тип разъёма. В 2018 году флагманские позиции по производству процессоров занимают две фирмы, конкурирующие между собой: AMD и Intel. Каждый из изготовителей поставляет на рынок компьютерной продукции сокеты, специально разработанные под процессоры своей марки. Модели разъёмов от этих производителей различаются как по техническим параметрам, так и визуально:

  1. Детали от AMD имеют отверстия на плате, предназначенные для контактов, которые в форме штырей имеются на процессорах компании. Комплектующие от Intel отличаются наличием контактов на плате, к которым подсоединяется процессор компании за счёт наличия в нём специфических проёмов.
  2. Подсоединение процессора к сокету от компании Intel происходит за счёт наличия на плате защёлки-фиксатора, а разъём AMD крепится путём сдвижения верхней пластины относительно находящейся снизу.
  3. Вентилятор в моделях компании Intel фиксируются в отверстиях, а кулер от AMD устанавливается на специальную рамку.

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

  1. Разъёмы под маркировкой AM2 и AM2+ от производителя AMD.
  2. Детали LGA с порядковыми номерами 2011, 1366, 1156 и 775 под брендом Intel.

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

Наилучшие варианты

Как уже было сказано, ответить на вопрос однозначно, какой сокет лучше для ПК, практически невозможно, так как всё зависит от критерия, для чего собирается устройство. Если потребителю нужен агрегат исключительно для выполнения офисных задач, несложных программ, тогда стоит обратить внимание на модель LGA 1150 от Intel или варианты AM1, FM2 и FM2+ от разработчика AMD. Каждая из этих моделей разъёмов будет превосходно справляться с несложными офисными задачами, не требующими сложных графических решений, санкционирует работу в интернете, позволяет просматривать видео, даже эксплуатировать простые игры, но не больше. Соединители этого класса уже начинают уходить из рынка, так как их пик популярности давно прошёл – эти модели невозможно в дальнейшем усовершенствовать, что при желании модернизировать устройство повлечёт потребность в покупке новых деталей. Единственным преимуществом этих моделей является цена, которая относится к категории бюджетных, в сравнении со следующими деталями, предназначенными для сборки мощных и производительных компьютеров.

Получше по критериям и техническим возможностям будет модель сокета Intel LGA 1151. Этот разъём находится на данный момент на пике популярности, считается наиболее востребованным на рынке компьютерных деталей, сочетает отличное качество, доступную цену и возможность сборки на этом разъёме довольно производительного компьютерного устройства. Хорошая репутация и у модели AM3+ из средней ценовой категории. На его базе можно собрать мощный агрегат с процессором AMD, подходящий для решения не только базовых задач, но и для игр современной категории. В этом случае всё зависит от технических показателей процессора, который будет установлен в комплекте. Если потребителя интересуют не бюджетные решения вопроса, какой сокет лучше в 2018 году, позволяющие на несколько лет забыть о потребности модернизации своего компьютера, тогда ему стоит обратить внимание на LGA2011-v3 и AM4 от Intel и AMD соответственно. Эти соединители позиционируются как лучшие в нынешнее время варианты сокетов для сборки профессионального или игрового компьютера.

Практическое применение знаний

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

Подведём итоги

Эта статья отвечает на вопрос, что такое сокет, который интересует людей, столкнувшихся с проблемой выбора компьютера или потребностью в его модернизации путём установки современных деталей. В обзоре представлены лучшие варианты решений проблемы выбора разъёма, в зависимости от потребностей пользователя ПК.

И ещё один совет: если вы не являетесь профессионалом, имеете только базовые компьютерные знания, лучше проконсультируйтесь перед покупкой рабочих деталей для установки в ПК со специалистами, которые помогут квалифицированно разобраться в нюансах подбора комплектующих, позаботятся об их совместимости.

В структуре протоколов связи сокет - это модель конца сетевого соединения. Попросту говоря, сокет - это комбинация 32-х битного адреса, разбитого на четыре октета, и номера порта в диапазоне от 0 до 65535, которые используются для соединения компьютеров по IP. Например, 196.106.124.30:200.

Что такое сокет процессора

Сокет процессора - это гнездо для помещения центрального процессора на материнскую плату. Использование сокетов облегчает процедуру замены процессора в ходе ремонта или обновления компьютера, поэтому вместо припаивания процессора непосредственно к материнской плате компьютера повсеместно используются сокеты. Разным процессорам соответствуют разные сокеты. Основным различием сокетов являются: производитель, размер, наличие пинов и их количество. Пины (ножки) процессора могут располагаться как на сокете, так и на процессоре, а к сокету определенной фирмы подойдёт процесор только аналогичной фирмы-производителя. Так процессор Intel не будет работать на сокете производства AMD. Также определённой модели (типу) сокета соответствует только одна или несколько моделей процессоров. Так процессор Intel Core 2 Duo совместим только с сокетом LGA775.

Как узнать, какой у вас стоит сокет

Узнать тип стоящего в вашем компьютере сокета можно двумя способами:

  • Посмотрите в системных характеристиках вашего компьютера, какой у вас установлен процессор. Поскольку каждому процессору соответствует определённый тип сокета, вы сможете без труда определить свой сокет, воспользовавшись таблицой совместимости, которую можно найти в интернете.
  • Каждый сокет промаркирован производителем. Снимите радиатор процессора и найдите на сокете маркировку, на которой указана модель сокета.

Низкопрофильный разъём процессора

Низкопрофильные разъёмы используются при производстве мобильных телефонов, коммуникаторов и ноутбуков. Они нужны для того, чтобы уменьшить толщину конечного продукта. Теперь вы знаете,что такое сокет.

Сокет (socket) процессора - разъем, место на компьютера куда вставляется процессор. Процессор, прежде чем он будет установлен в материнскую плату, должен подходить ей по сокету. Это как розетка и контактная вилка - стоит ли говорить, что к простой советской розетке евро-вилка не подойдет.

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

Вот представьте - вы пришли в компьютерный магазин, выбрали там процессор, заплатили за него денег и довольные пришли домой, начинаете его устанавливать - а он НЕ ПОДХОДИТ! Вы все бросаете, бежите обратно в магазин, надеясь вернуть этот процессор обратно и тем самым исправить ситуацию, прибегаете, а вам говорят - "это не гарантийный случай, смотреть нужно было внимательней когда покупали". Ну да ладно, это было небольшое лирическое отступление. А теперь поговорим конкретно про эти самые сокеты.

Все многообразие сокетов можно разделить на две большие группы:

  1. Сокеты процессоров компании Intel.
  2. Сокеты процессоров компании AMD.

Ниже приведены фотографии сокетов обеих компаний-производителей процессоров.

На этой фотографии можно заметить, что "ножки" контактов торчат из сокета на материнской плате.

А на этой фотографии, напротив, можно наблюдать углубления под эти контакты, а сами они находится непосредственно на процессоре.

Давайте просмотрим, чем же так кардинально отличаются сокеты друг от друга физически :

  • Количеством контактов
  • Типом этих самых контактов
  • Расстоянием креплений для процессорных кулеров
  • Собственно размером самого сокета

Кол-во контактов - их может быть 400, 500, 1000 и даже больше. Как узнать? В маркировке сокета уже содержится вся информация. Например, процессор Intel Pentium 4 имеет сокет LGA 775. Так вот 775 - это как раз количество контактов, а LGA - означает то что процессор не имеет контактных ножек (штырьков), они находятся в сокете материнской платы.

Тип контактов - тут все понятно, либо "штырьки", либо контакты без штырьков. Другого как говорится не дано.

Теперь по поводу расстояний между креплениями для процессорных кулеров. Дело в том, что эти расстояния у каждого сокета свои и на это тоже нужно обращать особое внимание. Хотя и существуют способы из разряда «сделай сам», когда кулер от одного сокета крепится на другой сокет при помощи умелых рук и еще чего-то там..

Это все были физические отличия, теперь давайте поговорим о том - чем же так отличаются сокеты друг от друга в плане технологическом. А в технологическом плане сокеты отличаются друг от друга :

  • Наличием различных дополнительных контроллеров
  • Наличием или отсутствием поддержки интегрированной в процессор графики (графическое ядро процессора)
  • Более высокими параметрами производительности

На что еще влияет сокет (soket) процессора?

Помимо того, что уже тут написано, сокет процессора еще влияет на размер самого процессора. Вообще говоря, если попытаться выразиться совсем уж кратко - сокет процессора влияет на то, какой процессор будет в него установлен. Все остальное (например то что будет написано здесь далее по тексту) зависит от процессора, но мы то с вами знаем, что процессор и сокет - это два неразрывных понятия. Поэтому все те параметры, которые зависят от процессора (или на которые влияет процессор), зависят и от сокета этого процессора.

Пожалуй, приведу еще несколько моментов, на которые имеет возможность оказывать влияние процессор (или его сокет), иными словами - процессор или его сокет влияют на:

  • Тип поддерживаемой оперативной памяти
  • Частоту шины FSB
  • Косвенно (по большей части - чипсет) на версию слота PCI-e
  • На версию (тоже косвенно)

Для чего вообще нужен сокет?

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

Теперь давайте поговорим про поддержку сокетами различных процессоров. Ниже приведена таблица с популярными (на момент публикации материала) сокетами и соответствующими им процессорами:

Сокет (socket) Процессор
LGA 775 (Socket T), год начала выпуска - 2004 Intel Pentium 4
Pentium 4 Extreme Edition
Intel Celeron D
Pentium D
Pentium Extreme Edition
Pentium Dual-Core
Core 2 Duo
Core 2 Extreme
Core 2 Quad
Xeon (для серверов)
LGA 1366 (Socket B), год начала выпуска - 2008 Intel Core i7 (9xx)
Intel Celeron P1053
LGA 1156 (Socket H), год начала выпуска - 2009 Intel Core i7 (8xx)
Intel Core i5 (7xx, 6xx)
Intel Core i3 (5xx)
Intel Pentium G69x0
Intel Celeron G1101
Intel Xeon X,L (34xx)
LGA 1155 (Socket H2), год начала выпуска - 2011 Sandy Bridge и Intel Ivy Bridge
LGA 1150 (Socket H3), планируемый год выпуска - (2013-2014) Intel Haswell и Intel Broadwell
Socket 939, год начала выпуска - нет данных Athlon 64
Athlon 64 FX
Athlon 64 X2
Socket AM2, год начала выпуска - 2006 Athlon 64 (не все)
Athlon 64 X2 (не все)
Athlon X2
Athlon 64 FX-62
Opteron 12xx
Sempron (некоторые)
Sempron X2
Phenom (ограниченная поддержка)
Socket AM2+, год начала выпуска - 2007 Athlon X2
Athlon II
Opteron 13xx
Phenom
Phenom II
Socket AM3, год начала выпуска - 2009 Phenom II (кроме X4 920 и 940)
Athlon II
Sempron 140
Opteron 138x
Socket AM3+, год начала выпуска - 2011 AMD FX-Series(AMD FX-4100 AMD FX-6100 и AMD FX-8120 AMD FX-8150)
Socket FM1, год начала выпуска - 2011 Все процессоры с микроархитектурой AMD Fusion
Socket FM2, год начала выпуска - 2012 Все процессоры с микроархитектурой Bulldozer

И в заключение - небольшая рекомендация тем, кто собирается покупать новый процессор: перед покупкой всегда проверяйте совместимость сокета материнской платы и процессора. К примеру если материнская плата имеет сокет LGA775 - берите процессоры, которые сделаны именно под этот сокет, никакие другие процессоры работать не будут.

Желая провести апгрейд своей системы (или собрать такую систему с нуля) пользователь может столкнуться с вопросом соответствия желаемых процессора и материнской платы. Недостаточно пойти в магазин и купить для материнской платы новый процессор, нужно прежде всего узнать, подходит ли данный процессор материнской плате по сокету. При этом некоторые пользователи довольно смутно представляют, что такое сокет, как он выглядит, и для чего предназначен. Данный материал призван закрыть «белые пятна» в знаниях некоторых пользователей, в нём я расскажу, что это вообще такое сокет, и какова специфика его применения в ПК.

Что это Сокет материнской платы?

Сокет (перевод от англ. «socket» – гнездо, розетка) - это простой разъём на материнской плате ПК, куда вставляется ваш процессор.

Так выглядит один из сокетов для процессоров Интел

Выражаясь чуть сложнее, сокет – это набор механических компонентов, осуществляющих механическую и электрическую связь между микропроцессором и материнской платой.

Обычно сокет имеет вид прямоугольной площадки определённой цветовой гаммы, на которую устанавливается и закрепляется центральный процессор. Рядом с ним обычно расположены ещё несколько отверстий (или крепежей) для установки системы охлаждения ЦП.

Зачем производителям понадобился сокет, ведь было бы проще просто припаять процессор к материнской плате? В первую очередь, он нужен для удобного апргейда вашей системы путём замены старого процессора на более современный аналог. Используя механику сокета, вы можете легко отсоединить ЦП от материнской платы, а затем и подключить к ней новый процессор, предназначенный для сокета данного типа.

Использование сокета актуально в стационарных и серверных ПК, где вы можете поменять процессоры на более мощные аналоги. В ноутбуках же обычно используется припаянный к материнской плате центральный процессор, сменить который без пайки не получится.

Что такое Socket процессора?

Смысловая нагрузка понятия «сокет процессора» схожа с понятием «сокет материнской платы», это тип сокета, который должен соответствовать сокету материнской платы при установке на него данного процессора. При подборе процессора к уже имеющейся у вас материнской плате обращайте внимание на данные о socket процессора, это поможет определить, подходит ли указанный процессор к материнской плате вашего ПК. Как провести можно узнать по ссылке.

Разнообразие сокетов

После того как мы узнали, что значит сокет, разберёмся в разнообразии имеющихся сокетов. Все имеющиеся ныне сокеты делятся на разъёмы от компаний «Intel» и «AMD». Процессоры от «Интел» нельзя установить в разъём от «АМД», наоборот, соответственно, также невозможно.

При этом сокеты различаются:

  • По количеству используемых контактов (которых многие сотни), например на сокете LGA 775 (абревіатура «Land Grid Array») число 775 означает количество ножек процессора;
  • По типу контактов (при соединении процессора и материнской платы используются ножки процессора (АМД), или ножки самого сокета (ИНТЕЛ);
  • Расстоянием для крепежа процессорного кулера;
  • Размером сокета (форм-фактор);
  • Наличием или отсутствием контроллеров;
  • Наличием или отсутствием встроенного графического процессора;
  • Показателем производительности.

Как выбрать сокет?

При покупке процессора в компьютерных магазинах рядом с процессором обычно имеется табличка, на которой вы можете прочитать, для какого сокета предназначен данный процессор. Если на вашей материнке используется один тип разъёма, а указанный процессор предназначен для другого сокета, то подключить ЦП к материнской плате не получится (ряд исключений есть у АМД, у которой, например, на материнские платы с сокетом АМ3+ можно установить процессоры, предназначенные для более архаичного сокета АМ3).

Как узнать Сокет у вас в компьютере

Как же узнать, какой сокет у вас используется? Для этого есть несколько возможных путей:

  • Документация к материнской плате вашего ПК. Там обычно содержится детальная информация об использующемся на МП типе сокета. Также можно обследовать материнку ПК на предмет данных о её модели, затем вбить эти данные на сайте производителя, и получить всю сопутствующую информацию, в том числе и о специфике использованного сокета;
  • Различные тестирующие программы снабдят вас информацией о внутренних компонентах ПК («AIDA64», «CPU-Z» и аналоги);
  • На пластмассовом или металлическом участке материнской платы рядом с процессором, на разъёме сокета и т.д. (для получения подобной информации может понадобиться снятие с процессора системы охлаждения, чего я делать не рекомендую, особенно в случае, когда вы не уверены в своей компетенции).

Заключение

В данном материале я рассказал, что же такое сокет, для чего он предназначен, и как получить информацию о типе интерфейса на вашем ПК. Если вы решили произвести самостоятельную замену центрального процессора, то рекомендую, прежде всего, узнать тип использующегося на материнке сокета, а затем уже подыскать более мощный ЦП под тип сокета вашей системы. Замену же процессора необходимо выполнять скрупулёзно и аккуратно, а если вы не уверены в своих силах, то лучше доверить данную процедуру компетентному специалисту.

Что такое сокет?

Вы постоянно слышите разговоры о каких-то "сокетах" и, наверно, вам интересно, что же это такое. В общем, изначально сокеты - это способ общения программ друг с другом, используя файловые дескрипторы Unix.

Ок -- возможно, вы слышали от какого-нибуть Unix-хакера фразу типа "господи, всё, что есть в Unix - файлы!" Этот человек, возможно, имел в виду, что программы в Unix при абсолютно любом вводе-выводе читают или пишут в файловый дескриптор. Дескриптор файла - это простое целое число, связанное операционной системой с открытым файлов. Но (и в этом заключается ловушка) файлом может быть и сетевое подключение, и FIFO, и пайпы, и терминал, и реальный файл на диске, и просто что угодно другое. Всё в UNIX - это файл! Итак, просто поверьте, что собираясь общаться с другой программой через интернет, вам придется делать это через дескриптор файла.

"Эй, умник, а откуда мне взять этот дескриптор файла для работы в сети?" Отвечу.
Вы совершаете системный вызов socket(). Он возвращает дескриптор сокета, и вы общаетесь через него с помощью системных вызовов send() и recv() (man send, man recv).

"Но, эй!" могли бы вы воскликнуть. "Если это дескриптор файла, почему я не могу использовать простые функции read() и write(), чтобы общаться через него?". Ответ прост: "Вы можете!". Немного развернутый ответ: "Вы можете, но send() и recv() предлагают гораздо больший контроль над передачей ваших данных."

Что дальше? Как насчет этого: бывают разные виды сокетов. Есть DARPA инернет-адреса (Сокеты интернет), CCITT X.25 адреса (X.25 сокеты, которые вам не нужны), и, вероятно, многие другие в зависимости от особенностей вашей ОС. Этот документ описывает только первые, Интернет-Сокеты.

Два типа интернет-сокетов

Что? Есть два типа интернет сокетов? Да. Ну ладно, нет, я вру. Есть больше, но я не хочу вас пугать. Есть ещё raw-сокеты, очень мощная штука, вам стоит взглянуть на них.

Ну ладно. Какие два типа? Один из них - "потоковый сокет", второй - "сокет дейтаграмм", в дальнейшем они будут называться "SOCK_STREAM" и "SOCK_DGRAM" соответственно. Дейтаграммные сокеты иногда называют "сокетами без соединения" (хотя они могут и connect()`иться, если вам этого действительно захочется. См. connect() ниже.)

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

Что использует потоковые сокеты? Ну, вы наверно слышали о программе Telnet, да? Телнет использует потоковый сокет. Все символы, которые вы печатаете, должны прибыть на другой конец в том же порядке, верно? Кроме того, браузеры используют протокол HTTP, который в свою очередь использует потоковые сокеты для получения страниц. Если вы зайдёте телнетом на любой сайт, на порт 80 и наберёте что-то вроде "GET / HTTP/1.0" и нажмете ввод два раза, на вас свалится куча HTML ;)

Как потоковые сокеты достигают высокого уровня качества передачи данных? Они используют протокол под названием "The Transmission Control Protocol", иначе - "TCP". TCP гарантирует, что ваши данные передаются последовательно и без ошибок. Возможно, ранее вы слышали о TCP как о половине от "TCP/IP", где IP - это "Internet Protocol". IP имеет дело в первую очередь с маршрутизацей в Интернете и сам по себе не отвечает за целостность данных.

Круто. А что насчёт дейтаграммных сокетов? Почему они называются без-соединительными? В чем тут дело? Почему они ненадежны?
Ну, вот некоторые факты: если вы посылаете дейтаграмму, она может дойти. А может и не дойти. Но если уж приходит, то данные внутри пакета будут без ошибок.

Дейтаграммные сокеты также используют IP для роутинга, но не используют TCP; они используют "User Datagram Protocol", или "UDP".

Почему UDP не устанавливает соединения? Потому что вам не нужно держать открытое соединение с потоковыми сокетами. Вы просто строите пакет, формируете IP-заголовок с информацией о получателе, и посылаете пакет наружу. Устанавливать соединение нет необходимости. UDP как правило используется либо там, где стек TCP недоступен, либо там, где один-другой пропущеный пакет не приводит к концу света. Примеры приложений: TFTP (trivial file transfer protocol, младшый брат FTP), dhcpcd (DHCP клиент), сетевые игры, потоковое аудио, видео конференции и т.д.

"Подождите минутку! TFTP и DHCPcd используются для передачи бинарных данных с одного хоста на другой! Данные не могут быть потеряны, если вы хотите нормально с ними работать! Что это за темная магия?"

Нуу, мой человеческий друг, TFTP и подобные программы обычно строят свой собственный протокол поверх UDP. Например, TFTP протокол гласит, что для каждого принятого пакета получатель должен отправить обратно пакет, говорящий "я получил его!" ("ACK"-пакет). Если отправитель исходного пакета не получает ответ, скажем, в течение 5 секунд, он отправит пакет повторно, пока, наконец, не получит ACK. Подобные процедуры очень важны для реализации надёжных приложений, использующих SOCK_DGRAM.

Для приложений, не требующих такой надёжности - игры, аудио или видео, вы просто игнорируете потерянные пакеты или, возможно, пытаетесь как-то их компенсировать. (Игроки в quake обычно называют это явление "проклятый лаг", и "проклятый" - это ещё крайне мягкое высказывание).

Зачем вам может понадобиться использовать ненадежный базовый протокол? По двум причинам: скорость и скорость. Этот способ гораздо быстрее, выстрелил-и-забыл, чем постоянное слежение за тем, всё ли благополучно прибыло получателю. Если вы отправляете сообщение в чате, TCP великолепен, но если вы шлёте 40 позиционных обновлений персонажа в секунду, может быть, не так и важно, если один или два из них потеряются, и UDP тут будет неплохим выбором.

Теория сетей и низкие уровни

Поскольку я только что упоминал слои протоколов, пришло время поговорить о том, как на самом деле работает сеть, и показать примеры того, как построены пакеты SOCK_DGRAM. На самом деле вы можете пропустить этот раздел, но он является неплохим теоретическим подспорьем.

Эй, детишки, настало время поговорить об инкапсуляции данных! Это очень-очень важная вещь. Это настолько важно, что вам стоит выучить это наизусть.
В основном суть такова: пакет родился; пакет завёрнут ("инкапсулирован") в заголовок первым протоколом (скажем, протоколом TFTP), затем всё это (включая хидер TFTP) инкапсулируется вновь следующим протоколом (скажем, UDP), затем снова - следующим (например, IP), и наконец финальным, физическим протоколом (скажем, Ethernet).

Когда другой компьютер получает пакет, оборудование (сетевая карта) исключает Ethernet-заголовок (разворачивает пакет), ядро ОС исключает заголовки IP и UDP, программа TFTP исключает заголовок TFTP, и наконец мы получаем голые данные.

Теперь наконец можно поговорить о печально известной модели OSI - многоуровневой модели сети. Эта модель описывает систему сетевой функциональности, которая имеет много преимуществ по сравнению с другими моделями. Например, вы можете написать в своей программе как сокеты, которые шлют данные не заботясь о том, как физически передаются данные (серийный порт, эзернет, модем и т.д.), так как программы на более низких уровнях (ОС, драйверы) делают за вас всю работу, и представляют её прозрачно для программиста.

Собственно, вот все уровни полномасштабной модели:


  • Прикладной

  • Представительский

  • Сеансовый

  • Транспортный

  • Сетевой

  • Канальный

  • Аппаратный (физический)

Физический уровень - это оборудование; ком-порт, сетевая карта, модем и т.д. Прикладной слой - дальше всех отстоит от физического. Это то место, где пользователь взаимодействует с сетью.

Для нас эта модель слишком общая и обширная. Сетевая модель, которую можем использовать мы, может выглядеть так:


  • Уровень приложений (Telnet, FTP и т.д.)

  • Транспортный протокол хост-хост (TCP, UDP)

  • Интернет-уровень (IP и маршрутизация)

  • Уровень доступа к сети (Ethernet, Wi-Fi или что угодно)

Теперь вы можете четко видеть, как эти слои соответствуют инкапсуляции исходных данных.

Видите, как много работы заключается в создании одного простого пакета? Офигеть! И все эти заголовки пакетов вы должны самостоятельно набирать в блокноте! Шучу. Всё, что вам нужно сделать в случае потоковых сокетов - это послать (send()) данные наружу. Ядро ОС построит TCP и IP хидеры, а оборудование возьмет на себя уровень доступа к сети. Ах, я люблю современные технологии.

На этом наш краткий экскурс в теорию сетей завершен. Ах да, я забыл вам сказать: всё, что я хотел вам сказать о маршрутизации: ничего! Да-да, я ничего не буду говорить об этом. О таблице маршрутизации за вас позаботятся ОС и IP-протокол. Если вам действительно интересно, почитайте документацию в интернете, её море.