Qual é a diferença entre um segmento TCP e um pacote TCP?

16

Um segmento TCP não faz parte de um pacote TCP?

Aqui está o que eu li:

Um segmento é um dado de aplicativo cortado em um tamanho transportável pelo TCP e envolvido com um cabeçalho TCP

O próprio cabeçalho TCP não é composto de segmentos?

use753231
fonte

Respostas:

21

Dizemos que TCP segmenté a unidade de dados de protocolo que consiste em um cabeçalho TCP e um pacote de dados do aplicativo (pacote) proveniente da Camada de Aplicação (superior). Os dados da camada de transporte geralmente são nomeados como segmente a unidade de dados da camada de rede é nomeada como, datagrammas quando usamos o UDP como protocolo da camada de transporte, não dizemos UDP segment, mas sim UDP datagram. Eu acho que isso ocorre porque não segmentamos a unidade de dados UDP (a segmentação é feita na camada de transporte quando usamos o TCP).

Encapsulamento de dados e a pilha de protocolos TCP / IP

Ricardo Cristian Ramirez
fonte
Toda essa explicação se aplica ao modelo TCP / IP, mantido pela IETF .
logoff
8

O TCP RFC original é meio confuso com a forma como usa o termo "segmento".

Em alguns casos, o termo "segmento" refere-se apenas à parte atual do fluxo de dados do aplicativo que está sendo transmitida, o que exclui os cabeçalhos TCP. Por exemplo, o TCP "Tamanho Máximo de Segmento" (MSS) é o tamanho máximo do bloco de dados do aplicativo nesta mensagem, sem contar os cabeçalhos TCP.

Mas, em outros casos, o termo "segmento" inclui toda a mensagem TCP, incluindo os cabeçalhos TCP. De fato, em pelo menos um caso, a especificação menciona segmentos TCP sem dados do aplicativo (como Acks simples).

Uma única mensagem IP inteira é um "datagrama".

O IP RFC original refere-se a mensagens da camada de link como "pacotes". Os datagramas IP podem ser divididos em "fragmentos" para caber nos limites de tamanho de pacote em redes de pacotes pequenos.

A camada de link IEEE 802.3 / Ethernet refere-se a uma única transmissão contígua da camada física como um "pacote". A parte do link de dados MAC do pacote é chamada de "quadro". O quadro começa com o endereço MAC de destino e termina com a sequência de verificação de quadros. A parte do quadro que pode conter um datagrama IP (ou fragmento do mesmo) é chamada de "campo MAC Client Data".

Portanto, tecnicamente, não existe um "pacote TCP" ou um "pacote IP". Pacotes são termos das camadas abaixo do IP. O TCP possui "segmentos" e o IP possui "datagramas".

Spiff
fonte
2

O cabeçalho TCP, também chamado de "cabeçalho do segmento", e a carga útil, ou dados, ou "dados do segmento" compõem o segmento TCP, de tamanho variável.

Florenz Kley
fonte
2

Um segmento TCP é chamado de datagrama. Normalmente, um segmento ou um datagrama é um pacote. Quando o datagrama ou pacote é processado pela camada Rede, ele adiciona o cabeçalho IP aos dados e torna-se um pacote IP.

A camada de transporte segmenta os dados em unidades menores chamadas Segmentos, datagramas ou chamados pacotes. Mas geralmente os chamamos de segmentos.

Lovej
fonte
2

o segmento tcp é apenas um conceito, é diferente com a desfragmentação do ip

quando você envia dados maiores que ip mtu, eles são colocados em um pacote ip, mas a camada ip descobre que o pacote ip é muito longo para transmitir; portanto, ele divide o pacote grande em várias partes, cada uma delas com a mesma Identificador, mas com deslocamento e comprimento de dados diferentes. o lado de recebimento é responsável por coletar todas as peças, depois de recebidas todas as peças, remontará todas as peças em um pacote IP inteiro e enviará para a camada superior do protocolo.

mas a camada tcp tem um comportamento diferente. quando você envia dados grandes o suficiente, a camada tcp não os coloca em um pacote tcp e os divide em partes (mas o ip faz), recupera uma parte dos dados brutos em um pacote tcp e empurra o botão pacote tcp para a camada ip, o comprimento do pacote tcp é determinado pelo mss, mais tarde ele recuperará outra parte dos dados restantes em outro pacote tcp e repetirá o processo até que todos os dados sejam transmitidos.

se tcp não usar mss, é horrível. suponha que você envie dados maiores que mss, eles serão colocados em apenas um pacote tcp; os dados não serão divididos em pequenos pedaços devido ao mss não usado; o pacote tcp será maior que o ip mtu; portanto, o ip dividirá o tcp pacote em pedaços. o pacote tcp irá retransmitir se alguma das peças for perdida, perder tempo e largura de banda

ps: tcp_mss = ip_mtu - tcp_header

Albert
fonte
1

