R1. Suponga que la capa de red proporciona el siguiente servicio: la capa de red del host de origen acepta un
segmento con un tamaño máximo de 1.200 bytes y una dirección de host de destino de la capa de transporte. La
capa de red garantiza la entrega del segmento a la capa de transporte en el host de destino. Suponga que en el host
de destino pueden ejecutarse muchos procesos de aplicaciones de red.
a. Diseñe el protocolo de la capa de transporte más simple posible que entregue los datos de la aplicación al proceso
deseado en el host de destino. Suponga que el sistema operativo del host de destino ha asignado un número de puerto
de 4 bytes a cada proceso de aplicación en ejecución.
Llamaremos este protocolo como Protocolo de Transporte Simple (STP). Del lado emisor, STP acepta de la capa superior
segmentos de datos de 1196 bytes, un terminal (host) de destino y un puerto de destino. STP agrega 4bytes de cabecera y
pone el puerto de destino en ella. STP indica el host de destino y entrega el segmento más la cabecera a la capa de red la
cual envía la trama hacia el la capa de transporte STP del host de destino el cual analiza el paquete recibido correctamente
(ya que la capa de red garantiza la entrega) para determinar a qué proceso indicado por los 4 bytes de puerto irán los datos
recibidos.
b. Modifique este protocolo de manera que proporcione una “dirección de retorno” al proceso de destino.
En el protocolo “STP” anterior se toma un MSS de 1192bytes y se agregan 4bytes para la dirección de puerto de origen.
c. En sus protocolos, ¿la capa de transporte “tiene que hacer algo” en el núcleo de la red de
computadoras?
No, la capa de transporte no se encuentra en los routers y switches del núcleo de la red. Solo en los dispositivos
terminales (host).
R2. Imagine una sociedad en la que todo el mundo perteneciera a una familia de seis miembros, todas las familias
vivieran en su propia casa, cada casa tuviera una dirección única y cada persona de cada casa tuviera un nombre
único. Imagine que esa sociedad dispone de un servicio de correos que transporta las cartas desde una vivienda de
origen hasta una vivienda de destino. El servicio de correos requiere que (i) la carta se introduzca en un sobre y que
(ii) la dirección de la casa de destino (y nada más) esté claramente escrita en el sobre. Suponga también que en cada
familia hay un delegado que tiene asignada la tarea de recoger y distribuir las cartas a los restantes miembros de la
familia. Las cartas no necesariamente proporcionan una indicación acerca de los destinatarios.
a. Partiendo de la solución del Problema R1, describa un protocolo que el delegado de la familia pueda utilizar para
entregar las cartas de un miembro de la familia emisora a un miembro de la familia receptora.
El miembro A de la casa Alfa escribe una carta y la coloca en el sobre en este punto la información que tiene la carta serían
los datos útiles para el escritor o emisor de la carta, el miembro A se la entrega a F que es el encargado de entregar y recibir
las cartas del correo postal. F al recibir la carta le pregunta a A a donde se dirige por lo que F escribirá en el reverso de la
carta la dirección de su casa (Alfa) y la dirección de la casa Beta a donde se dirigirá la carta. Además, debe escribir el
nombre A el cual la envía y a cuál de las 6 personas está destinada la carta dentro de la casa Beta y quien la envía
supongamos “G”. Una vez hecho esto “F” se la entrega al servicio postal, hasta acá “F” solo le agregó información para
que la carta llegue a su destino (campo de cabecera en TCP/IP). “F” se la entrega al servicio postal. el cual posee un
depósito y lo deja en el durante un día porque la cantidad de cartas que recibió el día anterior era demasiada y no pudo
repartirlas a todas. Por lo cual al día siguiente asiste a la casa Beta a entregar la carta a su buzón el cual la recibirá “M” el
encargado de repartir las cartas en la casa Beta. “M” la lee y se la entrega a “G” el cual la abre y lee el mensaje que “A” le
había escrito.
b. En su protocolo, ¿el servicio de correos tiene que abrir el sobre y examinar la carta para proporcionar este
servicio?
No porque todos los datos a quien va dirigida. Están escritos fuera del contenido de la carta. Análogamente en protocolo
TCP/IP serían los campos de cabecera.
R3. Considere una conexión TCP entre el host A y el host B. Suponga que los segmentos TCP que viajan del host A
al host B tienen un número de puerto de origen x y un número de puerto de destino y. ¿Cuáles son los números de
puerto de origen y de destino para los segmentos que viajan del host B al host A?
El puerto de origen sería “y” y el de origen sería “x”.
,R4. Describa por qué un desarrollador de aplicaciones puede decidir ejecutar una aplicación sobre UDP en lugar
de sobre TCP.
Si al desarrollador no le interesa que parte de la información se pierda (no le interesa que la comunicación sea fiable), y
además prioriza la velocidad podría interesarle mas usar UDP (User Datagram Protocol).
R5. ¿Por qué razón el tráfico de voz y de vídeo suele enviarse sobre TCP en lugar de sobre UDP en la Internet de
hoy día? (Sugerencia: la respuesta que estamos buscando no tiene nada que ver con el mecanismo de control de
congestión de TCP).
La mayoría de los firewalls (Cortafuegos) bloquean el tráfico UDP por lo cual las aplicaciones de voz y video pueden usar
TCP para el tráfico de datos y atravesar los firewalls estos.
R6. ¿Es posible que una aplicación disfrute de una transferencia de datos fiable incluso si se ejecuta sobre UDP? En
caso afirmativo, explique cómo.
Si incorporando el mecanismo de fiabilidad en la capa de aplicación. Es decir, los procesos de aplicación pueden
comunicarse de forma fiable sin estar sujetos a las restricciones de la velocidad de transmisión impuestas por el mecanismo
de control de congestión de TCP. Requiere de un arduo trabajo de depuración en el desarrollo de estas aplicaciones.
R7. Sea un proceso del host C que tiene un socket UDP con el número de puerto 6789. Suponga también que los
hosts A y B envían cada uno de ellos un segmento UDP al host C con el número de puerto de destino 6789. ¿Serán
dirigidos ambos segmentos al mismo socket del host C? En caso afirmativo, ¿cómo sabrá el proceso del host C que
estos dos segmentos proceden de dos hosts distintos?
Si ambos segmentos serán dirigidos al socket del host C. En las tramas recibidas está indicado en un campo de cabecera
de red el host origen (dirección IP).
R8. Suponga que un servidor web se ejecuta en el puerto 80 del host C. Suponga también que este servidor web
utiliza conexiones persistentes y que actualmente está recibiendo solicitudes de dos hosts diferentes, A y B. ¿Están
siendo enviadas todas las solicitudes al mismo socket del host C? Si están siendo pasadas a través de sockets
diferentes, ¿utilizan ambos sockets el puerto 80? Explique y justifique su respuesta.
For each persistent connection, the Web server creates a separate “connection
socket”. Each connection socket is identified with a four-tuple: (source IP address,
source port number, destination IP address, destination port number). When host C
receives and IP datagram, it examines these four fields in the datagram/segment to
determine to which socket it should pass the payload of the TCP segment. Thus, the
requests from A and B pass through different sockets. The identifier for both of these
sockets has 80 for the destination port; however, the identifiers for these sockets have
different values for source IP addresses. Unlike UDP, when the transport layer passes
a TCP segment’s payload to the application process, it does not specify the source IP address, as this is implicitly
specified by the socket identifier.
R9. En los protocolos rdt estudiados, ¿por qué necesitábamos introducir números de secuencia?
Los números de secuencia son necesarios para el receptor para saber cuándo el paquete entrante se trata de datos nuevos
o una retransmisión de un paquete perdido o corrupto.
R10. En los protocolos rdt estudiados, ¿por qué necesitábamos introducir temporizadores?
Para saber cuándo retransmitir el paquete ante la pérdida del paquete o una confirmación de recibido ACK en el canal o
NACK (si el paquete es corrupto).
R11. Suponga que el retardo de ida y vuelta entre el emisor y el receptor es constante y conocido por el emisor.
¿Se necesitaría en este caso un temporizador en el protocolo rdt 3.0, suponiendo que los paquetes pueden
perderse? Explique su respuesta.
Si seguiría siendo necesario porque se necesita la orden de fin de temporización para reenviar los datos que no llegaron.
La única ventaja es que se tendrá la certeza de que el paquete de datos o el ACK/NACK no están aún en el canal.
R12. Visite el applet de Java Go-Back-N en el sitio web del libro.
a. Haga que el emisor envíe cinco paquetes y luego detenga la animación antes de que cualquiera de los cinco
paquetes alcance su destino. A continuación, elimine el primer paquete y reanude la animación. Describa lo que
ocurre.
Al enviar 5 paquetes desde el emisor, se inicia la temporización, la ventana naturalmente no se desplaza hasta no recibir
las confirmaciones. Cuando se elimina el paquete 0 (primer paquete) en el canal y llegar al receptor los restantes la ventana
,del receptor no se desplaza y tampoco responde con ningún ACK, mientras tanto la temporización en el emisor finaliza lo
que hace que retransmita los 5 paquetes. Sin importar que los últimos 4 hallan llegado.
b. Repita el experimento, pero ahora deje que el primer paquete alcance su destino y elimine el primer paquete de
reconocimiento. Describa lo que ocurre.
Al eliminar el primer paquete de reconocimiento el emisor desplaza la base de su ventana de igual manera al siguiente
paquete del ultimo enviado y no realiza ninguna retransmisión. Esto dado a que Go-Back-N funciona con reconocimiento
acumulativo.
c. Para terminar, pruebe a enviar seis paquetes. ¿Qué ocurre?
No se puede enviar dado a que el tamaño de la ventana en el emisor es 5. Esto determina la cantidad máxima de paquetes
no reconocidos que pueden estar en el canal al mismo tiempo.
R13. Repita el problema R12, pero ahora utilizando el applet de Java con repetición selectiva (SR). ¿En qué se
diferencian los protocolos SR y GBN?
R14. ¿Verdadero o falso?
a. El host A está enviando al host B un archivo de gran tamaño a través de una conexión TCP. Suponga que el host
B no tiene datos que enviar al host A. El host B no enviará paquetes de reconocimiento al host A porque el host B
no puede superponer esos reconocimientos sobre los datos. Falso
b. El tamaño de la ventana de recepción de TCP VentCongestion nunca varía mientras dura la conexión. Falso
c. Suponga que el host A está enviando al host B un archivo de gran tamaño a través de una
conexión TCP. El número de bytes no reconocidos que A envía no puede exceder el tamaño
del buffer del receptor. Verdadero
d. Suponga que el host A está enviando al host B un archivo de gran tamaño a través de una conexión TCP. Si el
número de secuencia de un segmento en esta conexión es m, entonces el número de secuencia del siguiente segmento
necesariamente tiene que ser m + 1. Falso
e. El segmento TCP contiene un campo en su cabecera para VentRecepcion. Verdadero
f. Suponga que el último RTTMuestra en una conexión TCP es igual a 1 segundo. El valor actual del
IntervaloFinTemporización para la conexión será necesariamente 1 segundo. Falso
g. Suponga que el host A envía al host B un segmento con el número de secuencia 38 y 4 bytes de datos a través de
una conexión TCP. En este mismo segmento el número de reconocimiento necesariamente tiene que ser 42. Falso
R15. Suponga que el host A envía dos segmentos TCP seguidos al host B a través de una conexión TCP. El primer
segmento tiene el número de secuencia 90 y el segundo tiene el número de secuencia 110.
a. ¿Cuántos datos hay en el primer segmento?
Habria 20 bytes de carga útil (payload).
b. Suponga que el primer segmento se pierde pero el segundo llega a B. En el paquete de
reconocimiento que el host B envía al host A, ¿cuál será el número de reconocimiento?
90
R16. Considere el ejemplo de la conexión Telnet de la Sección 3.5. Unos pocos segundos después
de que el usuario escriba la letra ‘C’, escribe la letra ‘R’. Después de escribir la letra ‘R’,
¿cuántos segmentos se envían y qué valores se almacenan en los campos número de secuencia
y número de reconocimiento de los segmentos?
Se envían 3 segmentos y los campos en orden son emisor SEQ=43 ACK=80 datos=’R’; receptor SEQ=80 ACK=44. Emisor
SEQ=44 ACK=81.
SECCIÓN 3.7
R17. Suponga que existen dos conexiones TCP en un cierto enlace de cuello de botella con una velocidad de R bps.
Ambas conexiones tienen que enviar un archivo de gran tamaño (en la misma dirección a través del enlace de cuello
de botella). Las transmisiones de los archivos se inician en el mismo instante. ¿Qué velocidad de transmisión podría
proporcionar TCP a cada una de las conexiones?
R/2
R18. ¿Verdadero o falso? En el control de congestión de TCP, si el temporizador del emisor caduca, el valor de
umbralAL se hace igual a la mitad de su valor anterior. Falso, este se hace de la mitad del valor de la ventana de
congestion
R19. En la exposición acerca de la división TCP del recuadro de la Sección 3.7, se establecía que el tiempo de
respuesta con la división TCP es aproximadamente igual a 4 . RTTFE +RTTBE + el tiempo de procesamiento.
Justifique esta afirmación.
,Considerando x=RTTFE , y=RTTBE ST=search time
Problemas
P1. Suponga que el cliente A inicia una sesión Telnet con el servidor S. Aproximadamente en el mismo instante, el
cliente B también inicia una sesión Telnet con el servidor S. Proporcione los posibles números de puerto de origen
y de destino para:
a. Los segmentos enviados de A a S.
b. Los segmentos enviados de B a S.
c. Los segmentos enviados de S a A.
d. Los segmentos enviados de S a B.
e. Si A y B son hosts diferentes, ¿es posible que el número de puerto de origen en los segmentos
que van de A a S sea el mismo que en los segmentos que van de B a S?
f. ¿Qué ocurre si A y B son el mismo host?
a-b-c-d)Se seleccionaron los puertos de A y B aleatoriamente distintos a cualquiera de los “Know well ports”
Source Port Destination Port
A->S 12000 23
B->S 25000 23
S->A 23 12000
S->B 23 25000
e) Si es posible dado a que al ser diferentes hosts usan diferente dirección de IP. En la analogía de las casas y las
correspondencias. Una carta puede dirigirse a un sujeto con el mismo nombre por ejemplo “Diego” pero que viven en
distinta casa por lo tanto tienen direcciones también diferentes.
f) si A y B son el mismo host los segmentos tendrán la misma dirección de IP de origen y destino siendo necesario tener
diferentes direcciones de puerto origen y destino.
P2. Considere la Figura 3.5. ¿Cuáles son los valores de los puertos de origen y de destino en los segmentos que fluyen
desde el servidor de vuelta a los procesos cliente? ¿Cuáles son las direcciones IP de los datagramas de la capa de
red que transportan los segmentos de la capa de transporte?
, Source Destination
Port IP Port IP
S->A 80 B 7532 A
S->A 80 B 26145 A
S->C 80 B 26145 C
P3. UDP y TCP utilizan el complemento a 1 para calcular sus sumas de comprobación. Suponga que tiene los tres
bytes de 8 bits siguientes: 01010011, 01100110, 01110100. ¿Cuál es el complemento a 1 de la suma de estos bytes?
(Observe que, aunque UDP y TCP emplean palabras de 16 bits para calcular la suma de comprobación, en este
problema le pedimos que considere sumas de 8 bits). Explique cómo funciona. ¿Por qué UDP utiliza el complemento
a 1 de la suma; ¿es decir, por qué no simplemente emplea la suma? Con el esquema del complemento a 1, ¿cómo
detecta el receptor los errores? ¿Es posible que un error de un solo bit no sea detectado? ¿Qué ocurre si hay 2 bits
erróneos?
Complemento a uno = 1 1 0 1 0 0 0 1. Para detectar errores, el receptor suma las cuatro palabras (las tres palabras
originales y la suma de comprobación). Si la suma contiene un cero, el receptor sabe que ha habido un error. Se
detectarán todos los errores de un bit, pero los errores de dos bits pueden pasar desapercibidos (por ejemplo, si el último
dígito de la primera palabra se convierte en un 0 y el último dígito de la segunda palabra se convierte en un 1).
P4. a. Suponga que tiene los 2 bytes siguientes: 01011100 y 01100101. ¿Cuál es el complemento a 1 de la suma de
estos 2 bytes?
b. Suponga que tiene los 2 bytes siguientes: 11011010 y 01100101. ¿Cuál es el complemento
a 1 de la suma de estos 2 bytes?
c. Para los bytes del apartado (a), proporcione un ejemplo en el que un bit cambie de valor en
cada uno de los 2 bytes y aún así el complemento a 1 no varíe.
a) La suma es 11000001 y el complemento a uno es 00111110
b) La suma es 00111111 y el complemento a uno es 11000000
c) Cambiamos 01011100 por 01011101 y 01100101 por 01100100 la suma es 11000001 y el complemento a uno
es 00111110. Solo un bit cambio en cada uno de los números se invirtió y el complemento no cambio.
P5. Suponga que el receptor UDP calcula la suma de comprobación de Internet para el segmento UDP recibido y
comprueba que se corresponde con el valor almacenado en el campo de suma de comprobación. ¿Puede el receptor
estar completamente seguro de que no hay ningún bit erróneo? Explique su respuesta.
No, el receptor no sabe con certeza que no hay errores en los bits. Esto es por la manera en la cual la suma de comprobación
para el paquete es calculada. Si los bits correspondientes (que deberían ser sumados juntos) de 2 palabras de 16 bits en el
paquete fueron 0 y 1 y estos son invertidos la suma sigue siendo la misma. Entonces el complemento a uno que calcula el
receptor también va a ser el mismo. Esto significa que la suma de comprobación no podría verificar si hubo un error en la
transmisión.
,P6. Recuerde el motivo de corregir el protocolo rdt2.1. Demuestre que el receptor mostrado en la Figura 3.57 y el
emisor mostrado en la Figura 3.11 pueden llegar a entrar en un estado de bloqueo tal que cada uno de ellos esté
esperando a que se produzca un suceso que no ocurrirá nunca.
Suponiendo que el emisor está en el estado “Esperar llamada 1 de arriba” cuando el paquete de datos se pone a disposición
del protocolo de transporte es enviado a través del canal con el número de secuencia 1, inmediatamente el emisor pasa al
estado “Esperar ACK o NAK 1”. Del lado del receptor este se encuentra en estado “Esperar 1 de abajo” cuando recibe el
paquete suponiendo que no tiene errores envía su reconocimiento ACK y hace su transición al estado “Esperar 0 de abajo”
suponiendo que el paquete de reconocimiento ACK es corrompido en el canal. Al llegar al emisor este reenviara el paquete
con secuencia 1, pero el receptor estará esperando el paquete con secuencia 0, al llegar este al receptor como se observa en
su lógica el mismo enviara un NAK haciendo que el receptor retransmita todo el tiempo el paquete con secuencia 1 y el
receptor quedará en espera del paquete 0.
Lado emisor
Lado Receptor
P7. En el protocolo rdt3.0, los paquetes ACK que fluyen del receptor al emisor no tienen números de secuencia
(aunque tienen un campo ACK que contiene el número de secuencia del paquete que están reconociendo). ¿Por qué
estos paquetes ACK no requieren números de secuencia?
Para responder mejor a esta pregunta, considere por qué necesitábamos números de secuencia en primer lugar. Vimos que
el remitente necesita números de secuencia para que el receptor pueda saber si un paquete de datos es un duplicado de un
paquete de datos ya recibido. En el caso de los ACK, el remitente no necesita esta información (es decir, un número de
secuencia en un ACK) para detectar un ACK duplicado. Un ACK duplicado es obvio para el receptor rdt3.0, ya que cuando
recibió el ACK original pasó al siguiente estado. El ACK duplicado no es el ACK que necesita el remitente y, por tanto, el
remitente rdt3.0 lo ignora.
P8. Dibuje la máquina de estados finitos correspondiente al lado receptor del protocolo rdt3.0.
Lado emisor rdt 3.0
,Lado receptor rdt 3.0
P9. Dibuje un esquema que muestre la operación del protocolo rdt3.0 cuando los paquetes de datos y los
paquetes de reconocimiento están corrompidos. Utilice un esquema similar al mostrado en la Figura 3.16.
, P10. Sea un canal que puede perder paquetes, pero del que se conoce su retardo máximo. Modifique el protocolo
rdt2.1 para incluir los fines de temporización y las retransmisiones del emisor. Argumente de manera informal
por qué su protocolo puede comunicarse correctamente a través de este canal.
Si agregamos al protocolo rdt 2.1 un temporizador cuyo fin de temporización sea mayor al máximo retardo (RTT), También
agregamos un evento de fin de temporización a los estados “Wait for ACK or NAK0” y “Wait for ACK or NAK1”. Luego
tenemos que si dejamos la estructura del receptor tal y como esta.
• Primero suponemos que el fin de temporización del lado emisor es causado por que el paquete no llego al receptor, para
este es exactamente igual que el emisor reenvié el paquete por un fin de temporización que haber recibido el original.
• Segundo si el fin de temporización fue por una pérdida del ACK o NAK del receptor. El emisor reenviara el paquete
porque este no tiene la certeza de que se ha extraviado o ha llegado corrupto. El receptor recibirá el duplicado del paquete
con secuencia 0 ó 1 y volverá a enviar el ACK hacia el emisor.
P11. Considere el receptor rdt2.2 mostrado en la Figura 3.14 y la creación de un paquete nuevo en la transición
a sí mismo (esto es, la transición del estado de vuelta hacia sí mismo) en los estados Esperar 0 de abajo y Esperar 1
de abajo: pqtenv=crear_pqt(ACK,1,sumacomprobacion)y pqtenv=crear_pqt(ACK,0,sumacomprobacion).
¿Funcionaría correctamente el protocolo si se eliminara esta acción de la transición al mismo estado en el estado
Esperar 1 de abajo? Justifique su respuesta. ¿Qué ocurrirá si se elimina este suceso de la transición del estado
Esperar 0 de abajo a sí mismo? [Sugerencia: en este último caso, considérelo que ocurriría si el primer paquete que
va del emisor al receptor estuviera corrompido.]
El receptor quedaría como en la imagen debajo. Eliminando el envío de estos paquetes el protocolo no funcionaría
correctamente ante datos corruptos o paquetes duplicados. Dado que ante la presencia de algún paquete corrupto la
comunicación se colgaría porque tanto emisor y receptor quedarían esperando un evento que nunca pasaría.
Suponiendo que el emisor envía un pqt0, por lo tanto, pasa al estado “Esperar ACK0”, si el pqt0 llega corrupto al receptor
el que se encuentra en estado “Esperar 0 de abajo” la transición lo dejará en el mismo estado y al no enviar nada el emisor
quedará esperando el ACK 1 (dado que el paquete estaba corrupto debe enviar ACK 1 para que el emisor al recibir esto
retransmita el pqt0).
P12. El lado del emisor de rdt3.0 simplemente ignora (es decir, no realiza ninguna acción) todos los paquetes
recibidos que contienen un error o que presentan un valor erróneo en el campo número de reconocimiento (acknum)
de un paquete de reconocimiento. Suponga que, en tales circunstancias, rdt3.0 simplemente retransmite el paquete