104

Правда ли, что TCP - это сокращение от TCP/IP, и они означают одно и то же?

Возможно ли, чтобы TCP был построен поверх другого протокола, кроме IP?

14 ответов14

88

Я не прочитал весь RFC, но язык в разделе 1.4, кажется, предлагает использовать любой протокол "более низкого уровня".

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

77

Интернет-протокол

TCP не является коротким для TCP/IP.

TCP/IP часто используется в качестве краткого обозначения « Пакет интернет-протоколов » и обычно включает другие стандартные протоколы. Когда люди говорят TCP/IP, они обычно включают UDP поверх IP (в котором вместо TCP используется UDP) и множество других протоколов, таких как ARP, ICMP, DNS, SNMP и другие протоколы прикладного уровня.

Уровень приложений

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

Транспортный уровень

TCP и UDP - это два протокола транспортного уровня, используемые в Internet Protocol Suite. Если есть другие, которых я не знаю, и любые другие будут представлять собой исчезающе маленького специалиста. Были определены другие протоколы транспортного уровня - их использование, вероятно, представляет лишь небольшую долю глобального IP-трафика

Межсетевой уровень

Хотя теоретически можно использовать TCP поверх чего-то другого, чем IP, на практике TCP всегда используется поверх IP - интернет-протокола. IP перемещает пакеты между сетями (представьте, что IP соединяет несколько локальных сетей)

Уровень сетевого интерфейса

Ethernet - это просто самое популярное семейство низкоуровневых протоколов канального уровня, по которым передается TCP/IP, но TCP/IP также широко используется через ATM и другие.

Диаграмма IP-уровня от bootdiscs.net


Приложение 1 - Примечание по протоколам транспортного уровня

Единственными протоколами транспортного уровня, которые широко используются в сетях, использующих Internet Protocol Suite, являются TCP и UDP.

† Ради интереса я измерил трафик в моей (очень) маленькой локальной сети, которая включает в себя NetBIOS (через TCP), SSH, Rsync, электронную почту, обновления программного обеспечения, DNS, общие сообщения Windows-box и некоторые другие виды трафика. Статистика иерархии протокола Wirshark

Обратите внимание также на это заявление в FAQ по Google для их протокола QUIC

Почему вы не создали полностью новый протокол, а не использовали UDP? Средние блоки в Интернете сегодня обычно блокируют трафик, если это не TCP или UDP-трафик

(мой акцент)

34

Причина, по которой TCP/IP является такой распространенной аббревиатурой (в противоположность, скажем, UDP/IP или SCTP/IP), заключается в том, что два протокола были разработаны вместе, и в оригинальной статье Винта Серфа и Боба Кан эти две концепции были объединены в единый протокол. Вскоре после этого они были разделены на IP для обеспечения маршрутизации и TCP для обеспечения управления потоком, мультиплексирования, обнаружения ошибок и т.д. Только спустя шесть лет был введен UDP для обеспечения "легкого" уровня мультиплексирования без остальной части накладные расходы, связанные с TCP.

Тем не менее, TCP и IP - это две разные вещи, полностью и намеренно независимые. Тот факт, что TCP не требует IP, сразу становится очевидным, поскольку TCP может работать без изменений как на IPv4, так и на IPv6, которые являются двумя совершенно разными протоколами.

Немного поработав, вы могли бы создать конкурирующий протокол для IP, который бы служил тем же целям, но он, вероятно, должен был бы содержать большинство, если не все одинаковые функции, и, вероятно, в конечном итоге выглядел бы во многом как IP. Вы можете утверждать, что расширения IP (такие как IPSec) фактически являются альтернативными протоколами уровня 3, так что все готово.

22

Вы можете заменить IP чем-то другим. Фактически, это именно то, что вы делаете, когда используете TCP через IPv6. TCP все еще TCP, но IP v6 вместо v4.

AFAIK, никто не создавал никаких других протоколов уровня 3 для работы с TCP над ними, но нет никаких причин, по которым вы не могли.

13

TCP и IP (v4 и v6) однозначно разделяются, и одно не подразумевает другого, что доказано на примере TCP через IPX (RFC 1791).

