Повинен TCP використовувати IP?


108

Чи правда, що TCP є коротким для TCP / IP, і вони означають те саме?

Чи можливо побудувати TCP поверх іншого протоколу, крім IP ?


31
Чому ні? Я, можливо, колись бачив TCP над кодом Морзе.
soandos

2
Прикладом може бути тунель ICMP, який використовує TCP через ICMP. Але це правда, що це не звичайна побудова TCP поверх нічого, не IP. Зазвичай це рівень доступу до мережі, який використовує більш широкий спектр протоколів та каналів (наприклад, барабани bongo).
Містер Сміт

1
@TomWijsman Випробував помилку? Як я розумію, будь-які проблеми, які вони мали, пов'язані з вирішенням проблем та сумісності, а не будь-які проблеми з тим, щоб TCP працював.
tylerl

2
@harper З регулярним кодом Морзе 200 символів на хвилину, безумовно, не є нечуваними для кваліфікованих операторів, і 100 c / min (20 проміле в хвилину), безумовно, досягається більшістю людей з достатньою кількістю практики. Звичайно, на цих швидкостях ви насправді не чуєте кожного окремого персонажа, але, швидше, звук слів. (Кажуть, що відмінною рисою кваліфікованого оператора є те, що вони пам’ятають розмову, але не слова, що вживаються.) Я б подумав, однак, що 100 с / хв символів, розміщених до загальної швидкості 50-60 с / хв, можна зробити з мізерні помилки символів.
CVn

2
@harper Це залежить від необхідного рівня точності. В основному чит-чаті (гавкання на ганчірках, в аматорському радіо говорять), слово і помилки тут і там не є насправді проблемою, оскільки контекст має значення більше, ніж точні слова, що використовуються. Для телеграмного трафіку, зв'язку в надзвичайних ситуаціях та інших ситуаціях, особливо якщо текст зашифрований, кожне слово і справді кожен символ повинен бути (не тільки отриманий, але й) скопійований правильно (і розбірливо). Зауважте, що я сказав, що 200 с / хв "не є нечуваним"; не буденність. 100 c / min, однак, досить часто в аматорських радіо-групах.
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 ) (див. Примітку a).
  2. TCP призначений лише для роботи над мережним протоколом без підключення. TCP ефективно не працює над певними мережевими протоколами, орієнтованими на з'єднання (наприклад, послуга постійної бітрейту ATM), оскільки дві функції контролю швидкості бою призводять до дуже низької або непередбачуваної роботи. Ще один вироджений приклад - TCP над тунелем TCP.

Специфікація TCP, RFC 793 , не є гарним джерелом для вирішення цього питання, оскільки вона визнає, що він залишає свій інтерфейс із нижчим шаром значною мірою не визначеним.

Примітка a) Щоб TCP збирав дейтаграми, надруковані на маленьких аркушах паперу (чи перевозяться вони голубами чи більш розумною мережевою мережею), розмір корисного навантаження повинен бути записаний у стандартному місці. Крім того, шар адаптації може евристично визначати розмір сегмента. Оптичний сканер, що використовується при реалізації хостового стека специфікації пташиних носіїв ( RFC 1149 ), включав такий евристичний адаптаційний шар, але він залишається недокументованим.


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

2
Пташиний приклад - легкий і веселий!
джон

88

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

Інтерфейс між протоколом TCP та протоколом нижчого рівня по суті не визначений, за винятком того, що передбачається, що існує механізм, за допомогою якого два рівні можуть асинхронно передавати інформацію один одному. Як правило, очікується, що протокол нижчого рівня задасть цей інтерфейс. TCP призначений для роботи в дуже загальному середовищі взаємопов'язаних мереж. Протокол нижчого рівня, який передбачається в цьому документі, є Інтернет-протоколом.


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

21
Про коментар RBerteig; розгляньте голуба-носія, що несе картку mini-SDHC. Існує різниця між затримкою та пропускною здатністю. :-)
CVn

16
@ MichaelKjörling Це не взаємодіє з RFC 1149: "Даніграма IP-файлу друкується на невеликому прокрутку паперу".
kmkaplan

