Reensamblado TCP

Iniciado por soyloqbuskas, 10 Junio 2013, 23:39 PM

0 Miembros y 1 Visitante están viendo este tema.

soyloqbuskas

¡Buenas a todos!

Tengo una dudilla....

Estoy haciendo un programa que usa raw socket, y estoy recibiendo paquetes TCP por el socket y necesito saber cuando debo reemblar un segmento y cuando no. Mi pregunta es...¿Que campo de la cabecera me proporciona dicha informacion?

Estoy usando wireshark para capturar datos de una conexion cualquiera y no por mas que miro las cabeceras TCP no veo nada que me diga que un paquete esta completo o si es un segmento de un paquete mas grande....Lo que si veo es que todos los segmentos llevan el flag ACK a 1 y luego llevan datos y que cuando llega el ultimo segmento lleva el flag ACK a 1 el PUSH a 1 y datos tambien.

¿Debo entender que todo paquete TCP con el flag ACK a 1 y que lleva datos es un segmento?

¿alguna idea sobre el tema?

Gracias, un saludo
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

soyloqbuskas

Bueno, sigo sin dar con la respuesta....asi que voy a reformular mi pregunta a ver si alguien me puede ayudar mejor.

Tengo una aplicacion que recibe 10 segmentos TCP y se de antemano que los 10 segmentos forman parte de 2 paquetes enviados por una aplicacion. ¿como puedo saber que segmentos son del primer paquete y que segmentos son del 2º paquete? porque podrian ser los 4 primeros segmentos  para el primer paquete y los 6 siguientes para el segundo...ó....podrian ser los 7 primeros segmentos para el primer paquete y los 3 ultimos para el segundo....

¿alguna idea sobre como tcp identifica un segmento para hacer el reensamblado?
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

engel lex

http://es.wikipedia.org/wiki/Transmission_Control_Protocol

aqui está cuales son los bit de control como se maneja la ventana, el ack y numero de secuencia, con eso ya deberias guiarte un poco bastante...

en inglés está más detallado

http://en.wikipedia.org/wiki/Transmission_Control_Protocol
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

estepeño

para eso tienes como ha dicho el compañero el numero de secuencia y la ventana que son creo que los mas importantes...

Un segmento de un tamaño X puede ser ensamblado en varios paquetes IP, los cuales yevaran un identificador que diga la ordenacion de los paquetes para su reconstruccion en el receptor.

El flag ACK se usa en los paquetes TCP para llevar el control del "circuito virtual que forma el protocolo TCP... El ACK nos da informacion de que el circuito sigue abierto, o sea, que hay comunicacion con el emisor y receptor, ye que se siguen enviando informacion y recibiendo informacion....

Sobre todo, fihate en el numero de secuencia porque es el valor que se le da al un segmento para que poder ordenarlo en el destino o para poder volverlo a pedir al emisor.