Что такое сокет. основные сокеты процессоров amd и intel

Как работают сокеты?

TCP-сокет устанавливает связь между клиентом и сервером в несколько этапов.

Что такое сокет. основные сокеты процессоров amd и intel
Блок-схема коммуникации TCP-сокета

  • Socket() — на сервере создается конечная точка для коммуникации.
  • Bind() — сокету присваивается уникальный номер и для него резервируется уникальная комбинации IP-адреса и порта.
  • Listen() — после создания сокета сервер ожидает подключения клиента.
  • Accept() — сервер получает запрос на подключение от клиентского сокета.
  • Connect() — клиент и сервер соединены друг с другом.
  • Send()/Recieve() — обмен данными между клиентом и сервером.
  • Close() — после обмена данными сервер и клиент разрывают соединение.

На каждой из перечисленных выше стадий коммуникации сокетов “под капотом» происходит много всего сложного. Однако этих знаний вполне достаточно для понимания и демонстрации того, как работает коммуникация посредством TCP-сокетов.

К настоящему времени мы уже достаточно знаем о TCP-сокетах. Давайте теперь посмотрим на них в действии.

Сокеты Беркли

Интерфейс называется интерфейсом сокетов. Сокеты впервые появились в операционной системе (ОС) Berkeley Unix 4.2 BSD в 1983 году. 

Там сокеты, как и любые другие устройства в UNIX это просто файл, специального типа. Вы пишите данные в этот файл, они автоматически передаются по сети на другой компьютер. Другой компьютер может прочитать данные оттуда, как из обычного файла. Хотя, на самом деле они пришли по сети. 

Таким образом взаимодействие с сетью скрыто от программиста. Такая абстракция оказалась очень удобной, сокеты стали использоваться не только в UNIX, но и во многих других ОС в том числе в windows и linux, поддержку сокетов добавили во многие языки программирования. 

Сокеты сейчас это де-факто стандарт для взаимодействия программ с транспортным уровнем, стека протоколов TCP/IP. 

socket()¶

См.также

  • http://unixhelp.ed.ac.uk/CGI/man-cgi?socket+2

Создаёт конечную точку соединения и возвращает файловый дескриптор.
Принимает три аргумента:

  1. domain указывающий семейство протоколов создаваемого сокета

    • AF_INET для сетевого протокола IPv4
    • AF_INET6 для IPv6
    • AF_UNIX для локальных сокетов (используя файл)
  2. type

    • SOCK_STREAM (надёжная потокоориентированная служба (сервис) или
      потоковый сокет)
    • SOCK_DGRAM (служба датаграмм или датаграммный
      сокет)
    • SOCK_RAW (Сырой сокет — сырой протокол поверх сетевого уровня).
  3. protocol

    Протоколы обозначаются символьными константами с префиксом IPPROTO_*
    (например, IPPROTO_TCP или IPPROTO_UDP). Допускается значение
    protocol=0 (протокол не указан), в этом случае используется значение по
    умолчанию для данного вида соединений.

Примечание

Функция возвращает −1 в случае ошибки. Иначе, она возвращает целое число,
представляющее присвоенный дескриптор.

Пример на Си

#include <sys/types.h>
#include <sys/socket.h>

int socket(int domain, int type, int protocol);
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

void error(const char *msg)
{
    perror(msg);
    exit();
}