Однако TCP не может быть построен только на любом сетевом протоколе. Две причины:

  1. В заголовке TCP нет поля размера сегмента (только смещение данных, которое дает размер заголовка TCP). Поэтому TCP будет работать только с протоколом нижнего уровня, который содержит достаточно информации для расчета размера сегмента TCP (т. Е. Размера полезной нагрузки протокола нижнего уровня). Это предположение верно для IPv4 (RFC 791), IPv6 (RFC 2460) и IPX (RFC 1791). Но в целом это не так, например, не для авианосцев (RFC 1149) (см. Примечание а).
  2. TCP предназначен только для работы по сетевому протоколу без установления соединения. TCP эффективно не работает с определенными сетевыми протоколами, ориентированными на установление соединения (например, служба постоянной битовой скорости ATM), потому что две функции контроля скорости передачи приводят к очень низкой или непредсказуемой производительности. Другой вырожденный пример - TCP через TCP-туннель.

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

Примечание а) Для TCP для повторной сборки дейтаграмм, напечатанных на маленьких листах бумаги (независимо от того, переносятся ли они голубями или более интеллектуальной сетью), размер полезной нагрузки должен быть записан в стандартном месте. В качестве альтернативы, уровень адаптации может эвристически определять размер сегмента. Оптический сканер, использованный при реализации стека хостов спецификаций птичьих носителей (RFC 1149), включал такой эвристический адаптационный слой, но он остается недокументированным.

9

TCP и IP подобны маслу над хлебом.

Вы можете соединить все, что работает с любым протоколом, но эти два настолько дополняют друг друга, что это просто вкусный надежный способ передачи данных и наполнения живота данными из Интернета. Он смазывает трубку, чтобы позволить другим сухим продуктам и рукопожатию данных поддерживать это соединение. Но это никоим образом не является эксклюзивным.

В. Однако нельзя ли построить TCP поверх другого протокола, кроме IP?

Да это возможно. Мне нравятся азбуки Морзе и Pigeon без TCP.

6

Я всегда слышал, что TCP это сокращение от TCP/IP

На самом деле это означает протокол управления передачей по интернет-протоколу

и они имеют в виду одно и то же.

Это не правильно.

Во-первых, Ethernet - это низкоуровневая аппаратная система, которая контролирует работу реальных аппаратных компонентов.

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

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

В совокупности TCP/IP обеспечивает систему надежной передачи данных на любые два подключенных устройства.

В Интернете, когда вы хотите отправлять или получать данные, IP-часть системы - это та часть, которая управляет установлением реальных аппаратных соединений с помощью проводов (или беспроводных волн). Часть системы TCP - это программное обеспечение, которое отвечает за сбор и разбивку данных, их отправку, повторную сборку полученных данных, проверку и повторную отправку данных, если это необходимо.

Существует множество объяснений с аналогиями и техническими подробностями, особенно в виде видео. У DifferenceBetween.net есть особенно хороший об этом точном предмете.

Однако не возможно ли, чтобы TCP был построен поверх другого протокола, кроме IP?

Да, вы действительно можете создать альтернативную систему TCP, которая использует IP. Посмотрите на Internet Protocol Suite для некоторых деталей.

5

TCP является протоколом уровня 4. Он обеспечивает гарантированную передачу данных в виде упорядоченного потока от одного процесса на компьютере к другому процессу на том же / другом компьютере.

IP является протоколом уровня 3. Он обеспечивает перевозку от одного хозяина к другому.

Пока существует протокол, который может передавать данные между хостами, TCP будет работать.

Итак, TCP может быть реализован по любому протоколу, но мы сделали только IP. IP прост и делает свою работу.

Нет необходимости в другом протоколе уровня 3.

3

Когда вы проектируете сеть, вы должны выбрать набор протоколов (которые в основном представляют собой наборы правил связи между машинами) для каждого из различных "уровней" (которые вы можете представить как различные уровни абстракции, которые сетевые дизайнеры любят имейте ввиду при создании и объединении протоколов).

