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

«Какая основная сущность создается в операционной системе для сетевого взаимодействия?» — вопрос из категории Операционные системы, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для сетевого взаимодействия операционная система создает сокет (socket).

Сокет — это программный интерфейс (API), который представляет собой конечную точку для отправки и получения данных между процессами по сети. Он абстрагирует детали работы сетевых протоколов, таких как TCP/IP.

Ключевые характеристики сокета:

  1. Идентификация: Сокет уникально идентифицируется комбинацией IP-адреса и номера порта.
  2. Типы:
    • Потоковые сокеты (SOCK_STREAM): Используют протокол TCP, обеспечивая надежную, упорядоченную доставку данных с установлением соединения.
    • Датаграммные сокеты (SOCK_DGRAM): Используют протокол UDP, который отправляет независимые пакеты (датаграммы) без гарантии доставки.
  3. Абстракция: ОС берет на себя управление низкоуровневыми задачами: фрагментация данных на пакеты, маршрутизация, обработка ошибок и управление буферами.

Пример создания TCP-сокета на Python:

import socket

# 1. Создание сокета (семейство адресов IPv4, потоковый тип TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    # 2. Подключение к удаленному хосту и порту
    s.connect(("example.com", 80))
    print("Соединение установлено.")

    # 3. Отправка данных (HTTP GET запрос)
    request = b"GET / HTTP/1.1rnHost: example.comrnConnection: closernrn"
    s.sendall(request)

    # 4. Получение ответа
    response = s.recv(4096)
    print(response.decode('utf-8'))

finally:
    # 5. Закрытие сокета
    s.close()