4
@kmkaplan Якщо тільки дейтаграма не була надрукована на етикетці карти SDHC. Це як кліше з декількох фільмів - "о, це насправді на жорсткому диску!"
Джон Ханна

40
Довелося б мати кілька серйозно великих отворів у брандмауері, щоб пропускати пташиних перевізників наскрізь.
шквал

76

Інтернет-протокол Suite

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

TCP / IP часто використовується як скорочений вислів " Internet Protocol Suite " і зазвичай включає інші стандартні протоколи. Коли люди кажуть TCP / IP, вони, як правило, включають UDP через IP (у якому UDP використовується замість TCP) та безліч інших протоколів, таких як 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 та кілька інших типів трафіку.Статистика ієрархії протоколу Віршарка

Зверніть увагу також на це твердження у поширених запитаннях Google щодо їх протоколу QUIC

Чому ви не створили цілком новий протокол, а не використовували UDP? Середні вікна в Інтернеті сьогодні, як правило, блокують трафік, якщо це не трафік TCP або UDP

(мій акцент)


1
Довела мене аж до 1996 року і модель OSI en.wikipedia.org/wiki/OSI_model
Руді

Є більше 2 протоколів транспортного шару: en.wikipedia.org/wiki/Transport_layer#Protocols
Stuart Blackler

@StuartBlackler: Цікавий момент, дякую. Чи є якісь (крім TCP & UDP), які не потрапляють до того, що я назвав категорією "зникнення малого спеціалізованого використання", і які використовуються через IP? Якби я виміряв IP-трафік в точці обміну Інтернетом , яка частка протоколів транспортного рівня була б іншою, ніж TCP або UDP?
RedGrittyBrick

Візьмемо, наприклад, DCCP, це все-таки новий протокол, але я думаю, що протягом наступних кількох років ви побачите більше програм, які використовують цей протокол. Причина: Я не думаю, що це все ще є мейнстрімом, тому що я не вірю, що існує підтримка в Windows. Подумайте про це як UDP з контролем заторів. Це може бути дуже зручно для багатьох програм, таких як Skype та ігри :) Погляньте на це. Щоб відповісти на ваше запитання, напевно, це дуже мала кількість на даний момент
Стюарт Блеклер

@Rudi помилково, ви повинні усвідомити, що це не еталонна модель OSI, і якщо ви це усвідомлюєте, то не вводить людей в оману, думаючи, що це так. Це модель / архітектура TCP / IP ... Іноді архітектура TCP / IP описується термінологією OSI, еталонною моделлю OSI. Але чотири шари, показані і з тими назвами, дуже багато TCP / IP, а не OSI. Немає проблем з публікацією Red, але ваш коментар в кращому випадку вводить в оману.
барлоп

34

Причина, по якій TCP / IP є такою поширеною абревіатурою (на відміну від, скажімо, UDP / IP або SCTP / IP), полягає в тому, що два протоколи були розроблені разом, а в оригінальному документі Vint Cerf та Bob Kahn дві концепції були об'єднані разом в єдиний протокол. Незабаром після цього вони були розділені на 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 - як масло над хлібом.

Ви можете з'єднати що - небудь ще , що працює з будь-яким протоколом, але ці два настільки доповнюють один одного , це просто смакота надійний спосіб для передачі даних і заповнити животик з інтернет - даними. Він змащує трубку, щоб дозволити іншим сухим харчовим продуктам та передачі даних однаковою мірою підтримувати це сполучення. Але це ні в якому разі не є ексклюзивним.

Q Однак, чи не можливо TCP бути побудований поверх іншого протоколу, крім IP?

A Так це можливо. Мені подобаються Morse Code та Pigeon приклади TCP без IP.


5

Я завжди чув, що TCP є коротким для TCP / IP

Насправді він розшифровується як протокол контролю передачі через Інтернет-протокол

і вони означають те саме.

Це не правильно.

По-перше, Ethernet - це апаратна система низького рівня, яка контролює функціонування фактичних апаратних деталей.

Далі, подумайте про IP як телефонну систему або дорожні знаки. Він забезпечує основне управління з'єднанням двох точок разом.

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

