UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
1
PRCTICA 8
TCP Y UDP
1.- Objetivos de Aprendizaje
El alumno podr utilizar un programa que le permita enviar y
recibir informacin utilizando los protocolos TCP y UDP y
reafirmando conceptos tericos.
El alumno ser capaz de crear un socket servidor y un socket
cliente
2.- Conceptos tericos
El programa Sock
El programa sock ofrece un modo de acceder a la interfaz de los sockets
sin tener que programar. Conecta la entrada/salida estndar
(teclado/pantalla) con un socket cuyas caractersticas se especifican
mediante parmetros al ejecutar la orden. Mediante la redireccin de la
entrada o la salida se puede enviar el contenido de un archivo o
almacenar en un archivo la informacin recibida.
Los sockets pueden ser de dos tipos: UDP o TCP, que se corresponden
con un servicio sin conexin, que no garantiza ni la entrega ni el orden
de entrega de la informacin (UDP) y otro servicio que garantiza la
entrega ordenada y sin errores de la informacin (TCP).
Adems, se sabe que una aplicacin puede comenzar iniciando la
comunicacin (enviando informacin) o bien puede esperar
pacientemente hasta que la otra le solicite el inicio de la comunicacin
(espera peticin).
El programa sock va a permitir imitar cualquiera de estas situaciones
entre otras.
3.- Equipo y material necesario
3.1 Material del alumno:
Imagen extensin BMP con calidad de una imagen
fotogrfica.
3.2 Equipo del Laboratorio:
Programa sock (sock-1.1.tar.tar).
4.- Desarrollo:
Modo de trabajar
La prctica se desarrollar en parejas.
4.1 Preparacin del programa Sock
4.1.1 Encienda el sistema y elija la opcin de cargar Linux.
4.1.2 Inicie sesin como usuario redes, el profesor le proporcionar la
contrasea.
4.1.3 Ejecute una terminal de comandos (Figura No. 1)
Figura No. 1. Terminal de comandos
4.1.4 Cree el subdirectorio practica dentro del directorio actual (Ver
Figura No. 2)
NOTA: Evite cambiarle el nombre al subdirectorio, deber llamarse
practica, sin ningn nmero posteriormente ni abreviatura alguna,
nombres como prac8, p8, practica8, etctera, sern invlidos.
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
2
redes@Pooh:~$ mkdir practica
Figura No. 2. Creacin del subdirectorio practica
4.1.5 Copie el archivo sock-1.1.tar.tar dentro del subdirectorio
practica. (Ver figura No. 3)
redes@Pooh:~$ cp sock-1.1.tar.tar /home/redes/practica
Figura No. 3. Copia del archivo sock
4.1.6 Cmbiese al subdirectorio practica y descomprima el archivo
sock-1.1.tar.tar (Ver Figura No. 4)
redes@Pooh:~$ cd practica
redes@Pooh:~/practica$ tar xvf sock-1.1.tar.tar
Figura No. 4. Archivos en sock antes comprimidos.
4.1.7 Sitese dentro del subdirectorio sock-1.1 y ejecute la orden
./configure con la que el programa quedar preparado para su
compilacin y montaje. (Ver Figura No. 5)
redes@Pooh:~/practica$ cd sock-1.1
redes@Pooh:~/practica/sock-1.1$ ./configure
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
3
Figura No. 5. Configuracin de archivos y creacin de un Makefile
4.1.8 Compile el programa. Ahora ya disponemos del programa sock
ejecutable. (Ver figura No. 6)
redes@Pooh:~/practica/sock-1.1$ make
Figura No. 6. Compilacin de archivos
4.2 Clientes TCP
4.2.1 Vamos a comenzar viendo qu sucede cuando un navegador se
dirige a un servidor de web y le solicita una pgina. En el shell
teclee lo siguiente y despus de pulsar la tecla ENTER, escriba
el texto GET / HTTP/1.0 Finalice presionando dos veces
ENTER(Ver figura No. 7).
redes@Pooh:~/practica/sock-1.1$ . /sock e www.fi-b.unam.mx:80
GET / HTTP/1.0
Figura No.7. Socket hacia www.fi-b.unam.mx
Con esto se est conectando al servidor www.fi-b.unam.mx (que es el
servidor web de la DIE) al puerto 80, que es donde se encuentra este
servicio habitualmente (well-known port) y se utiliza el protocolo TCP.
Lo que estamos haciendo es crear un socket en nuestra computadora.
Ese socket, que acta como cliente, lo conectamos al servidor de web de
la DIE y le solicitamos que nos enve el contenido de su pgina web
inicial. La conexin iniciada por el programa sock se realiza al puerto 80
del servidor www.fi-b.unam.mx y dura slo lo indispensable hasta que
se entrega la pgina web solicitada. Es importante destacar que la
respuesta del servidor contiene una informacin del protocolo HTTP (o
cabecera) a la que sigue, despus de una lnea en blanco, el cdigo
HTML de la pgina solicitada. Tras enviar esa informacin el servidor
cierra la conexin, con lo cual la ejecucin de la orden sock finaliza.
4.2.2 En el shell teclee lo siguiente:
redes@Pooh:~/practica/sock-1.1$ ./sock :22
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
4
Deber obtener como resultado algo similar a: (Ver figura No. 8).
Figura No. 8. Socket usando el puerto 22
Observar que el programa no finaliza, para que lo haga pulse las teclas
<CTRL>+<c>.
En este ejercicio se est conectando con el servidor SSH local que se est
ejecutando en la misma computadora desde el que ejecuta la orden.
Esto es as porque al no especificar un servidor y slo un puerto (22) se
entiende que nos referimos a la computadora local.
El servidor SSH comienza enviando una cadena que identifica la versin
del programa, y eso es lo que obtenemos como resultado.
4.3 Servidor TCP
Los programas pueden esperar pacientemente a que se les solicite algo
antes de enviar alguna informacin. ste es el comportamiento de
muchos servidores. Utilizando el programa sock va a crear un servidor
cuya nica funcin es esperar a que un cliente se conecte y luego
conecta la entrada y salida estndar con ese cliente.
4.3.1 Para crear un socket servidor, teclee lo siguiente en el shell:
redes@Pooh:~/practica/sock-1.1$ ./sock -le :7701
4.3.2 Ahora, abra un nuevo shell, sitese en el subdirectorio sock-1.1
y ejecute la siguiente orden: (Ver figura No. 9).
redes@Pooh:~/practica/sock-1.1$ ./sock -e :7701
Figura No. 9. Creacin de un socket servidor y de un socket cliente
4.3.3 Escriba en el Shell cliente y despus teclee ENTER observe los
que sucede en el Shell servidor. Seguidamente escriba en el Shell
servidor, qu sucede en el Shell cliente? (Ver figura No. 10).
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
________________________________________________________________________
Figura No. 10. Comunicacin entre terminales
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
5
Salga con CTRL + C
La orden del punto 4.3.2 es equivalente a: telnet localhost 7701
El parmetro -l hace que la aplicacin configure el socket en modo
escucha (listen) y acepte peticiones. Por tanto, en el punto 4.3.1 ha
puesto en marcha, en su computadora, un servidor que escucha en el
puerto 7701. Mientras que las rdenes de los pasos 4.3.2 y 4.3.3 han
arrancado clientes TCP que se han conectado a ese puerto.
4.3.4 En un shell, sitese en el subdirectorio sock-1.1 y cree un socket
servidor tecleeando lo siguiente:
redes@Pooh:~/practica/sock-1.1$ ./sock -l :7701 -d ls
4.3.5 Ahora, en otro shell, sitese en el subdirectorio sock-1.1 y cree
un socket cliente ejecutando la orden: (Ver figura No. 11).
redes@Pooh:~/practica/sock-1.1$ ./sock -e :7701
Figura No. 11. Creacin de un socket servidor y cliente
4.3.6 Observe lo que sucede.
En este experimento se ha construido un miniservidor. Lo que hace el
programa es esperar la conexin de un usuario al puerto indicado (7701
en este caso) y cuando el cliente se conecta (mediante la orden sock o el
programa telnet) entonces ejecuta la orden ls que lista el contenido del
directorio y lo enva a travs del socket. Una vez finalizada la orden ls el
servidor corta la conexin del cliente telnet, pero sigue escuchando en
el puerto para atender nuevas peticiones de otros clientes.
Si se sustituye la orden ls por la orden date en el punto 4.3.4 tendr
un miniservidor de fecha y hora.
4.4 El protocolo UDP
Del mismo modo que en los ejemplos anteriores ha utilizado el
protocolo TCP, ahora va a ver cmo se puede enviar informacin
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
6
mediante el protocolo UDP. Para ello mantendr los dos shells que tiene
abiertos.
4.4.1 En un shell cree un socket servidor tecleando lo siguiente:
redes@Pooh:~/practica/sock-1.1$ ./sock -ul :7701
4.4.2 Y en otro shell ejecute la orden: (Ver Figura No. 12).
redes@Pooh:~/practica/sock-1.1$ ./sock -u :7701
Figura No.12. Socket servidor y cliente.
4.4.3 Escriba en el Shell cliente y despus del ENTER observe lo que
sucede en el Shell servidor. (Ver figura No. 13). Realice la prueba
del shell servidor hacia el cliente.
Figura No. 13. Comunicacin entre terminales.
Comente lo que sucede
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
_______________________________________________________________________________
Salga con CTRL + C, en el Shell del cliente.
4.4.4 Ahora en el Shell cliente cambie la orden del paso nmero 4.4.2
por la siguiente: (Ver figura No. 14).
redes@Pooh:~/practica/sock-1.1$ date | ./sock -u :7701
Figura No. 14. Comunicacin entre terminales.
Cmo ve el funcionamiento es bastante similar, pero al carecer UDP del
concepto de conexin no se puede construir un servidor de manera tan
sencilla.
Pero la razn que hace que UDP tenga utilidad para muchas
aplicaciones es su capacidad para hacer difusiones (enviando a la
direccin 255.255.255.255 realmente se enva un datagrama que ser
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
7
recibido por todas las computadoras de la misma red IP). Sin embargo, y
por motivos de seguridad, el uso de esta caracterstica est restringido y
no se emplear en esta prctica.
Una forma de evitar esta restriccin es emplear la direccin IP de
multicast que est configurada en todos sus equipos como si se tratara
de una direccin de difusin.
4.5 Transferencia de archivos
En los ejercicios anteriores ha visto algunos de los usos que nos permite
un socket. Ahora va a utilizar los servicios de TCP y UDP para el envo
de archivos entre dos computadoras.
En el siguiente ejercicio se mostrar cmo transferir un archivo
empleando el programa sock:
4.5.1 Copie una imagen al subdirectorio (por ejemplo dibujo.bmp)
/home/redes/practica/sock-1.1
4.5.2 Ahora va a enviar la imagen tecleando en el Shell emisor (Ver
figura No. 15):
NOTA1: cat es un comando que no puede ser omitido.
NOTA2: dibujo.bmp es el nombre original de la imagen.
redes@Pooh:~/practica/sock-1.1$ ./sock -l :8888 -d 'cat dibujo.bmp'
Figura No.15. Envo de la imagen desde el Shell emisor.
4.5.3 Conctese a la mquina que le indique su profesor con la cuenta
redes desde uno de los Shells tecleando: (Ver figura No. 16).
redes@Pooh:~/practica/sock-1.1$ ssh l redes XX
NOTA: XX se sustituir por la IP de la computadora.
Figura No. 16. Conexin por medio de ssh en el Shell receptor
4.5.4 En el Shell del paso anterior, sitese en el subdirectorio sock-1.1
y teclee: (Ver figura No. 17).
redes@Pinky:~$ cd practica/sock-1.1
redes@Pinky:~/practica/sock-1.1$ ./sock e XX:8888>imagen2.bmp
NOTA: XX se sustituir por la IP de su computadora
Figura No. 17. Recepcin de la imagen en el Shell receptor
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
8
NOTA 2: imagen2.bmp es un segundo nombre para la imagen
4.5.5 Compruebe que el archivo recibido en la mquina con la cual se
conect tiene el mismo tamao que el original, utilice el
comando: ls -la. (Ver figura No. 18).
Figura No.18. Comparacin de los archivos.
En este ejercicio se ha realizado la transferencia del archivo mediante el
protocolo TCP. Su computadora ha quedado a la espera de un cliente en
el paso 4.5.2. Y desde la mquina de al lado se ha conectado como tal
cliente en el paso 4.5.4.
Es interesante resaltar que aunque el archivo resultante tenga el mismo
tamao, eso no garantiza que la transferencia ha tenido xito (y s el
contenido fuera diferente?). Ahora enviar el archivo de vuelta para
poderlo comprobar, pero empleando el protocolo UDP.
Escriba exit en ambos Shells hasta cerrarlos.
4.5.6 Abra un shell, sitese en el subdirectorio sock-1.1 y teclee (Ver
figura No. 19):
redes@Pooh:~$ cd practica/sock-1.1
redes@Pooh:~/practica/sock-1.1$ ./sock -ul :8888>dibujo2.bmp
Figura No.19. Recepcin del archivo
Lo que le prepara para recibir el archivo, -u indica UDP
NOTA: dibujo2.bmp es un tercer nombre para la imagen para
diferenciarlo de los anteriores.
4.5.7 Abra un segundo Shell y conctese con la cuenta redes a la
mquina con la que realiz la conexin anterior desde un shell
tecleando: (Ver figura No. 20).
redes@Pooh:~$ ssh l redes XX
NOTA: XX se sustituir por la IP de la computadora remota.
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
9
Figura No. 20. Conexin por medio de ssh
4.5.8 En el mismo Shell del paso anterior, sitese en el subdirectorio
sock-1.1 y teclee lo siguiente para enviar el archivo: (Ver figura
No. 21).
redes@Pinky:~$ cd practica/sock-1.1
redes@Pinky:~/practica/sock-1.1$ cat imagen2.bmp | ./sock u XX:8888
NOTA: XX se sustituir por la IP de su computadora
Figura No.21. Envo del archivo
4.5.9 A continuacin, finalice la orden del paso 4.5.8 pulsando
<Ctrl>+<c> en el primer shell (asegrese de que la ha
seleccionado primero, haciendo clic con el ratn). (Ver figura
No. 22).
Figura No. 22. Final de la instruccin
4.5.10 Compruebe que los archivos imagen2.bmp (enviado) y
dibujo2.bmp (recibido) son iguales con la orden ls -la. (Ver
figura No. 23).
Figura No. 23. Comparacin de la imagen enviada y recibida
Si ambos archivos son iguales entonces podr concluir que tanto la
transmisin desde su computadora a la de al lado, empleando TCP,
como la vuelta, empleando UDP, no han sufrido errores. Si repite la
operacin con un archivo mayor (por ejemplo, el enunciado de esta
prctica en pdf) encontrar que la transmisin por TCP no tiene
problemas pero la de UDP fallar eventualmente, aunque este punto no
se realizar.
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
10
4.5.11 Cierre el shell que est conectado a la sesin remota. (Ver figura
No. 24).
Figura No. 24. Cierre de la conexin por ssh.
4.5.12 En el otro Shell, borre el subdirectorio sock-1.1, el subdirectorio
practica y cierre el shell.
redes@Pooh:~$ rm rf practica
redes@Pooh:~$ exit
4.5.13 Reinicie el equipo.
5.-Cuestionario
1. De acuerdo con lo visto en el desarrollo de la prctica qu
diferencias sustanciales existen entre TCP y UDP?
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
2. Por qu la conexin iniciada por el socket al servidor slo dura
lo necesario para recibir la informacin requerida?
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
3. Mencione algunos ejemplos de los usos de TCP y UDP
___________________________________________________________________________________
___________________________________________________________________________________
____________________________________________________________________________
6.- Conclusiones.
Revise los objetivos planteados al inicio de la prctica y concluya.
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
UNIVERSIDAD NACIONAL AUTNOMA DE MXICO
Facultad de Ingeniera Laboratorio de Redes y Seguridad
Redes de Datos Prctica 8 Capa 4 Modelo OSI
11
PRCTICA 8
TCP y UDP
Cuestionario Previo
Nombre del alumno:_____________________________________________________________
Gpo. de Laboratorio:__________ Gpo. de Teora:_________
1. Mencione al menos 2 funciones de la capa de transporte del
Modelo OSI
2. Mencione algunos protocolos de transporte (no incluya TCP
ni UDP).
3. Qu es el protocolo de transporte TCP?
4. Qu es el protocolo de transporte UDP?
5. Dibuje un datagrama UDP.
6. Dibuje un segmento TCP.
7. Qu es un socket y qu se necesita para crearlo?
8. Qu es un puerto?
9. Cules son los rangos de puertos existentes?
10. Qu rangos de puertos pueden utilizarse para establecer
comunicaciones?
11. Qu rango de puertos est restringido? Liste 10 de los ms
usados?
12. Qu es el modelo cliente servidor?