Por que um único pacote TCP (?) é dividido em várias unidades de PDU aqui?

5

Relacionado a foto:

Por que esses segmentos são marcados como pacotes separados (todos Ack, Seq = 509)? Por que um pacote foi dividido?

    
por kagali-san 29.10.2010 / 17:53

3 respostas

3

Eu presumo que você esteja se referindo a quadros visíveis no intervalo 56-78.
Vamos resolver as coisas nesta ordem,

  1. Sobre: " TCP segment of a reassembled PDU "
    Isso implica que wireshark (ethereal?) Reagrupou os segmentos TCP juntos para a sua exibição.
    Então, você pode ignorar essa string, isso significa que não há danos. Eu elaborei o que esses frames estão no ponto 4 abaixo.
  2. Sobre: quadros diferentes com o mesmo número ' seq '.
    Os quadros 58, 60,62,64, etc mostram o mesmo número de seqüência.
    No entanto, note que estes são não um único pacote "marcado como pacotes separados" - sem divisão.
    Esses pacotes tinham apenas o sinalizador ' ACK ' definido e você verá que o número ACK está incrementando.
    Estas são as ACKs enviadas para o servidor HTTP da sua máquina, à medida que diferentes segmentos TCP chegam a ela.
  3. A sequência ' ACK ' começa em 1 no quadro 52 e termina com 9646 no quadro FIN 78 .
    Durante esse tempo, todos os quadros do seu navegador para o servidor HTTP estão repetindo o último número de seqüência enviado (que é 609 ) - esse é o comportamento normal do protocolo TCP. O navegador não está enviando mais dados após sua primeira solicitação HTTP (frame 52 ).
    O servidor HTTP reconheceu isso no frame 54 .
  4. Espero que o frame 54 seja a resposta do servidor remontado (wireshark) que foi formada com os quadros marcados como "segmento TCP de uma PDU remontada". Assim, todos os quadros sucessivos marcados dessa maneira são do servidor HTTP para o cliente
    (esse detalhe não é visível na sua imagem desde que você tenha depurado as colunas Origem e Destino).

Se você verificar novamente o arquivo de captura original, deverá encontrar os quadros 54 a 67 que têm a porta TCP Source 80 (para HTTP) e os dados de resposta de 9646 bytes do servidor HTTP.

O que você vê aqui é uma resposta de 9KB do servidor HTTP que chega ao seu navegador como vários segmentos TCP limitados por MTU, cada um deles reconhecido pela pilha TCP do seu sistema operacional.

Esta é a seqüência de comunicação de alto nível.

  1. Seu navegador iniciou a conexão com o servidor HTTP com um handshake TCP de 3 vias.
  2. Enviou uma única solicitação HTTP para o servidor nesta conexão
  3. O servidor respondeu a isso com uma resposta de 9 KB que estava espalhada por vários pacotes TCP / IP como ( Segmentos TCP )
  4. A pilha TCP / IP em sua máquina do navegador reconheceu cada pacote TCP conforme recebido do servidor
  5. Finalmente, ele fechou a conexão começando com um pacote FIN .
    Espero que existam mais alguns pacotes FIN e ACK após o frame 78 (ou um único pacote RST ).

Você pode ler mais sobre o manuseio de Remontagem TCP do Wireshark na Wiki do Wireshark .

    
por 09.11.2010 / 09:20
7

Não consigo ver a imagem, mas um protocolo de nível mais baixo (digamos, Ethernet) pode quebrar um protocolo de nível superior (digamos, pacote TCP) em fragmentos com base no tamanho de seu MTU (Maximum Transmission Unit).

    
por 29.10.2010 / 19:09
4

A Wikipedia define a unidade de dados do protocolo da seguinte forma:

In telecommunications, the term protocol data unit (PDU) has the following meanings:

  1. Information that is delivered as a unit among peer entities of a network and that may contain control information, address information, or data.
  2. In a layered system, a unit of data which is specified in a protocol of a given layer and which consists of protocol-control information and possibly user data of that layer. For example: Bridge PDU or iSCSI PDU1

PDUs are relevant in relation to each of the first 4 layers of the OSI model (Layer 5 and above are referred to as data).

Então, na verdade, uma PDU é simplesmente uma unidade de dados, definida em seu próprio contexto.

Em Noções básicas sobre WireShark :

Sometimes the packet will not arrive in one piece. Instead, the packet arrives as several Protocol Data Units (PDU). WireShark will try to reassemble these units back into a single packet. Such a packet is called a reassembled PDU.

When working with a reassembled PDU, the display will not be as nice as a regular packet. The headers of the response are in the bottom pane of Figure 2.11.

Isso significa que estes são segmentos da mensagem TCP / IP, e que normalmente apenas o último segmento tem informações significativas e completas sobre a mensagem TCP / IP.

De segmento TCP Wireshark de uma PDU remontada :

You can disable the reassembly of TCP segments by unchecking the "Allow subdissector to desegment TCP streams" in the TCP protocol preferences. That way, all parts of the application PDU will be displayed on their own.

Esta é uma maneira de garantir que todos os segmentos contenham todas as informações necessárias para exibir de forma significativa o segmento TCP / IP, e não apenas o último pacote.

    
por 07.11.2010 / 19:56

Tags