Яка різниця між сегментом TCP і пакетом TCP?


16

Чи сегмент TCP не є частиною пакету TCP?

Ось що я прочитав:

Сегмент - це частина даних програми, подрібнених TCP на розмір, що переноситься, і загорнута заголовком TCP

Чи не сам заголовок TCP складається з сегментів?

Відповіді:


21

Ми говоримо, що TCP segmentце блок даних протоколу, який складається із заголовка TCP та частини даних програми (пакету), що надходить з (верхнього) рівня додатків. Дані транспортного рівня зазвичай називаються як, segmentа одиниця даних мережевого рівня називається як, datagramале коли ми використовуємо UDP як протокол транспортного рівня, ми не скажемо UDP segment, натомість ми говоримо UDP datagram. Я думаю, це тому, що ми не сегментуємо блок даних UDP (сегментація проводиться на транспортному рівні, коли ми використовуємо TCP).

Інкапсуляція даних та стек протоколу TCP / IP


все це пояснення стосується моделі TCP / IP, підтримуваної IETF .
вихід з системи

8

Оригінальний TCP RFC начебто нечіткий із тим, як він використовує термін "сегмент".

У деяких випадках термін "сегмент" позначає лише поточний фрагмент потоку даних програми, який передається, що виключає заголовки TCP. Наприклад, TCP "Максимальний розмір сегмента" (MSS) - це максимальний розмір фрагмента даних програми в цьому повідомленні, не враховуючи заголовків TCP.

Але в інших випадках термін "сегмент" включає все повідомлення TCP, включаючи заголовки TCP. Насправді принаймні в одному випадку специфікація згадує сегменти TCP без даних про додатки (наприклад, звичайні Acks).

Єдине ціле IP-повідомлення - це "дейтаграма".

Оригінальний IP RFC посилається на повідомлення на рівні зв’язку як "пакети". IP дейтаграми можуть бути розбиті на "фрагменти", щоб вписатись у обмеження розміру пакетів у мережах з невеликими пакетами.

Лінійний рівень IEEE 802.3 / Ethernet відноситься до єдиної суміжної передачі фізичного рівня як "пакет". Частина зв'язку зв'язку MAC пакету називається "кадром". Кадр починається з MAC-адреси призначення та закінчується послідовністю перевірки кадру. Частина кадру, яка може містити дейтаграму IP (або її фрагмент), називається "поле даних MAC-клієнта".

Отже, технічно немає такого поняття, як "пакет TCP" або "пакет IP". Пакети - це терміни з шарів нижче IP. TCP має "сегменти", а IP - "дейтаграми".


2

Заголовок TCP, який також називають "заголовком сегмента", і корисне навантаження, або дані, або "дані сегмента" складають сегмент TCP, різної величини.


2

Сегмент TCP називається Datagram. Зазвичай сегмент або дейтаграма - це пакет. Коли дейтаграма або пакет обробляється мережевим рівнем, він додає IP-заголовок до даних і стає IP-пакетом.

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


2

tcp сегмент - лише поняття, він відрізняється від дефрагментації ip

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

але рівень tcp має різну поведінку. коли ви надсилаєте дані, які є досить великими, шар tcp не покладе дані в один пакет tcp, потім розділить їх на частини (але ip робить), він отримає частину необроблених даних в один пакет tcp, а потім натисніть на tcp-пакет до ip-шару, довжина пакету tcp визначається mss, пізніше він отримає іншу частину решти даних в інший tcp-пакет і повторювати процес, поки всі дані не будуть передані.

якщо tcp не використовує mss , це жахливо. припустимо, що ви надсилаєте дані, більші за mss, вони будуть розміщені лише в одному пакеті tcp (дані не розбиваються на невеликі шматки через mss, що не використовується), пакет tcp більший за ip mtu, тому ip розбиває tcp пакет на шматки. пакет tcp повторно передаватиметься, якщо будь-який з фрагментів загублений, витрачаючи час і пропускну здатність

ps: tcp_mss = ip_mtu - tcp_header


1

Заголовок не складається з сегментів. Заголовок завжди має однаковий розмір і повинен бути повним. В іншому випадку пакет не вдалося розшифрувати.

Те, що ви називаєте "Сегмент", - це весь "пакет", який згодом поєднується з іншими до потоку TCP. Побачити:

Протокол управління передачею приймає дані з потоку даних, «сегментує» їх на шматки і додає заголовок TCP, створюючи сегмент TCP.


