Назад | Перейти на главную страницу

Как IP-адрес переходит с уровня приложения на уровень IP?

Используя классическую модель слоев TCP / IP, я думаю о приложении (например, браузере), действующем в качестве клиента, желающего общаться с сервером (например, веб-сервером). Конечно, он должен использовать IP-адрес сервера для поиска хоста сервера в Интернете. Итак, мой процесс прикладного уровня (браузер) знает IP-адрес пункта назначения (например, он получил его из DNS-запроса).

Для обработки этого запроса браузер передает его на транспортный уровень, а точнее - на процесс TCP. Моя проблема в том, что в сегменте TCP нет поля для IP-адресов, ни места назначения, ни источника. Процессы транспортного уровня используют порт как способ адресации источника и назначения. Когда сегмент передается на нижележащий уровень и становится IP-пакетом, здесь снова возвращаются IP-адреса (как пункта назначения, так и источника). Это кажется волшебным!

Этот IP-адрес, исчезающий и появляющийся на два уровня ниже, - это именно то, что я пытаюсь понять. Есть ли какое-то нарушение структуры уровней, которое позволяет этой информации просачиваться через уровень TCP? Или я не понимаю чего-то очень важного?

Вы усложняете простые вещи в своем воображении.

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

Если вам нравятся приключения, вы все равно можете создать программу с использованием сырых сокетов и самостоятельно управлять всем стеком от уровня 2 до уровня 7. Например, программы сниффинга / внедрения пакетов используют такие сокеты для записи / изменения соответствующих полей на желаемых уровнях в зависимости от параметров, переданных программе.

Например. с участием упаковывать вы можете изменить поля уровня 2, такие как MAC-адреса источника / назначения, чтобы провести некоторые эксперименты в вашей сети (например, подделать MAC-адрес другого хоста, чтобы обойти фильтрацию MAC-адресов при отправке данных по протоколу с использованием UDP на уровне 4).