int main(int argc, char *argv[])
{
    int sockfd, portno, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    char buffer256];
    if (argc < 3) {
       fprintf(stderr,"usage %s hostname port\n", argv]);
       exit();
    }

    // Задаем номер порта
    portno = atoi(argv2]);

    // Создаем сокет
    sockfd = socket(AF_INET, SOCK_STREAM, );
    if (sockfd < )
        error("ERROR opening socket");

    // Конвертирует имя хоста в IP адрес
    server = gethostbyname(argv1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit();
    }

    // Указываем тип сокета Интернет
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;

    // Указаваем адрес IP сокета
    bcopy((char *)server->h_addr,
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);

    // Указываем порт сокета
    serv_addr.sin_port = htons(portno);

    // Устанавливаем соединение
    if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < )
        error("ERROR connecting");

    // Вводим сообщение из консоли
    printf("Please enter the message: ");
    bzero(buffer, 256);
    fgets(buffer, 255, stdin);

    // Отправляем данные
    n = write(sockfd, buffer, strlen(buffer));
    if (n < )
         error("ERROR writing to socket");

    // Сбрасываем буфер
    bzero(buffer, 256);

    // Читаем ответ
    n = read(sockfd, buffer, 255);
    if (n < )
         error("ERROR reading from socket");
    printf("%s\n", buffer);

    close(sockfd);
    return ;
}

Пример на Python

Универсальные сокеты

Давным-давно, когда компьютеры были большими, а мониторы маленькими (не то, что сейчас!) все бренды, которые занялись производством процессоров, с целью унификации использовали одинаковые универсальные разъемы — от Socket 1 по 7 включительно.

Со временем спецификации у главных конкурентов — АМД и Интел, начали развиваться в разных направлениях, а все остальные бренды постепенно пропали с рынка. Сегодня найти работоспособный комп с процессором на универсальном сокете очень сложно.

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

Архитектуры и особенности процессоров LGA1155

Что такое сокет. основные сокеты процессоров amd и intel

Процессоры сокета 1155 выпускались на двух архитектурах: Sandy Bridge (была представлена в 2011 году) и Ivy Bridge ( с 2012 года).

Основные отличия Ivy Bridge от Sandy Bridge:

  • Техпроцесс 22nm против 32nm, как следствие — чуть более низкий TDP
  • Поддержка частоты памяти в 1600 Мгц вместо 1333 Мгц
  • Поддержка pci-e 3.0 вместо 2.0
  • Более мощное видеоядро (для моделей, где оно есть)

Для моделей серии Core определить архитектуру можно по номеру модели:

  • Sandy Bridge — номер начинается с цифры 2: Core i3 2100, Core i5 2300 и т.д.
  • Ivy Bridge — номер начинается с цифры 3: Core i3 3210, Core i5 3330 и т.д.

Также процессоры могут иметь различные индексы (например Core I5 2500K). Вот что они означают:

К — Процессоры со свободным множителем (а значит доступна настройка турболимитов, турбовольтажей, множителей и т.д.)P — Процессоры с заблокированным графическим ядром.S — Энергоэффективные процессоры с более низкими частотами в сравнении с безиндексными моделями.T — Высокоэнергоэффективные процессоры со значительно более низкими частотами в сравнении с безиндексными моделями.

Помимо этого, стоит учесть еще несколько важных особенностей:

  • Официально поддерживаемая частота памяти достаточно невысока, но возможен её разгон. Повышение частоты обуславливается чипсетом (разгон поддерживают чипсеты Z и P) и материнской платой конкретно. Фактически в контроллере Sandy Bridge имеется поддержка множителей для поддержки памяти вплоть до DDR3-2400 (на материнских платах обычно доступно только до 2133), контроллер Ivy Bridge поддерживает еще более высокие частоты.
  • Для некоторых моделей без индекса K разгон также возможен, но всё зависит от конкретной модели и чипсета материнской платы.

Функциональность

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

В большинстве случаев URL-адреса и их соединения используются для доступа в Интернет. Программы требуют простой связи между клиентом и сервером программы. Эта роль связана с сокетами, которые помогут связать клиентские и серверные части программы. Если клиент начинает устанавливать связь с сервером, то надежное соединение с сервером и клиентом будет осуществляться по каналу связи TCP. При таком типе связи и клиент, и сервер могут читать и писать на разъемах, привязанных к определенному каналу связи.

Класс Socket