1

TCP отримує дані з прикладного рівня та "розбиває" ці дані на кілька сегментів даних; фрагменти вихідних даних із доданим заголовком TCP. Частина цього заголовка - це номер послідовності, який використовується протоколом TCP на приймальному кінці, щоб розмістити всі отримані сегменти (за винятком заголовків) у правильному порядку та повторно зібрати вихідні дані, які він потім передає на рівень програми .

Отже, щоб відповісти на ваше запитання; термін "пакет TCP" насправді не існує. Він називається "сегментом", який складається із заголовка та розділу даних. Сам заголовок складається з декількох "полів", які містять, серед інших, порядковий номер, контрольну суму та номери порту джерела та місця призначення.


1

Коли ви надсилаєте дані на думку про з'єднання TCP, кількість відправлених даних може перевищувати максимальний розмір байтів, дозволений з'єднанням в одному пакеті. Ця сума "Максимальний розмір сегмента" (також називається MSS) "узгоджується" (1) під час з'єднання між двома кінцевими точками TCP (клієнтом і сервером). Протокол TCP рівня OSI рівня 4 відповідає за розсіювання / збирання. Це означає, що ваш потік даних розділений на менші частини (називаються сегментами) і надсилається окремо через мережу. З іншого боку, рівень TCP відповідає за повторний збір пакета у правильному порядку, щоб реформувати потік так само, як він був надісланий. Ніщо не може сказати вам, що сегменти прибуватимуть до пункту призначення в тому ж порядку, що і при вильоті. Ось чому пакети пронумеровані. Більше, пакети приймаються один за одним окремо (2) одержувачем, але колись пакети можуть бути втрачені. Тоді жоден ACK не повернеться з пункту призначення пакета до випромінювача. Тоді випромінювач повинен його повторно (це також роль TCP). Колись пакет приймається правильно, але емітер не отримує ак (знову втрачений пакет). У такому випадку випромінювач відправить його повторно, але приймач бачить, що він його вже отримав (тобто пакет Dup) та усуне його, але повторно відправить відправника відправнику.

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

(1) Фактично переговорів взагалі немає, кожна кінцева точка вказує максимальний розмір, з яким він може мати справу. Це значення не включає 20 байт IP-заголовка, а також 20 байт заголовка TCP. (2) декілька пакетів також можуть бути підтверджені одним ACK.

Майте на увазі, що Datagrams - це капсульовані дані, що надсилаються через мережу IP або використовують протокол без зв’язку, як UDP. Пакети - це капсульовані дані для протоколу, орієнтованого на з'єднання, типу TCP. Сегменти - це частини потоку даних, що надсилаються на TCP. Дивіться W.Richard Stevens "TCP / IP illustrated", щоб отримати набагато краще пояснення цього матеріалу.


0

Сегмент TCP - це пакет. Сегмент - це лише частина потоку з'єднання TCP між двома комп'ютерами. Данограма - це "пакет" в термінах UDP.


0

Пакет IP складається з заголовка IP з доданими даними. Дані - це заголовок TCP і сегмент даних програми, який називається сегмент TCP. TCP-сегмент - це те, що ви зазвичай називаєте пакетом TCP.


0

"Загальний" термін для таких речей, як "Протокол даних", або PDU.

LAYER # - OSI NAME     - COMMON PROTOCOL OR USE - PDU NAME
-------   ------------   ----------------------   --------------------------
Layer 1 - Physical     - Transceiver            - bits, or a physical signal
Layer 2 - Datalink     - Ethernet               - frame
Layer 3 - Network      - IP                     - packet
Layer 4 - Transport    - TCP                    - segment
Layer 5 - Session      - SIP                    - data, request, or response
Layer 6 - Presentation - Encryption/compression - data, request, or response
Layer 7 - Application  - HTTP                   - data, request, or response

Деякі речі розмиваються з конкретними протоколами від шару 4 і вище (наприклад, до сьогоднішнього дня я не знаю нічого, що насправді є чисто сеансовим протоколом, і насправді не існує такого поняття, як звичайний протокол "презентації" але це, безумовно, майже окремий шар у великій кількості стеків програмного забезпечення / комунікацій).

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


чи не використовується робота TPDU на верхніх шарах? дивіться books.google.de/books?id=daqV_KzkoSIC&pg=PA147
Janus Troelsen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.