Я изучаю концепцию сокета. Насколько я узнал, сокет похож на электрическую розетку, которая создается на обоих концах взаимодействующих устройств (или процессов). Сокет может поддерживать себя вечно, чтобы прослушать какой-либо запрос (это может быть ключевой концепцией для создания любой серверной программы).
Однако мой любопытный разум хочет знать, можно ли общаться между двумя компьютерами без создания какого-либо сокета ( дескриптор файла)?
Пожалуйста, помогите с подробным описанием, я новичок в этой области.
Заранее спасибо!
Сокет - это только стандартизованный интерфейс программирования. Теоретически можно работать напрямую с сетевой картой (и библиотеки, подобные DPDK, делают это), но использование API сокетов делает это намного проще и независимым от конкретного оборудования и настроек сети.
Для получения пакетов любым компьютером с картой NIC требуется только адрес назначения Mac уровня 2. Следовательно Действительно ли возможно отправить некоторые данные в удаленный пункт назначения через tcp/ip без какого-либо сокета?
[Ответ] да, отправьте пакет с MAC-адресом назначения в качестве желаемого MAC-адреса компьютера. Пакет будет получен на сетевом адаптере без потери. Это верно, если удаленный пункт назначения является той же локальной сетью или может быть достигнут через группу VLAN или одноранговое соединение.
Примечание: если вопрос был Возможно ли на самом деле отправить некоторые данные в удаленный пункт назначения (не в той же сети LAN) через tcp/ip без какого-либо сокета?
[Ответ] Нет, если пункт назначения (удаленный объект) не находится в вашей сети, вы не сможете связаться с целевым компьютером, используя только MAC-адрес и/или VLAN.
есть 2 варианта
примечание: DPDK, PF_RING, Netmap, XDP — это механизмы обхода стека ядра. Используя обход ядра, вы получаете или передаете пакеты от сетевой карты.Но это будет зависеть от фактического значения L2/L3, где сетевой коммутатор или маршрутизатор будет отправлять или пересылать пакеты в сети