Класс Socket играет важную роль в сетевом программировании, обеспечивая функционирование как клиента, так и сервера. Главным образом, вызовы методов этого класса выполняют необходимые проверки, связанные с безопасностью, в том числе проверяют разрешения системы безопасности, после чего они переправляются к аналогам этих методов в Windows Sockets API.

Прежде чем обращаться к примеру использования класса Socket, рассмотрим некоторые важные свойства и методы этого класса:

Свойства и методы класса Socket
Свойство или метод Описание
AddressFamily Дает семейство адресов сокета — значение из перечисления Socket.AddressFamily.
Available Возвращает объем доступных для чтения данных.
Blocking Дает или устанавливает значение, показывающее, находится ли сокет в блокирующем режиме.
Connected Возвращает значение, информирующее, соединен ли сокет с удаленным хостом.
LocalEndPoint Дает локальную конечную точку.
ProtocolType Дает тип протокола сокета.
RemoteEndPoint Дает удаленную конечную точку сокета.
SocketType Дает тип сокета.
Accept() Создает новый сокет для обработки входящего запроса на соединение.
Bind() Связывает сокет с локальной конечной точкой для ожидания входящих запросов на соединение.
Close() Заставляет сокет закрыться.
Connect() Устанавливает соединение с удаленным хостом.
GetSocketOption() Возвращает значение SocketOption.
IOControl() Устанавливает для сокета низкоуровневые режимы работы. Этот метод обеспечивает низкоуровневый доступ к лежащему в основе классу Socket.
Listen() Помещает сокет в режим прослушивания (ожидания). Этот метод предназначен только для серверных приложений.
Receive() Получает данные от соединенного сокета.
Poll() Определяет статус сокета.
Select() Проверяет статус одного или нескольких сокетов.
Send() Отправляет данные соединенному сокету.
SetSocketOption() Устанавливает опцию сокета.
Shutdown() Запрещает операции отправки и получения данных на сокете.

Как обозначаются и куда смотреть

Как определить и на что обращать внимание. Смотреть будете вы, рассказывать я

Под эти интерфейсы и будем дальше подбирать поддерживаемые материнские платы, в будущей статье.

Если не хочется во всем этом разбираться, то для вас, моя рекомендация по комплектующим с полной совместимостью. Проверено, подойдут 100%.

  • Для офисных и домашних задач без игр – камень Pentium Gold G5400 и мат. плата MSI H310M PRO-VD
  • Для домашних задач и с возможностью поиграть на средних настройках – Core i3-8100 и MSI H310M PRO-VD
  • Для игрового лучше посмотреть – Core i5-8400 и MSI H310M PRO-VD

Кстати, вы сами можете проверить их совместимость, тем самым протестируете свои новые знания. Вы верно заметили, что камни разные, а материнская плата одна и та же.

Какие микропроцессоры подходят под 1151 и под Ам3 поговорим в отдельных статьях.

До встречи в следующих интересных статьях. Пока.

Реализация коммуникации посредством TCP-сокетов в Java

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

Реализация серверного сокета

В приведенной выше программе сервер открывает сокет с порта 50001 на серверной машине и ожидает клиента на . После подключения клиента создается экземпляр выходного потока. Это может быть использовано для отправки данных с сервера на подключенный клиент. Именно это и делает . После отправки данных соединение с клиентом завершается.

Теперь давайте создадим клиент для взаимодействия с серверным сокетом, созданным выше.

Реализация клиентского сокета

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

Запуск программ

Сначала запустите серверную Java-программу, а затем клиентскую Java-программу (потому что сервер уже должен работать для подключения клиента). Вы увидите в терминале, где работает клиентская программа. Вот что здесь произошло: серверная программа отправила данные клиенту по запросу, а клиентская программа вывела их на терминал.

В этой статье мы обсудили, что такое сокеты и Java-реализация связи TCP-сокетов. 

Спасибо за чтение.

  • Кто на свете всех сильнее - Java, Go и Rust в сравнении
  • Java-Lombok: нужны ли геттеры и сеттеры?
  • Топ - 9 фреймворков Java в 2020 году

