Ответ
В своей работе я сталкивался с протоколами разных уровней стека TCP/IP:
Транспортный уровень:
- TCP (Transmission Control Protocol) — надежный, с установкой соединения, гарантией доставки и порядком пакетов. Используется для HTTP, SSH, SMTP.
- UDP (User Datagram Protocol) — ненадежный, без установки соединения. Быстрее, но без гарантий. Используется для DNS, VoIP, видеотрансляций.
Прикладной уровень:
- HTTP/HTTPS — основа веба. HTTPS — это HTTP поверх TLS/SSL для шифрования.
- WebSocket — протокол для полноценного двустороннего обмена данными поверх TCP, используется в real-time приложениях (чаты, уведомления).
- SSH (Secure Shell) — для безопасного удаленного управления и передачи файлов (SFTP).
- SMTP/POP3/IMAP — для отправки и получения электронной почты.
- DNS (Domain Name System) — протокол для преобразования доменных имен в IP-адреса.
- FTP (File Transfer Protocol) — для передачи файлов. SFTP (SSH File Transfer Protocol) — его безопасная версия.
Пример использования сокетов для TCP-клиента на Python:
import socket
# Создание TCP-сокета
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Установка соединения
client_socket.connect(('example.com', 80))
# Отправка HTTP-запроса
request = "GET / HTTP/1.1rnHost: example.comrnrn"
client_socket.send(request.encode())
# Получение ответа
response = client_socket.recv(4096)
print(response.decode())
client_socket.close()
Ключевое различие на практике: выбор между TCP и UDP определяется требованиями приложения: нужна ли надежность (TCP) или минимальная задержка (UDP).