Более простая версия: протоколы похожи на коробки, в которые мы помещаем наши сообщения. Эти блоки имеют разные размеры, и вы помещаете ваше сообщение в наименьший блок, затем наименьший блок в блоке, который немного больше, и т.д. Выбор набора протоколов - это выбор типа блоков, которые вы будете использовать, для каждого " слой ", который окружает ваше сообщение.

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

Причина, по которой протокол TCP/IP является таким распространенным сокращением, заключается в том, что эти два протокола вместе составили основу Интернета и стали ключом к его успеху.

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

2

Я думаю, что можно запустить TCP через транспорт IPX, если вы хотите пойти ретро.

2

Ответ - нет! Например, есть старый RFC, описывающий TCP через IPX: http://tools.ietf.org/html/rfc1791

Для тех, у кого короткая память, IPX был протоколом Novell Netware: http://en.wikipedia.org/wiki/Internetwork_Packet_Exchange

2

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

Таким образом, вы реализовали TCP поверх UDP (преимущество: вы используете один порт на стороне "сервера" или можете встроить его в существующее соединение, передающее различные мультиплексированные каналы). Только IP-уровень обеспечивает маршрутизацию, но TCP не нуждается в этом. Все, что имеет значение, так это то, что концепция MTU предоставляется нижним уровнем.

Это позволяет протоколу обойти ограничения обхода NAT, не требуя регистрации порта трансляции UPnP для конкретного хоста. Это позволяет выполнять независимую настройку MTU и MSS, оптимизированную для каждого клиента, а не для каждого промежуточного общего маршрутизатора. Возможны другие протоколы маршрутизации (в том числе для доставки через многоадресные и широковещательные сети). И у вас есть выбор механизмов безопасности.

Примером использования является Gogo6.net (который реализует свой транспортный канал IPv6 через сеанс TCP с использованием переопределения TCP через UDP v4)(он работает на большинстве домашних маршрутизаторов доступа, которые все еще имеют только адрес IPv4, и не всегда поддерживает метод UPnP без необходимости настраивать его пользователями, использующими постоянный номер порта, специфичный для приложения, даже если он не запущен)

Другими примерами является инкапсуляция TCP через HTTP (или HTTPS) версии 1.1 с собственным расширением "потоковой передачи". Большинство VPN, которые позволяют соединять сети через Интернет, будут делать то же самое. Мост может даже инкапсулировать несколько протоколов: Ethernet, PPP, IPv4 и IPv6 (только расширение локальной сети или сегмента Ethernet), NetBEUI/LanMan, обнаружение маршрутизатора (в сети с мостовыми соединениями), в том числе в режиме raw (с поддержкой DHCPv4 или DHCPv6) в мостовая сеть. HTTPS используется потому, что инкапсуляция по HTTPS позволяет также шифровать и аутентифицировать для установления и защиты моста, но не требует сквозной аутентификации / шифрования для клиентов и серверов в сети с мостовыми соединениями, а также потому, что маршрутизаторы высоко оптимизированы для HTTP и HTTPS.

2

Однако не возможно ли, чтобы TCP был построен поверх другого протокола, кроме IP?

Помимо классических TCP/IPv4 и TCP/IPv6 было разработано несколько экспериментальных протоколов, например:

Почти TCP через UDP (atou)

В рамках наших усилий Net100 и Probe по улучшению массовых передач по высокоскоростным сетям с высокой задержкой мы разработали инструментальную и настраиваемую версию TCP, работающую по протоколу UDP. TCP-подобный UDP-транспорт служит средством для тестирования экспериментов с TCP-подобными элементами управления на уровне приложений, аналогичном TReno.

И iproxy: запуск служб TCP через UDP, что более интересно:

iproxy включает в себя прокси на стороне клиента и прокси на стороне сервера, которые позволяют произвольным службам TCP/IP работать по широковещательному, многоадресному или одноадресному UDP. Первоначально он был задуман как метод настройки серверов, которым не был присвоен IP-адрес в локальной сети, с использованием веб-интерфейса.

Итак, вы видите: TCP для одноадресного UDP и даже TCP для широковещательного или многоадресного UDP !

AFAIK только TCP/IPv4 и TCP/IPv6 пользуются большим развертыванием.

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .