Problemes Tema 3


Tornar


1. Quina és la longitud màxima del segment TCP? Tindria sentit considerar un MSS de 65516 bytes? i 65496?

{i}

MSS= Longitud màxima del segment TCP = 65536.

65535-65516=19

19! = 20 => Ens faltaria un byte ja que TCP Utilitza 20 bytes de capçelera sense opcions. Per tant no tindria cap sentit.

index


[04/05]
2. Per a què s’utilitzen els números de port a UDP i a TCP? Com són triats?

S'utilizen per diferenciar la aplicació destí d'una connexió.Els d'ús més comú són els well-known i estan per sota del port 1024 (ports resevats):

ftp

21/tcp


telnet

23/tcp


smtp

25/tcp

mail

time

37/tcp

timserver

time

37/udp

timserver

www

80/tcp

http

WorldWideWeb HTTP

www

80/udp

http

HyperText Transfer Protocol

La resta de ports són per a ús dels usuaris els quals poden posar un procés a un port que coneix lliure o demanar un port lliure al sistema operatiu.

FONTS:
http://wikipedia.org
Apunts de Classe

index


[07/05]
3. Si volem un servei no orientat a connexió i no fiable utilitzem UDP. Explica amb detall per què no utilitzem directament IP. Per communicar dos hosts ens fa falta una IP i un port tant d'orígen com de destí. IP inclou la informació IP dels hosts, però no els ports, així que UDP es molt simple i serveix per completar l'informació. De fet, la seva estructura es:

2 bytes

2 bytes

Port origen UDP

Port destí UDP

Longitud

CRC

D.A.D.E.S ...

Per el CRC s'utilitzen les direccions IP dels hosts, tant l'origen con destí, cosa que viola completament el sistema de capes, però es fa així perquè UDP prepara totalment el datagrama IP per qüestions de rendiment.

index


4. Quines raons argumentaries per no utilitzar UDP directament per a la transmissió de fitxers?

La raó principal per no utilitzar UDP per a transmetre fitxers és que es tracta d’un protocol no fiable. Si volem enviar un fitxer amb UDP a una certa destinació, no sabrem mai si els datagrames enviats han arribat realment al seu destinatari, ja que no disposem de missatges de ACK que ens ho assegurin.

Per altra banda, l’ordre d’aquests datagrames podria ser qualsevol, ja que no s’ordenen al arribar al seu destí. Aquest protocol no controla la informació que s’intercanvia entre les màquines participants de la comunicació.

En resum, els datagrames enviats per a transmetre fitxers mitjançant UDP poden no arribar, arribar duplicats o arribar fora d’ordre, per tant ens interesaría utilitzar un altre protocol que ens aportés més fiabilitat (TCP, per exemple).

index


[08/05]

5. Volem enviar 8192 bytes de dades utilitzant UDP en una Ethernet. Quants fragments IP s’enviaran? Indica el tamany i l’offset de cadascun.

Cabecera UDP: 8bytes MTU Ethernet: 1500 bytes Tamany total dades: 8192 bytes

Tamany datagrama UDP: 8192 + 8 = 8200 bytes

Cabecera de cada fragmento: 20 bytes


Offset

Dades

Tamany total

Fragment1

0

1480

1500

Fragment2

185

1480

1500

Fragment3

370

1480

1500

Fragment4

555

1480

1500

Fragment5

740

1480

1500

Fragment6

925

800

820

Necessita 6 fragments.

Correcció: -Resultat correcte comprobat a classe-

index


6. Una aplicació utilitza un datagrama UDP per a enviar dades. El datagrama IP que s’envia és fragmentat en 4 troços. Els fragments 1 i 2 arriben a la destinació, però la resta és perden. L’aplicació torna a re-transmetre el mateix missatge després de 5 segons, i aquesta vegada es perden els fragments 1 i 2. Si assumim que el timeout per la desfragmentació és de 60 segons, el receptor pot reconstruir el datagrama original?
- Correción en clase

Los protocolos UDP y IP no son fiables y la retransmisión de un datagrama se controla a través del nivel de aplicación. Cuando el datagrama se transmite la segunda vez, tiene otro identificador, pues a nivel de enlace no se sabe que son partes del mismo datagrama. Y como no se pide retransmisión a este nivel, luego nada llega a las capas superiores.


index