Перевод статьи Pavindu Lakshan: “Fundamentals of TCP Socket Programming in Java”

Как проверить совместимость с Socket LGA 1200

Перед приобретением процессора всегда нужно проверять его совместимость с материнской платой. Данное правило актуально и для сокета LGA 1200.

Самым надежный способ проверить совместимость процессора с материнской платой — это изучить информацию с официального сайта производителя платы. На сайте производителя всегда доступен список совместимых процессоров, а также прошивки BIOS, которые необходимы для работы этих чипов.

Что такое сокет. основные сокеты процессоров amd и intel

Так вы попадете на страницу вашей материнской платы. Здесь нужно перейти в раздел «Поддержка – Список поддерживаемых процессоров» (или «Support – CPU List», если сайт на английском).

Что такое сокет. основные сокеты процессоров amd и intel

На странице «Список поддерживаемых процессоров» будет доступен полный список всех процессоров, которые совместимы с вашей материнской платой.

Что такое сокет. основные сокеты процессоров amd и intel

Также здесь, рядом с процессором, будет указана и версия BIOS, которая нужна для работы данного чипа.

Как применить эти знания о совете процессора на материнской плате?

При обновлении старого компьютера

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

Открываем крышку компьютера, и ищем на системной плате надпись, указывающую на ее модель. Как правило она имеется, например на следующем изображении мы видим модель GA-870A-UD3 от производителя Gygabite.

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

В нашем примере это процессоры AMD Phenom II или AMD Athlon II с сокетом AM3 — идем в магазин и берем один из них.

Сборка компьютера с нуля

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

Если же речь идет о замене платы, то соответственно надо выбрать такую, чтобы она содержала идентичный сокет и поддерживала работу с данными процессорами.

Замена системы охлаждения

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

Сегодня на этом я статью завершаю, надуюсь, эта информация вам пригодится при выборе лучшего сокета на материнской плате для процессора! Ну а на закуску по традиции видео — как правильно установить процессор в сокет.

Не помогло

Сокеты Intel

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

Здесь есть положительная и отрицательная сторона ситуации. С одной стороны, это хорошо, так как увеличивается производительность CPU и практически под каждую модель создаётся свой специфический сокет. Но, с другой стороны, сделать апгрейд в таком случае очень сложно, так как новые процессоры имеют свои разъёмы, поэтому если их и менять, то делать это нужно вместе с материнской платой, что будет, не очень удобно, а главное, дорого.

Какие же модели можно рассматривать и чем они характеризуются?

  1. Socket LGA 2011. Модель прекрасно работает с различными процессорами на архитектуре Ivy Bridge от Intel (Core i3, i5, i7). Изначально сокет использовался в качестве маркетингового хода, чтобы встрясти положение на рынке, и повысить стоимость на процессоры для него. Это было в первое время, затем стоимость таких процессоров упала. Однако на материнках с этим сокетом это не отразилось и стоимость их так, и осталась высокой в отличие от вариантов, которые будут рассмотрены ниже.
  2. Socket LGA 1356, 1155, 1156. Эти модели применимы только для одной архитектуры Sandy Bridge 2, хоть и являются несовместимыми между собой. Наиболее эффективным оказалась модель 1155, которую использовали для большей части систем. Сокет 1366 был создан для мощнейших станций, который также отлично себя показал в работе.

  3. Socket LGA 775. В некоторых системах они всё ещё используются, однако, стоит отдать должное, они уже сильно устарели. Системы, в которых можно их увидеть: Celeron, Core 2 Quad и Duo.

Сокеты AMD

Этот производитель в своих решениях был более консервативен. Между многими сокетами есть совместимость, благодаря устроенным сериям «+». К примеру, сокет АМ3 будет совместимым с АМ3+, в результате для пользователей открываются большие возможности по апгрейду, что является хорошим преимуществом. Однако такое топтание непозволительно для IT-направления.