Um cabeçalho não é composto de segmentos. Um cabeçalho sempre tem o mesmo tamanho e deve estar completo. Caso contrário, o pacote não poderá ser decodificado.

O que você chama de "Segmento" é o "pacote" completo que mais tarde é combinado com outros no fluxo TCP. Vejo:

O Transmission Control Protocol aceita dados de um fluxo de dados, 'os segmenta' em pedaços e adiciona um cabeçalho TCP criando um segmento TCP.

slhck
fonte
1

O TCP recebe dados da camada de aplicação e os divide em vários segmentos de dados; partes dos dados originais com um cabeçalho TCP adicionado. Parte desse cabeçalho é um número de sequência usado pelo protocolo TCP no terminal de recebimento para colocar todos os segmentos recebidos (menos os cabeçalhos) na ordem correta e remontar os dados originais que serão transferidos para a camada de aplicação .

Então, para responder sua pergunta; o termo 'pacote TCP' não existe realmente. É chamado de 'segmento' que consiste em um cabeçalho e uma seção de dados. O próprio cabeçalho consiste em vários 'campos' que contêm, entre outros, um número de sequência, soma de verificação e números de porta de origem e de destino.

Jaspe
fonte
1

Quando você envia dados através de uma conexão TCP, a quantidade de dados que você envia pode exceder o tamanho máximo de bytes permitidos pela conexão em um único pacote. Esse valor "Tamanho Máximo do Segmento" (também chamado MSS) é "negociado" (1) no momento da conexão entre os dois pontos de extremidade TCP (o cliente e o servidor). O protocolo OSI nível 4 TCP é responsável pela dispersão / coleta. Isso significa que seu fluxo de dados é dividido em partes menores (chamadas de segmentos) e enviadas separadamente pela rede. Por outro lado, a camada TCP é responsável por reunir novamente o pacote na ordem correta para reformar o fluxo exatamente como foi enviado. Nada pode lhe dizer que os segmentos chegarão ao destino na mesma ordem que na partida. É também por isso que os pacotes são numerados. Mais, os pacotes são reconhecidos um a um separadamente (2) pelo receptor, mas às vezes os pacotes podem ser perdidos. Em seguida, nenhum ACK será retornado do destino do pacote para o emissor. Em seguida, o emissor deve reenviá-lo (esse também é o papel do TCP). Em algum momento o pacote é recebido corretamente, mas o reconhecimento não é recebido pelo emissor (pacote perdido novamente). Nesse caso, o emissor o reenviará, mas o destinatário verá que já o recebeu (que é um pacote Dup) e o eliminará, mas reenviará a confirmação ao remetente.

Além disso, para melhorar a taxa de transferência, o emissor pode enviar vários pacotes em série e não precisa esperar pelo ack anterior para enviar o próximo pacote. Também faz parte do protocolo TCP e é chamado de janelas deslizantes. O número de pacotes enviados pendentes para um reconhecimento é limitado.

(1) De fato, não há negociação, cada ponto final indica o Tamanho Máximo com o qual ele é capaz de lidar. Este valor não inclui os 20 bytes do cabeçalho IP, nem os 20 bytes do cabeçalho TCP. (2) vários pacotes também podem ser reconhecidos por um único ACK.

Lembre-se de que os datagramas são dados encapsulados enviados em uma rede IP ou usando um protocolo sem conexão como o UDP. Pacotes são dados encapsulados para um protocolo orientado à conexão como o TCP. Segmentos são partes de um fluxo de dados enviado no TCP. Veja W.Richard Stevens "TCP / IP ilustrado" para ter uma explicação muito melhor de todas essas coisas.

Roger VEBER
fonte
0

Um segmento TCP é um pacote. Um segmento é apenas parte de um fluxo de conexão TCP entre dois computadores. Um datagrama é um "pacote" em termos de UDP.

sinni800
fonte
0

Um pacote IP é composto de um cabeçalho IP com dados anexados. Os dados são um cabeçalho TCP e um segmento de dados do aplicativo, chamado Segmento TCP. Segmento TCP é o que você costuma chamar de pacote TCP.

cpx
fonte
0

O termo "genérico" para coisas como essa é Unidade de dados de protocolo ou 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

As coisas ficam meio embaçadas com protocolos específicos da camada 4 e acima (por exemplo, até hoje não sei de nada que seja puramente um protocolo de sessão e não existe um protocolo comum de "apresentação" mas é definitivamente uma camada quase separada em muitas pilhas de software / comunicação).

Além disso, como mencionado anteriormente, cada uma dessas PDUs possui um cabeçalho distinto de sua carga útil ou dados. O cabeçalho possui informações sobre os dados e, possivelmente, uma soma de verificação para verificação na outra extremidade.

LawrenceC
fonte
não é o trabalho que o TPDU usou nas camadas superiores? consulte books.google.de/books?id=daqV_KzkoSIC&pg=PA147
Janus Troelsen 5/13