7. Quina és la longitud màxima del flux de dades que es pot enviar en una connexió TCP, considerant que els números de seqüència tenen 32 bits?

{i}

Podem enviar tants paquets com vulguem pq els números de seq. es poden reutilitzar. Per tant la longitud no té límit.

index


[04/05]
8. Suposant que el port 34434 està sent utilitzat per una aplicació que ha executat el codi mostrat més avall, podria una altra aplicació utilitzar el mateix número de port per a fer una obertura de connexió passiva TCP? Justifica la teva resposta.

(...) 
sai.sin_port=htons(34434);
s=socket( PF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ( bind( s, (struct sockaddr *)&sai, sizeof(sai) ) !=0 ) {
(...)

Sí, ja que el socket declarat utilitza protocols UDP i es podria crear per tant una connexió TCP.
El Sistema Operatiu es l'encarregat de gestionar els ports oberts i pot diferenciar un port UDP d'un TCP.

Correcció: 

[11/05] ()

La resposta és CORRECTA ja que el sistema operatiu relaciona (Port,Protocol), per tant (UDP,34434) el SO consideraria que seria diferent a (TCP,34434).

***************************************************************
** Port TCP Port Client **
** --------------------------------------------------------- **
** **
** || 80 || <--- --- --- --- --- --- --- --- --- || 24012 || **
** || 80 || <--- --- --- --- --- --- --- --- --- || 25111 || **
** **
***************************************************************

A classe es va debatir si per a dos clients podrien usar el mateix port TCP alhora i vam arribar a la conclusió de que:
1. Ens saltariem l'estandar, per tant quedaria lleig.
2. També trencariem el que es coneix '''client-servidor''' i hauriem de modificar el SO per a que el ''rebind'' es pugués aplicar dues vegades.


FONTS:
http://wikipedia.org
Apunts de Classe

index



9. Calcula el throughput màxim teòric de TCP en una Ethernet de 10 Mbits/segon, assumint un MSS de 1024 bytes. Suposa que ni IP ni TCP porten opcions, i recorda el temps mínim entre trames (9.6 micro-s.) i la longitud mínima de les dades a Ethernet (46 bytes).

Ethernet:

Preamble (64)

Origen (48)

Destí (48)

Tipus (16)

Dades

CRC (32)

Calcul de "parelles" per segon: Tamany de tots els camps: Preamble = 64bits
Origen = 48bits
Desti = 48bits
Tipus = 16bits
Dades = 8bits * (20bits heather IP + 20bits heather TCP + 1024 MMS)
CRC = 32bits
Total de bits= 8816 Primer calculem l'espai minim entre 2 trames. En aquest cas, entre les dades i l'ACK de confirmació d'aquestes.

(9.6 micro seg. * 10Mbits)/8 = 96bits

Calcul de "parelles": Dades + ACK per segon:

Calcul del minim numero de dades a enviar per Ethernet:
64+(2*48)+16+(8*(20+20+6))+32= 672. Assignem 6 bits a MMS per obtenir 46 bytes utils.

10Mbps/(8816+672)= 1054parelles/segon
1054parelles/segon * 1024 bytes parella= 1079296bytes/segon
1079296bytes/segon * 8= 8634638 bits/segon -> 86% -> Throughput maxim teoric. La resta es perd per dades de control i capçaleres

index


10. Per què hi ha una opció de negociació del MSS si ja tenim un camp en les capçaleres de tots els segments TCP per a l’anunci del tamany de finestra?

La opció de negociació del MSS és necesaria degut a que el tamany dels segments pot variar, i si aquests segments son retransmessos, poden portar més informació que els segments originals. És per aquest motiu que és necessari que els extrems acordin un MSS.

El MSS més óptim posible seria aquell que permetés els datagrames fosin del tamany més gran posible sense que es produis fragmentació en el seu recoregut per les xarxes que atravessa.

Trobar-lo és molt difícil, ja que la majoria d’implementacions de TCP no tenen cap manera de saber l’MTU mínim de les xarxes que atravessaran els datagrames que es transmetin. L’emissor i el receptor normalment es posen en contacte i es comuniquen el seu MTU i s’agafa el més petit.


index


[08/05]

11. Implica la pèrdua d’un ACK el re-enviament de dades en TCP? Si la teva resposta no és un “sempre” o un “mai”, especifica les circumstàncies.

No sempre, l'unic cas a tenir en compte, però, es en el tancament d'una connexió amb el mètode gracefully, si es perd l'ACK de l'últim missatge de FIN hi ha un temps d'espera abans de finalitzar la conexió per que doni temps a enviar-se l'ACK del FIN un parell de vegades, com a mínim, però no es torna a enviar la última senyal de FIN. Es el mateix problema que el dels cartaginesos i els romans que a l'establiment de la connexió, s'arriba a un compromís que estableix que amb 3 missatges ja n'hi ha prou perque els dos extrems estiguin avisats, si no s'hauria d'enviar un ACK de l'últim ACK, i axí succesivament.


index


12. Quins són els principals motius per a que el número de seqüència inicial de TCP hagi de ser aleatori i no predictible?
[07/05]

Los números de secuencia sirven para identificar la comunicación y se desea que cada comunicación tenga un identificador unico. Por eso el espacio para los números es muy grande (entre 0 y 2^32-1), pues será muy poco probable que dos conexiones tengan el mismo número de secuencia. También, cuando una conexión falla por alguna razon, es importante que la proxima vez tenga otro número de secuencia para que no se confundan los datos de las dos comunicaciones. Ademas es menos probable que haya un ataque de fuera porque el numero no se puede adivinar utilizando algun algoritmo.

index


13. Si aturem un programa que tenia establerta una connexió TCP i no el podem re-executar inmediatament, a què pot ser degut? (l’error que pot donar és “el port està sent utilitzat”).

{i}

Es pot deure a l'estat de TIMED WAIT del diagrama d'estats del TCP i que fa que no es tanqui la conexio fins que no li arribi el senyal ACK conforme es tanca la conexio.

(AFEGIT DE CLASE:) Tambè podría ser que un procés ha agafat el port a l'interval entre que s'ha tancat el port i el nostre programa l'ha sol·licitat.

index


[04/05]
14. Quina diferència veus entre el MSS i el MTU?

MTU (Maximum Transmission Unit) (tamany màxim d'un paquet en la xarxa) --> Volum màxim de dades que pot ésser trasmès en un frame per la xarxa.
MSS (maximum segment size) és una opció del protocol TCP que ens diu quin e´s el tamany màxim d'un segment, per tant(tamany):

0 <= segmento <= MSS

Els extrems poden tenir grandaries de MTU diferents peró han d'acordar un màxim per als dos. Interessa que el tamany dels segments sigui el major que es pugui ja que així s'optimitza l'ample de banda. Com exemple:

MSS > MTU

s'agafarà com a tamany màxim dels segments el del MTU

MSS < MTU

s'agafarà com a tamany màxim dels segments el del MSS més petit que tingui els extrems

En definitiva MTU fa referencia a la xarxa física i el MSS fa referencia a una capa més alta.

FONTS:
http://wikipedia.org
Apunts de Classe

index


15. A envia 100 bytes de B a través d’una connexió TCP. B no enviarà cap byte de dades a A. Quins missatges s’intercanviaran? Suposem que el tamany de la finestra és 80 i que el MSS és 20. Per cada segment escriu l’origen, els bits activats, els números de seqüència i confirmació, i el número de bytes de dades.

Correcció - {i}

A->B
WIN= 80
MSS= 20

Establiment de la conexio
-> SYN SA=0
<- SYN, ACK SB=200; aB=1;
-> ACK SA=1 aA=201;

Transmissio de dades
-> ACK SA=1 aA=201 Dades=20;
-> ACK SA=21 aA=201 Dades=20
-> ACK SA=41 aA=201 Dades=20
-> ACK SA=61 aA=201 Dades=20
<- ACK SB=201 aB=81 Dades=0 Perque WIN=80
<- ACK SA=81 aA=201 Dades=20
<- ACK SB=201 aB=101 Dades=0

Tancament de la conexio
-> Fin SA=101 aA=201 Dades=0
<- Fin-Ack SB=201 aB=102 Dades=0
-> ACK SA=102 aA=202 Dades=0

index


16. Per què creus que els números de port estan al principi de les capçaleres UDP i TCP?

En la comunicació d’extrem a extrem, el primer que hem de saber es a qui pertanyen les dades enviades (aplicació origen i destí).

Ës per això que s’utilitzen els ports. Ens indiquen a quina aplicació van adreçades les dades transportades. El fet de que vagin al principi de les capçaleres TCP i UDP és per després poder desmultiplexar els datagrames.

Per analogía, si hem de rebre llit de l’ikea per parts, el primer que haurà de saber al carter quan arribi a la porta de casa (ip) és a quin pis (port) ho ha de deixar. Quan hagi arribat totes les peces, es monta el llit (datagrama).


index


[09/05]

17. El host A estableix una connexió TCP amb el host B en la que utilitzarà el número de seqüència inicial 45000. Si s’envia fins el byte numerat com 46024, i després el 45274, digues quin pot ser el tamany de la finestra d’enviament.

Seqüència d’enviament: ||...|| 46022 || 46023 || 46024 || 45274 ||...||

La finestra ha de ser com a amàxim de 1024 bytes, perquè els elements que s'envien d'una finestra han de tenir números de seqüencia consecotius.


index


18. La capçalera de TCP té un camp de longitud de capçalera que no trobem a la de UDP. Per què creus que hi és en un protocol i no en l'altre?
[07/05]

El protocolo UDP collabora con el protocolo IP que pertenece a otra capa y por eso viola el principio de protocolos en capas. El datagrama construyido por UDP luego se pasa a IP para acabar el datagrama, entre otro lo de la cabecera. El protocolo TCP no viola este principio y necesita este campo porque la longitud de la cabecera puede variar.

index


[04/05]
19. Compara el rendiment de la finestra lliscant de TCP amb el protocol d’envia-i-espera utilitzat pel protocol TFTP. Suposa que que amb la finestra lliscant hem enviat 32768 bytes en 35 segons i que el RTT (Round Trip Time, temps que passa entre que s’envia un missatge i es rep la confirmació) és, en promedi, de 1.5 segons.
index


/!\ en construcció



21. Deixem una connexió TCP establerta entre dos hosts. Estarà encara establerta després de dos anys, tres mesos i 25 dies, si les màquines no s’han aturat? Pots suposar que hi ha hagut canvis importants en l’estructura de la xarxa. Quantes dades s’hauran enviat?

Una connexió TCP pot romandre establerta el temps que calgui, sempre i quan les maquines també es mantinguin actives. Donat el seu funcionament, TCP seguirà establert fins que no es tanqui la connexió de manera voluntària o quan es tanqui de manera abrupta amb un reset.


index


[09/05]

22. Indica i raona quin és el MSS òptim que maximitza el throughput de TCP en situacions normals d’enviament.

En situacions normals d'enviament el MSS òptim haurà de ser el del MTU més petit de totes les xarxes per on passa el missatge menys 40 bytes.
O sigui:

MSS = min {MTU1, MTU2, ...} - 40

Els 40 bytes que se li resten son dels 20 bytes de la capçalera IP (sense opcions) i 20 bytes de la capçalera TCP (sense opcions).

La raó es que, en principi, quant més gran sigui el mss millor, donat que les capceleres IP i TCP s'amortitzen més, però en canvi, si la MTU es petita es necessari fragmentar el datagrama IP (el segment TCP), que, a part de no aprofitar el ample de banda, pot donar problemes, perque si es perd un fragment del segment, el segment no es pot recuperar.
El cas més òptim es trobar quin es el MTU més petit del camí, pero si això no es pot fer es pot agafar la mida estàndar, que 536 + 40 bytes (de les capçaleres IP i TCP).


index


[09/05]
23. Pot ser un segment (TCP) més gran que un datagrama, de manera que es necessiti més d'un en la capa de xarxa inferior (IP) per a poder enviar-lo? I un datagrama d'usari (UDP)?

TCP: En una conexión TCP se intenta evitar que se necesite más que un datagrama para enviar el segmento TCP. Por eso, cuando se establece una conexión TCP, se intercambia el MSS (tamaño maximo de segmento) de las redes y se escoge el MSS más pequeño (menos 40 bytes para las cabeceras). Pero, cuando se añaden opciones opcionales, el tamaño puede aumentarse así que se necesita dos datagramas para enviar el segmento.

UDP: El tamaño maximo de segmentos de UDP normalmente se elige lo suficiente pequeño para evitar fragmentación en la capa de enlace.

Fuentes:
http://www.microsoft.com/latam/technet/articulos/200408/cg0704.mspx
transparencias de la asignatura index


[07/05]
[08/05] - Aportación

"Warriors of the net", errors del vídeo.

Aportacion:


index


Tornar