Должен ли TCP использовать IP?


108

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

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


31
Почему нет? Я мог бы видеть TCP по Морзе один раз.
Soandos

2
Примером может служить туннель ICMP, который использует TCP поверх ICMP. Но это правда, что это не обычное построение TCP поверх всего, что не IP. Обычно это уровень доступа к сети, в котором используется более широкий диапазон протоколов и каналов (например, барабаны бонго).
Мистер Смит

1
@ TomWijsman Пробовал не удалось? Из того, что я понимаю, любая проблема, с которой они сталкивались, связана с решением проблем и функциональной совместимости, а не с тем, чтобы заставить TCP работать.
Tylerl

2
@harper С обычным азбукой Морзе 200 символов в минуту, безусловно, не являются неслыханными для опытных операторов, и 100 с / мин (20 wpm) определенно достижимы для большинства людей с достаточной практикой. Конечно, на таких скоростях вы на самом деле не слышите каждого отдельного персонажа, а скорее слышите слова. (Говорят, что отличительной чертой опытного оператора является то, что он помнит разговор, но не слова, которые использовались.) Однако я мог бы предположить, что символы 100 с / мин, разнесенные до общей скорости 50-60 с / мин, были бы выполнимы с пренебрежимо малое количество ошибок символов.
CVn

2
@harper Это зависит от вашего уровня точности. Для в основном болтовни (жевание тряпки, на любительском радио говорят) неправильно найти слово здесь и там - это не проблема, потому что контекст важнее, чем используемые слова. Для передачи телеграмм, сообщений о чрезвычайных ситуациях / бедствиях и т. Д., Особенно если текст зашифрован, каждое слово и каждый символ должны быть (не только получены, но и) скопированы правильно (и разборчиво). Обратите внимание, что я сказал, что 200 с / мин это "не неслыханно"; не банально. Однако 100 об / мин довольно распространено на любительских радиодиапазонах.
CVn

Ответы:


16

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 ), включал такой эвристический адаптационный слой, но он остается недокументированным.


2
Технически точный (насколько я могу судить), тщательный, подкрепленный ссылками, ясный и беззаботный. Я бы дал этому горстку голосов, что мог.
Скотт

2
Птичий пример - ясный и веселый!
Джон

88

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

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


101
Сам IP был реализован во многих сетевых технологиях, даже среди почтовых голубей . Птицы фактически использовались для демонстрации доставки пакетов ICMP Ping с потерей пакетов 55% (очевидно, из-за ошибки оператора) и задержками в пределах от одного до двух часов. Кроме того, можно было бы запустить TCP, но для настройки соединения потребовалось бы много птиц ....
RBerteig

21
О комментарии Р.Бертейга; рассмотрим почтового голубя с картой mini-SDHC. Есть разница между задержкой и пропускной способностью. :-)
CVn

16
@ MichaelKjörling Это не будет взаимодействовать с RFC 1149: «дейтаграмма IP напечатана на небольшом листе бумаги».
кмкаплан

4
@kmkaplan Если датаграмма не была напечатана на этикетке SDHC-карты. Это как клише из нескольких фильмов - «О, это на самом деле на жестком диске!»
Джон Ханна

40
Пришлось бы иметь несколько серьёзно больших дыр в брандмауэре, чтобы пропускать авианосцев.
squillman

76

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

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-трафик

(мой акцент)


1
Вернул меня обратно в 1996 год и к модели OSI. Ru.wikipedia.org/wiki/OSI_model
Руди

Существует более двух протоколов транспортного уровня: en.wikipedia.org/wiki/Transport_layer#Protocols
Стюарт Блэклер,

@StuartBlackler: Интересный момент, спасибо. Существуют ли какие-либо (кроме TCP и UDP), которые не попадают в категорию, которую я назвал «исчезающе маленьким специалистом», и которые используются по IP? Если бы я измерял IP-трафик в точке обмена Интернет-трафиком , какая доля протоколов транспортного уровня была бы чем-то иным, кроме TCP или UDP?
RedGrittyBrick

Возьмите, например, DCCP, это все еще новый протокол, но я думаю, что в следующие несколько лет вы увидите, что другие приложения будут использовать этот протокол. Причина, по которой я пока не думаю, что это мейнстрим, заключается в том, что я не верю, что в Windows его поддерживают Думайте об этом как о UDP с контролем перегрузки. Может быть очень удобно для многих приложений, таких как Skype и игры :) Посмотрите на это. Чтобы ответить на ваш вопрос, это, вероятно, очень небольшая сумма на данный момент
Стюарт Блэклер

