Как работают протоколы TCP/IP? Если совсем по-простому
Недавно я решил погрузиться в веб-разработку: хочу узнать о том, как работают интернет и сети, различные протоколы, веб-доступность, HTML, CSS, JavaScript, а также другие базовые инструменты, на которых сегодня работают совершенно все сайты в интернете. Эти знания помогут мне в своих личных проектах и работе.
Чтобы усвоенное закреплялось лучше, я решил писать конспекты в своём блоге. Возможно, эти небольшие шпаргалки помогут не только мне, но и другим начинающим разработчикам. Тексты пишу как сам, так и прибегая к чатам GPT (там, где требуются простые сухие определения либо код).
Начинаем с базы: TCP/IP.
База TCP/IP
Протоколы TCP/IP — это основа интернета, которая позволяет компьютерам и другим устройствам обмениваться данными. Давайте разберем это на простом примере.
Представьте себе почтовую службу.
- IP (Internet Protocol) — это как адрес на конверте. Он указывает, куда нужно доставить данные. Каждый компьютер в сети имеет уникальный IP-адрес, как дом имеет свой почтовый адрес.
- TCP (Transmission Control Protocol) — это как почтальон, который следит за тем, чтобы письмо дошло до адресата. Он разбивает данные на маленькие кусочки (пакеты), отправляет их и проверяет, что все пакеты дошли в правильном порядке и без ошибок.
И как это работает вместе?
- Отправка данных — когда вы отправляете данные (например, сообщение или файл), TCP разбивает их на пакеты и нумерует их.
- Маршрутизация — IP отвечает за то, чтобы каждый пакет нашел правильный путь к получателю, даже если они идут разными маршрутами.
- Получение данных — на стороне получателя TCP собирает пакеты обратно в исходное сообщение и проверяет, что все пакеты на месте и в правильном порядке.
Представьте, что вы отправляете письмо другу. Вы пишете письмо (данные), кладете его в конверт и пишете адрес (IP). Почтальон (TCP) берет конверт, проверяет адрес и доставляет его вашему другу. Если письмо потеряется, почтальон попросит вас отправить его снова.
Пример простейшего TCP-соединения
Ниже представлен листинг простейшего TCP-соединения на Python. Этот код включает сервер и клиент, которые могут обмениваться сообщениями.
Код сервера:
import socket
# Настройки сервера
HOST = '127.0.0.1' # Локальный хост
PORT = 65432 # Порт для прослушивания
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print(f"Сервер запущен на {HOST}:{PORT}")
conn, addr = s.accept()
with conn:
print(f"Подключение от {addr}")
while True:
data = conn.recv(1024)
if not data:
break
print(f"Получено: {data.decode()}")
conn.sendall(data)
Код клиента:
import socket
# Настройки клиента
HOST = '127.0.0.1' # Серверный хост
PORT = 65432 # Порт сервера
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Привет, сервер!')
data = s.recv(1024)
print(f"Получено от сервера: {data.decode()}")
Как работает этот код?
- Сервер — создает сокет, привязывает его к адресу и порту, и начинает слушать входящие соединения.
- Клиент — создает сокет и подключается к серверу.
- Обмен сообщениями — клиент отправляет сообщение серверу, сервер получает его и отправляет ответ.
Дополнительный материал для изучения темы:
✺ TCP — Википедия
✺ Что такое TCP/IP и как работает этот протокол
✺ Что такое TCP/IP — как работает, как настроить на Windows, MacOS
✺ Что такое TCP/IP: Объясняем на пальцах — видео
✺ TCP/IP: что это и зачем нужно — видео
✺ Стек протоколов TCP/IP. Особенности технологии и многоуровневая модель — видео
✺ Как настроить протокол TCP/IP: пошаговая инструкция для начинающих
✺ Протоколы семейства TCP/IP. Теория и практика / Хабр
✺ TCP: Transmission Control Protocol
✺ Модель TCP/IP: что такое уровни и протоколы? Стек TCP/IP