TCP / IP у сукупності забезпечує систему надійної передачі даних до будь-яких двох підключених пристроїв.

В Інтернеті, коли ви хочете надсилати або отримувати дані, IP-частина системи - це та частина, яка контролює встановлення фактичних апаратних з'єднань з проводами (або бездротовими хвилями). Частина системи TCP - це програмне забезпечення, яке відповідає за взяття даних та їх розбиття, надсилання, повторний монтаж отриманих даних, перевірку даних та повторне надсилання при необхідності.

Існує незліченна кількість пояснень з аналогіями та технічними деталями, особливо у відео-формі . Особливо добре в цій темі є DifferenceBetween.net .

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

Так, ви дійсно можете створити альтернативну систему для TCP, яка використовує IP. Погляньте на Інтернет-протокол Suite для отримання детальної інформації.


13
Трохи оманливо сказати, що IP передбачає "з'єднання" двох точок разом. IP забезпечує спосіб передачі окремих пакетів з однієї машини на іншу; кожен пакет незалежний від усіх інших. TCP забезпечує ілюзію безперервного зв'язку , що є дійсно послідовністю пакетів, що надсилаються через IP.
Wyzard

4
IP також не пов'язаний з апаратним чи фізичним сигналом. Це обробляється технологіями нижчого рівня, наприклад, Ethernet.
Wyzard

9
З цією відповіддю багато неправильного, і це питання пропускає цілком. По-перше, Ethernet - це лише один протокол рівня посилання, який використовується для передачі IP. Інших багато, і IP не знає і не піклується ні про кого з них. IP не має нічого спільного з обладнанням; це шар маршрутизації між мережами, вище апаратного забезпечення, яке використовується для їх з'єднання. Суть питання полягала в тому, чи можна використовувати TCP на чомусь іншому, ніж IP, а не на тому, чи можна використовувати щось, крім TCP, яке використовує IP (див. Приклад UDP).
psusi

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?psusi намагається бути розумним, використовуючи "!" як "не оператор". Його коментар слід читати як: "той факт, що те, що не є TCP, може переходити через IP, не обов'язково означає, що TCP може переходити через щось, що не є IP". Це зроблено з посиланням на останнє речення вашої відповіді, яке показало існування "альтернативних систем TCP". Однак показ, що існують альтернативи TCP, не обов'язково означає і не натякає на те, що альтернативи IP є.
Лежати Райан

5

TCP - протокол рівня 4. Він забезпечує гарантовану транспортування даних у вигляді впорядкованого потоку з одного процесу на комп'ютер до іншого процесу на тому ж / іншому комп'ютері.

IP - протокол 3 рівня. Він забезпечує транспортування від одного господаря до іншого.

Поки існує протокол, який може робити хост для передачі даних, TCP буде працювати.

Отже, TCP може бути реалізований через будь-який протокол, але, ми лише зробили IP. IP простий і робить свою роботу.

Немає необхідності в іншому протоколі 3 рівня.


1
Що з IPv6?
curiousguy

1
Що з IPv6? Це просто IP. Там інтерфейс відправки та отримання пакету залишається тим самим. Отже, TCP може використовувати ту саму функцію. ОС може просто замінити покажчик функції з IPv4 та IPv6, і він все одно буде працювати. Я не впевнений, що ви тут говорите?
SurenNihalani

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

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

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-програми Broadcast, Multicast або Unicast. Спочатку він був задуманий як спосіб налаштування серверів, яким не було надано IP-адресу в локальній мережі за допомогою веб-інтерфейсу.

Отже, ви бачите: TCP в одноадресному UDP, і навіть TCP в широкомовному або багатоканальному UDP !

AFAIK тільки TCP / IPv4 і TCP / IPv6 користуються великим розміщенням.


Так, але це UDP через IP; Я бачу, що ви там зробили ...
Тамара Війсман

@TomWijsman Так, це TCP / UDP / IP.
curiousguy

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 для роботи, достатньо буде лише каналу serila з неявним одержувачем).

Отже, у вас реалізовано 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.