Что TCP / UDP добавляет к «raw ip»?

18

Я знаю, что TCP и UDP созданы поверх IP, и я знаю различия между TCP и UDP, но я не совсем понимаю, что такое «сырой ip». Было бы справедливо сказать, что TCP и UDP реализуют IP, но сам по себе IP не способен передавать данные? Или IP является какой-то формой связи очень низкого уровня, которая далее абстрагируется TCP и UDP?

Джон Дориан
источник
2
Чтобы продолжить некоторые из комментариев ниже (недостаточно для полного ответа, просто для ясности): IP - это протокол, который транспортирует данные. TCP или UDP - это протоколы, которые также транспортируют данные. TCP и UDP часто располагаются поверх IP, поэтому для IP это может быть TCP или UDP. Ethernet часто используется для передачи IP. Так, например, кадр Ethernet может нести и IP-пакет в качестве полезной нагрузки данных, а этот IP-пакет может содержать сегмент TCP в качестве полезной нагрузки и так далее. В итоге вы получите
jwbensley
3
IP, безусловно, передает данные - например, он переносит эти пакеты TCP / UDP. Тем не менее, он обычно не предназначен для использования в приложениях. UDP - это очень простой протокол поверх IP, но он уже добавляет номера портов , позволяя нескольким службам одновременно обрабатывать трафик UDP в системе. В противном случае у вас будет только столько служб, сколько у вас IP-адресов.
Luaan

Ответы:

23

IP является протоколом уровня 3 . TCP / UDP являются протоколами уровня 4 . Каждый из них служит разным целям.

Уровень 3 отвечает за сквозную доставку . Его единственной функцией является добавление к пакету всего, что необходимо для передачи пакета с одного хоста на другой.

Уровень 4 отвечает за доставку между сервисами . Его единственная функция - разделять потоки данных. На вашем компьютере может быть запущено несколько программ, каждая из которых отправляет / получает биты на провод. IE: у вас может быть несколько запущенных вкладок браузера, потоковое интернет-радио, загрузка, запуск некоторых законных торрентов, использование приложения чата и т. Д. Все они получают 1 и 0 по проводам, а уровень 4 разделяет каждый поток данных на уникальное приложение, которое нуждается в них. Вот иллюстрация:

L4, разделяющий потоки данных

IP не может доставить пакет в нужную службу / приложение. И TCP / UDP не может доставить пакет с одного конца интернета на другой.

И TCP, и IP работают вместе, что позволяет им достичь «конечной цели» интернет-коммуникации.

Данные, которые необходимо получить с одного хоста на другой, генерируются верхними уровнями модели OSI.

Эти данные передаются в L4, который добавляет информацию, необходимую для доставки данных из сервиса в сервис, например, заголовок TCP с портом источника и назначения. Данные и заголовок L4 теперь называются сегментом.

Затем Сегмент будет передан в L3, который будет добавлять информацию, необходимую для доставки сегмента от конца к концу, как IP-заголовок с IP-адресом источника и получателя. Заголовок L3 и сегмент теперь могут называться пакетом.

Этот процесс известен как инкапсуляция и де-инкапсуляция (или иногда декапсуляция). Вот анимация того, как это работает:

Инкапсуляция и де-инкапсуляция, используемые с разрешения Practical Networking.net

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

Эдди
источник
7
Обратите внимание, что Интернет лишь слабо следует модели OSI.
user253751
2
inside an IP header is usually a TCP or UDP headerневерно, заголовок TCP / UDP находится не внутри заголовка IP, а внутри части данных пакета IP.
Eborbob
«Его единственная функция - разделять потоки данных», в то время как это в основном верно для UDP (есть также контрольная сумма, но не ме), это, безусловно, не так для TCP.
Питер Грин
1
@immibis Верно, но мне еще предстоит увидеть, где следование модели OSI привело к неэффективной реализации или пониманию пародии. По большей части, и особенно для кого-то, кто недавно приближается к интернет-технологиям, более ценно продолжать размышлять над ограничениями модели OSI.
Эдди
@Eborbob Я вижу, как это неправильно, в зависимости от того, как смотреть на предложение. Честно говоря, весь этот абзац может использовать новое слово, я попытаюсь найти его позже сегодня вечером. Спасибо за указание на это.
Эдди
6

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

Программы могут использовать IP напрямую через так называемые «необработанные сокеты», но отсутствие надлежащего механизма для принятия решения, в какой сокет отправлять данные, вызывает проблемы с безопасностью и производительностью (ядро должно отправлять данные во все необработанные сокеты для данного номера протокола). По этой причине возможность открывать «сырые сокеты» обычно ограничена root (или эквивалентной платформой).

UDP является довольно минимальным уровнем над IP. Он добавляет номера портов, чтобы определить, для какого сокета используются данные, и контрольную сумму (для отклонения поврежденных пакетов). Приложение остается ответственным за работу с потерянными пакетами, управление перегрузкой и разбиение данных на пакеты соответствующего размера.

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

Питер Грин
источник
4

IP - это протокол уровня 3 OSI, а TCP и UDP - протоколы уровня 4 OSI. Как протокол уровня 3, IP может нести много различных протоколов уровня 4. TCP и UDP, вероятно, являются наиболее распространенными, но они не единственные. Протоколы уровня 4 - это то, что приложения используют в качестве сквозных соединений. Протокол IP передает протоколы уровня 4 из сети в сеть (хост-хост). Протоколы уровня 2, такие как Ethernet, протоколы транспортного уровня 3 в локальной сети.

Вы должны исследовать модель OSI, но понимать, что это концептуальная модель, и реальный мир часто не совсем совпадает.

Рон Мопин
источник