Некоторые модели сокетов от AMD.

  1. Socket АМ3 и АМ3+. По специфике эти две модификации являются совместимыми друг с другом. Такие сокеты отлично подойдут для некоторых моделей CPU: Phenom, FX и Athlon 2. Сокеты для мощных процессоров сначала не оправдали ожиданий, однако, после спада цен устроили пользователей ввиду низкой стоимости и хорошей производительности. Эти две модификации сейчас хорошо используются как среди дешёвых систем, так и дорогих, что доказывает хороший уровень практичности этих моделей.

  2. Socket АМ2 и АМ2+. Эти модели сейчас являются несколько устаревшими, однако, используются еще во многих системах. Разрабатывались они для CPU: Sempron, Phenom и Athlon.
  3. Socket FM1 и FM2. Изначально модификации создавались для процессоров из серии AMD Fusion, однако, впоследствии используются для тех, кто не хочет покупать дискретную карту, но желает иметь интегрированную графику.

Таким образом, мы кратко рассмотрели понятие сокета, а также указали его популярные модели для двух процессоров AMD и Intel.

Поделиться.

Сокет. Что и как?

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

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

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

Ну а сейчас, мы рассмотрим наиболее популярные сокеты процессоров от amd и intel, опуская сильно устаревшие версии по типу 370-ых сокетов для Pentium III и тому подобных.

Типы розеток

Ниже перечислены различные типы розеток:

Розетки датаграммы

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

Сырьевые розетки

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

Последовательные розетки пакетов Гнезда

Это похоже на сокет потока, за исключением того, что границы записи сохраняются. Этот тип сокета позволяет пользователям управлять протоколом последовательностей пакетов (SPP) или заголовками протокола интернет-протокола датаграмм (IDP) в пакете или даже группе пакетов. Этот сокет также позволяет пользователю получать заголовки входящих пакетов.

Розетки для ручьев

Этот тип сокета полагается на TCP для передачи данных. Если доставка данных невозможна, отправитель получит сообщение о том, что соединение привело к ошибке. Записи данных не имеют границ. Этот разъем обеспечивает ориентированный на подключение, последовательный и уникальный поток данных без границ записи, с четко определенными механизмами для создания и/или разрушения соединений и обнаружения ошибок. Он передает надежные данные в порядке и без использования внеполосных возможностей.
Предполагается, что процессы взаимодействуют только между розетками одного типа, но нет никаких ограничений, препятствующих взаимодействию между этими розетками разных типов.

Активное гнездо

Это разъемное соединение с активными удаленными разъемами через открытое соединение для передачи данных. Если это соединение будет закрыто, активные розетки в каждой точке также будут разрушены. Используется клиентами, которые хотят инициировать запросы на подключение для подключения. Однако, это активное гнездо также может быть преобразовано в пассивное гнездо путем привязки имени к гнезду с помощью bind-macro и путем указания готовности принимать соединения с микрофоном listen-macro.

Пассивная розетка

Эта розетка не подключена, а ждет входящего соединения, которое вызовет новую активную розетку. Используется серверами для того, чтобы принимать запросы на соединение с микрофоном Connect-macro. Эта пассивная розетка не может использоваться для инициирования запросов на подключение.
Понятия активных и пассивных сокетов для потоковых сокетов не применимы к другим типам сокетов, таким как сокеты датаграммы.

Порты и розетки

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

Термин «розетка» начал употребляться с 1971 года, когда он использовался при разработке ARPANET. Большинство розеток, реализуемых сегодня, основаны на розетках Беркерли, которые были разработаны в 1983 году. Однако розетки, используемые для подключения к Интернету, созданы по образцу моделей Winsock, которые были сделаны в 1991 году. Гнезда Беркерли также известны как гнезда BSD. В 1989 году Berkerley выпустила версии своей операционной системы и сетевой библиотеки, свободные от лицензионных ограничений. Другие ранние версии были написаны для TOPS-20, MVS, VM и IBM-DOS.