@ Руди, ты должен понимать, что это не эталонная модель OSI, и если ты это понимаешь, то не вводи людей в заблуждение, думая, что это так. Это модель / архитектура TCP / IP ... Иногда архитектура TCP / IP описывается с помощью терминологии OSI, эталонной модели OSI. Но 4 уровня, показанные с этими именами, очень похожи на TCP / IP, а не на OSI. Нет проблем с публикацией Red, но ваш комментарий в лучшем случае вводит в заблуждение.
barlop

34

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

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

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


1
Правильно - первая версия TCP включала функциональность IP. Возможно, еще одна причина, по которой люди говорят «TCP / IP», заключается в том, что в большинстве случаев, когда вы отправляете данные по IP, вы хотите гарантировать, что все они будут доставлены и в правильном порядке, поэтому вы используете TCP. Например, весь трафик HTTP и FTP использует TCP. Одна категория исключений - данные в реальном времени; Skype, например, использует UDP, потому что вы предпочли бы получить последний пакет в разговоре, чем остановить все, чтобы получить тот, который вы пропустили.
Натан Лонг

21

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

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


9

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

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

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

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


5

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

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

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

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

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

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

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

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

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

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

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

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


13
Немного вводит в заблуждение тот факт, что IP обеспечивает «соединение» двух точек вместе. IP обеспечивает способ отправки отдельных отдельных пакетов с одного компьютера на другой; каждый пакет не зависит от всех остальных. TCP обеспечивает иллюзию непрерывного соединения , которое на самом деле представляет собой последовательность пакетов, отправляемых по IP.
Wyzard

4
IP не связан ни с аппаратной, ни с физической сигнализацией. Это обрабатывается технологиями более низкого уровня, например, Ethernet.
Wyzard

9
В этом ответе много неправильного, и он полностью пропускает вопрос. Во-первых, Ethernet - это всего лишь один протокол канального уровня, который используется для передачи IP. Есть много других, и IP не знает и не заботится о них. IP не имеет ничего общего с оборудованием; это уровень маршрутизации между сетями над аппаратным обеспечением, используемым для их соединения. Суть вопроса состояла в том, можете ли вы использовать TCP на чем-то отличном от IP, а не в том, можете ли вы использовать что-то кроме TCP, который использует IP (пример см. В UDP).
Псуси

3
@synetech, вопрос был не "можно ли что-то еще использовать в IP". Это было «можно ли использовать TCP на чем-то другом», т.е. без IP.
Wyzard

2
> the fact that !TCP can go over IP does not necessarily mean TCP can go over !IP Huh?Псуси пытается быть умным, используя "!" как "не оператор". Его комментарий следует читать следующим образом: «тот факт, что что-то, что не является TCP, может передаваться по IP, не обязательно означает, что TCP может переходить по чему-то, что не является IP». Это сделано со ссылкой на последнее предложение вашего ответа, в котором показано существование «Альтернативных систем TCP». Однако показ того, что альтернативы TCP существуют, не обязательно подразумевает и не указывает на существование альтернатив IP.
Ли Райан

5

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

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

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

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

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


1
А как насчет IPv6?
любопытный парень

1
А как насчет IPv6? Это просто IP. Там интерфейс отправки и получения пакета остается прежним. Таким образом, TCP может использовать ту же функцию. ОС может просто заменить указатель на функцию из IPv4 и IPv6, и он все равно будет работать. Я не уверен, что вы говорите здесь?
Сурен Нихалани

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

Вы также можете притвориться, что UDP - это тот же протокол, что и IP , потому что они предлагают очень похожие интерфейсы для верхних уровней: задайте адреса локальной и удаленной конечной точки, отправляйте и получайте пакеты ...
curiousguy

3

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

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

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

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

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


2

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


1
Вы, вероятно, думаете о том, когда IPX был туннелирован по TCP / IP. Что неудивительно, что длилось недолго.
andygavin


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 пользуются большим развертыванием.


Да, но это UDP по IP; Я вижу, что ты там делал ...
Тамара Вийсман

@ TomWijsman Да, это TCP / UDP / IP.
любопытный парень

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, обнаружение маршрутизатора (в мостовой сети), в том числе в необработанном режиме (с использованием DHCPv4 или DHCPv6) в мостовая сеть. HTTPS используется потому, что инкапсуляция по HTTPS позволяет также шифровать и аутентифицировать для установления и обеспечения безопасности моста, но не требует сквозной аутентификации / шифрования для клиентов и серверов по мостовой сети, а также потому, что маршрутизаторы высоко оптимизированы для HTTP и HTTPS.


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.