Protocolos TCP y UDP

NUESTROS CURSOS Foros Curso CCNA R&S 200-125 Protocolos TCP y UDP

Viendo 15 entradas - de la 16 a la 30 (de un total de 68)
  • Autor
    Entradas
  • #16688
    AlvaroM
    Superadministrador

    Hola Nicolás!

    Si un dispositivo envía un número de secuencia de 1000, el número de secuencia ya representa el primer byte datos…si solamente se envía 1 byte, esto quiere decir que el dispositivo de destino está recibiendo el byte número 1000, por lo tanto esperará recibir en el siguiente segmento los datos a partir del byte número 1001, y este valor de 1001 se envía como número ACK.

    Respecto a la pregunta del test, si el número de secuencia es 1000 y se envían 20 bytes de datos, el número de secuencia 1000 representa el primer de datos que es enviado (de los 20), el segundo byte sería el 1001, el tercer byte el 1002, cuarto byte el 1003 y así sucesivamente…, por lo tanto el último byte que se envía (el 20) debería ser el 1019 no es cierto?… esto quiere decir que el byte que se esperará recibir en el próximo segmento será el byte número 1020 que se detallará en el número de ACK.

    Espero que haya quedado claro con esto. Atento a tus consultas!

    Saludos!

    #16721
    Luis Hernández
    Participante

    En la pregunta 19 no el mss son los datos encapsulados por el segmento? ya que el tamaño de un datagrama se mide por la aplicación?

    #16724
    AlvaroM
    Superadministrador

    Hola Luis y bienvenido al foro!

    Tienes que tener en cuenta que Segmento = TCP y Datagrama = UDP, el MSS es un término utilizado en TCP y representa el tamaño máximo de los datos que van ser encapsulados un segmento, los datos encapsulados son los datos de las aplicaciones. El MSS se obtiene en base al MTU de la capa 2… Si tenemos un MTU de 1500 bytes (tecnología Ethernet en la capa 2), el MSS se obtiene eliminando el header de capa 3 y el header de capa 4 (40 bytes), lo que da como resultado un MSS de 1460 bytes.

    En UDP no existe un MSS, el tamaño del datagrama es definido por los bloques de datos entregados por las aplicaciones que utilizan UDP.

    Dicho esto, en la pregunta 19 la respuesta correcta es: Conformado por los datos de aplicación encapsulados en el segmento

    Estoy atento a tus comentarios! =)

    #16755
    Jose Manrique
    Participante

    Hola Alvaro, saludos.

    Con respecto a la pregunta 19: ¿Qué afirmación es cierta respecto al MSS?
    La respuesta es: Conformado por los datos de aplicación encapsulados en el segmento

    Pero según lo que entendi de la explicación, se puede afirmar que el MSS tambien está conformado por el header de capa 4, capa 3, capa 2 y datos de aplicación.

    Quisieras saber como despejar esta duda.

    #16767
    AlvaroM
    Superadministrador

    Hola Jose!

    En la explicación se indica que el MSS está conformado por los DATOS DE APLICACIÓN. El MSS se obtiene restando el tamaño del header TCP y el tamaño del header IP al MTU de la trama. Si la trama está viajando por un enlace Ethernet, esto significa que el MTU tiene un tamaño de 1500 bytes, a esos 1500 bytes le restamos el tamaño del header TCP (20 bytes), le restamos el tamaño del header IP (20 bytes) y obtenemos el MSS que sería equivalente a 1460 Bytes, estos bytes representan solamente a los datos de APLICACIÓN.

    Acá tenemos una entrada del blog donde hablamos a más detalle de estos datos:

    Opciones TCP – Tamaño Máximo del Segmento (MSS)

    NO es necesario que estudies lo que se menciona en esa entrada de blog, va más alla del nivel de CCNA pero puede servirte para aclarar conceptos.

    Atento a tus comentarios! =D

    #16794
    Jose Manrique
    Participante

    Hola Alvaro,

    Muchas gracias por tu pronta respuesta. Aclarada la duda.

    Saludos.

    #17584
    Elias Gonzalez Varas
    Participante

    Hola profe!

    Consulta. Cuál sería el SN, en el header de un segmento ACK?, no sería igual a 0?

    #17600
    Elias Gonzalez Varas
    Participante

    Otra duda, cómo se define la cantidad y el tamaño de los segmentos que tendrá una ventana TCP?

    #17671
    AlvaroM
    Superadministrador

    Hola Elias!

    Con SN me imagino que te refieres al valor de Sequence Number?… si es así, la respuesta es «depende», depende si es un segmento SYN+ACK en respuesta a un segmento SYN, o si es un segmento ACK que lleva datos de aplicación, en el caso que sea un segmento SYN+ACK en respuesta a un segmento SYN, el valor del SN (ISN) es generado de manera aleatoria. En el ejercicio teórico hemos colocado un valor de ISN = 0 por simplicidad, sin embargo en la realidad no es así.

    Recuerda que en el establecimiento de la conexión se definen los números de secuencia que van a utilizar los 2 extremos de la comunicación y no solo uno (valores aleatorios).

    Respecto a tu segunda consulta, no existe una respuesta absoluta, esto depende de la implementación de TCP en el sistema operativo del dispositivo, a veces se utiliza el mecanismo de «slow start» que comienza con un tamaño de ventana «pequeño» generalmente del tamaño del MSS o 4*MSS, y a medida que se reciben los ACKs este tamaño va incrementándose exponencialmente. En otras situaciones el tamaño de ventana es igual a la máxima cantidad de segmentos que se pueden enviar de acuerdo al tamaño de ventana máximo de 65535, por ejemplo al navegar en una página web en mi computadora, se define un tamaño de ventana de 64240, este valor se obtiene al multiplicar el MSS «normal» de un segmento TCP (al enviarse por una red Ethernet) de 1460 bytes*44, el resultado es 64240.

    Sin embargo como te digo la respuesta es «depende», influye el MSS, el TCP Timestamp, influye si se tiene implementada la característica de Windows Scaling, y también otros valores que son utilizados a nivel de programación, lastimosamente no existe una respuesta simple y clara, tendríamos que analizar otros conceptos que no son estudiados en este curso. Si quieres darle una mirada a los RFCs oficiales que hablan sobre este tema, puedes ingresar a estos enlaces: https://www.ietf.org/rfc/rfc3390.txt y https://tools.ietf.org/html/rfc1323#page-8, como verás no es una lectura simple y toma en cuenta muchos otros términos no aprendidos en estas clases, y además te darás cuenta que en muchos casos, los documentos son «sugerencias» para implementar el tamaño de ventana de una forma determinada, la decisión final de cómo implementar el tamaño de ventana en un dispositivo en particular es del fabricante.

    Espero haberte ayudado con mi respuesta.

    Saludos cordiales.

    • Esta respuesta fue modificada hace 3 años, 11 meses por AlvaroM.
    #17677
    Elias Gonzalez Varas
    Participante

    Muchas gracias por su respuesta maestro!.. me quedó clarísimo.

    #18940
    Ricardo Casillas
    Participante

    Hola Alvaro, tengo una duda respecto al vídeo # 2, ya la habían comentado en el foro pero no logra quedarme claro el por que del lado de la PC durante la transferencia de datos el ACK # siempre es 1, y del lado de servidor el Seq# siempre es 1, me podrías explicar un poco mas detallado el porque el numero no cambia?

    Saludos.

    #18943
    AlvaroM
    Superadministrador

    Hola Ricardo!

    Lo que pasa, es que en el ejemplo estamos ASUMIENDO que el servidor no envía datos a la PC.

    Trabajemos con un ejemplo «CASI REAL» para que este concepto quede más claro. Vamos a trabajar con la interacción que ocurre entre una computadora que accede a una página web “segura” que utiliza el protocolo HTTPS.

    Supongamos que yo me conecto a una página web «prueba.com», YO voy a iniciar el establecimiento de la conexión con el servidor, ¿no es cierto?, asumamos que estamos utilizando valores de ISN de cero en ambos extremos para simplicidad. Recuerda que en la vida real estos valores son generados de manera aleatoria.

    Vayamos paso a paso.

    Establecimiento de la Conexión

    – Yo le envío al servidor mi Número de Secuencia Inicial de 0 (byte fantasma) y mi valor de Ack también de 0 a través del mensaje TCP SYN.
    – El servidor devuelve su respuesta con su propio Número de Secuencia Inicial de 0 (byte fantasma), y devuelve un valor de Ack de 1 (ISN recibido+1 en el establecimiento de la conexión). Estos datos son enviados en el mensaje TCP SYN+ACK.
    – Yo le envío al servidor el valor de número de Ack 1 [ISN del mensaje (SYN+ACK)+1]. Estos datos se envían a través del mensaje ACK.

    Entonces mi computadora tiene su #SEQ = 1, #ACK = 1 y el servidor también tiene los mismos valores #SEQ = 1 y #ACK = 1.

    Hasta acá ya se ha establecido la conexión con el servidor. Esto es lo mismo que analizamos en las clases… ahora sí debe darse el intercambio de datos.

    Intercambio de datos

    Cuando nosotros visitamos una página web con el protocolo HTTPS, existe un intercambio de datos a nivel de Aplicación entre el servidor y el cliente que es relevante para la privacidad de la página web (navegación segura). En este proceso, tanto el servidor como la computadora intercambian bytes, y acá sí veríamos una variación en los números de Secuencia y Ack de ambas partes.

    – Mi computadora va enviar un mensaje del protocolo TLS (seguridad de la página web) que va tener supongamos 400 bytes de datos de Aplicación. El número de Secuencia llegaría a ser 1 y el Ack también sería 1… no existe variación en este momento.

    – El servidor recibe ese mensaje con datos de Aplicación, y debe devolver un mensaje de reconocimiento ACK a mi computadora argumentando de que efectivamente recibió el mensaje enviado.

    – El servidor enviara un segmento ACK con el número de Secuencia de 1 y el número de Ack de 401, ¿porque este número de Ack?… esto porque ya ha recibido por parte de mi computadora los bytes del 1 al 400, y ahora espera recibir el byte 401. Este mensaje no lleva datos de Aplicación, Ok…

    – El servidor en este tipo de aplicación, a continuación también enviará un mensaje del protocolo TLS (seguridad de la página web) que va tener supongamos 600 bytes de datos de Aplicación. El número de Secuencia llegaría a ser 1, y el Ack sería 401. El número de ACK todavía no cambia ya que no se han recibido más mensajes que tengan bytes de datos de Aplicación por parte del cliente.

    – El cliente recibe ese mensaje con datos de Aplicación, y debe devolver un mensaje de reconocimiento ACK al servidor, argumentando de que efectivamente recibió el mensaje enviado.

    – El cliente enviara un segmento ACK con el número de secuencia 401, ¿por qué 401?… esto porque el cliente ya envió los datos del 1 al 400, le toca enviar los datos comenzando desde el byte 401, en este mensaje NO está enviando datos de Aplicación. El número de Ack, llegaría a ser igual a 601, ¿por qué 601?… porque el servidor le ha enviado los bytes desde el 1 al 600, entonces el cliente le indica al servidor con este mensaje, que ya ha recibido esos bytes y que espera en su próximo mensaje al byte número 601.

    – En el siguiente mensaje del servidor al cliente, se tendría un número de Secuencia de 601 y un número de ACK de 401. Y seguramente se enviaran otros datos de Aplicación de acuerdo al funcionamiento de TLS.

    Como puedes ver en esta interacción, AMBOS dispositivos están enviando datos de Aplicación, y esto provoca que los valores de Ack y Seq cambien en los 2 extremos.

    En el ejemplo de la clase, estamos asumiendo POR SIMPLICIDAD, que SOLAMENTE LA PC envía datos de Aplicación, y que el servidor solamente se encarga de RECONOCER la recepción de esos mensajes a través del segmento ACK. El servidor NO LE ENVÍA datos de Aplicación al cliente y es por eso que el número de ACK no cambia desde el cliente al servidor y el número de Secuencia tampoco cambia desde el servidor al cliente.

    Espero que con esta explicación quede más claro!

    Atento a tus comentarios.

    Saludos cordiales.

    • Esta respuesta fue modificada hace 3 años, 9 meses por AlvaroM.
    #18953
    Ricardo Casillas
    Participante

    Muchas gracias por la explicación Alvaro, ya pude comprender mejor la duda que tenia.
    Solo me gustaría saber si en esta parte donde describes que el servidor envía el segmento ACK que seria la respuesta al mensaje del cliente, también mencionas que envía un mensaje del protocolo TLS, que este ya es generado por el servidor hacia el cliente (entiendo que este mensaje es el que hace que el cliente cambie valor de ACK), estos mensajes los envía el servidor de manera separada? o los dos van dentro del mismo mensaje y son enviados al mismo tiempo?
    Copio el texto donde mencionas dicha situación.

    El servidor enviara un segmento ACK con el número de Secuencia de 1 y el número de Ack de 401, ¿porque este número de Ack?… esto porque ya ha recibido por parte de mi computadora los bytes del 1 al 400, y ahora espera recibir el byte 401. Este mensaje no lleva datos de Aplicación, Ok…

    – El servidor en este tipo de aplicación, a continuación también enviará un mensaje del protocolo TLS (seguridad de la página web) que va tener supongamos 600 bytes de datos de Aplicación. El número de Secuencia llegaría a ser 1, y el Ack sería 401. El número de ACK todavía no cambia ya que no se han recibido más mensajes que tengan bytes de datos de Aplicación por parte del cliente.

    Quedo al pendiente
    Agradezco nuevamente tus atenciones.

    #18960
    epmunoz3
    Participante

    Hola que tal la pregunta 3 (el protocolo HTTP), 7 y 19 no le comprendo podrías explicarme, saludos

    #18961
    AlvaroM
    Superadministrador

    Hola Ricardo!

    En este caso, los 2 mensajes son SEPARADOS. Primero se envía el mensaje ACK, y después se envía el mensaje con los datos de Aplicación. A veces se puede enviar directamente el mensaje ACK conjuntamente con los datos de Aplicación, esto ya depende de la manera en que se implementa TCP en el dispositivo. Cuando se envía un segmento ACK conjuntamente con datos de Aplicación se denomina «piggybacked ACK».

    Espero que mi respuesta te ayude!

    Atento a tus comentarios! =)

    Saludos cordiales

Viendo 15 entradas - de la 16 a la 30 (de un total de 68)
  • Debes estar registrado para responder a este debate.