PDF de programación - PRÁCTICA 2: MANUAL DE SOCKETS EN C

Imágen de pdf PRÁCTICA 2: MANUAL DE SOCKETS EN C

PRÁCTICA 2: MANUAL DE SOCKETS EN Cgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 4 de Enero del 2018)
863 visualizaciones desde el 4 de Enero del 2018
872,8 KB
39 paginas
Creado hace 3a (20/09/2016)
ARQUITECTURA DE REDES

Laboratorio

PRÁCTICA 2: MANUAL DE SOCKETS EN C

Grado en Ingeniería Informática
Curso 2016/17

Laboratorio de Arquitectura de Redes







ÍNDICE


1. INTRODUCCIÓN .......................................................................... 3
1.1 La familia de protocolos TCP/IP. ................................................ 3
1.2 Nivel de red (IP). ......................................................................... 3
1.3 Nivel de transporte (TCP, UDP). ................................................ 4
2. SOCKETS EN C ........................................................................... 4
2.1. Conceptos básicos. ................................................................... 4
2.2 Dominios de comunicación. ....................................................... 6
2.3 Tipos de sockets. ........................................................................ 7
2.4 Ordenación de los bytes. ............................................................ 7
2.5 Servicio orientado a conexión (TCP) ......................................... 8
2.5.1 El modelo utilizado ................................................................... 8
2.5.2 Resumen de llamadas al sistema. .......................................... 9
2.6. Creación de un socket ............................................................... 10
2.6.1 Estructuras de datos ............................................................... 11
2.6.2 Asociación de un socket a unos parámetros determinados... 12
2.6.3 Habilitar un socket para recibir peticiones de conexión.......... 14
2.6.4 Aceptar peticiones de conexión ............................................ 14
2.6.5. Lanzar peticiones de conexión ............................................. 16
2.6.6 Conexión entre los sockets del cliente y servidor.................. 17
2.6.7 Enviar y recibir datos a través de un socket TCP.................. 17
2.6.8 Cierre de un socket .................................................................. 19
2.7 Diagrama de estados de una conexión TCP............................. 20
2.8 Servicio no orientado a conexión (UDP)..................................... 21
2.8.1 El modelo utilizado ................................................................... 21
2.8.2 Enviar y recibir datos a través de un socket UDP................. 22
3. OTRAS FUNCIONALIDADES...................................................... 24
3.1 Función gethostname.................................................................. 24
3.2 Creación de un proceso hijo Función fork.................................. 25
3.3 Servidores TCP concurrentes y secuenciales............................ 26
3.4 Servidores UDP concurrentes y secuenciales........................... 27
4. EJEMPLO...................................................................................... 28
4.1 Introducción.................................................................................. 28
4.2 Descripción del programa Servidor............................................. 28
4.3 Descripción del programa Cliente............................................... 31
4.4 Descripción de Servidor concurrente y secuencial..................... 33
4.5 Listados completos de código..................................................... 36
4.6 Bibliografía………………………………………………………… 39





- 2 -



1. INTRODUCCIÓN

1.1 La familia de protocolos TCP/IP.

Laboratorio de Arquitectura de Redes

La familia de protocolos TCP/IP fue creada a finales de los años 60 cuando aún no se
había definido el modelo OSI. Consta de una serie de protocolos que cubren todos los
niveles OSI uniendo varios de ellos.

Figura 1-1: Familia TCP/IP y niveles OSI



 Los niveles 5-7 de OSI se incluyen dentro de los servicios al usuario ofrecidos

por la familia TCP/IP:

 El nivel 4 se corresponde con Transmission Control Protocol (TCP) y User
Datagram Protocol (UDP) que cubren el nivel de transporte dando servicios con
caracteristicas distintas.



Internet Protocol (IP): se corresponde con el nivel 3 de red de OSI.

 Data Link Layer, cubre los niveles 1 y 2 de OSI. Existen multitud de protocolos
usados por TCP/IP ya que también existen muchos canales físicos de
comunicación que permiten la conexión entre dos máquinas: líneas telefónicas,
Ethernet, token ring, línea serie...



1.2 Nivel de red (IP).

El protocolo IP de nivel de red nos proporciona un servicio sin conexión y no seguro
(connectionless, datagram service).

Para comprender qué es un servicio sin conexión lo compararemos con el servicio
postal. Cada mensaje lleva consigo las direcciones completas de origen y destino, por
lo que cada uno de ellos se puede encaminar de forma independiente a través del

- 3 -


sistema. Al igual que en correos, un mensaje puede sufrir ciertos retardos
independientes del resto de mensajes por lo que dos mensajes con el mismo origen y
destino pueden recibirse en distinto orden a como se enviaron.

Laboratorio de Arquitectura de Redes

No es un servicio seguro ya que no garantiza que todos los mensajes lleguen a su
destino o que lleguen correctamente. Esta será tarea de los niveles superiores.


1.3 Nivel de transporte (TCP, UDP).

La familia TCP/IP nos ofrece dos protocolos de nivel de transporte TCP y UDP. La
diferencia fundamental es que mientras TCP es un servicio orientado a la conexión
(connection-oriented, stream service), y UDP no lo es. Por tanto en TCP, un proceso
que desea comunicarse con otro debe establecer una conexión y una vez terminada
la comunicación debe romper esa conexión.

TCP acepta mensajes de longitud arbitrariamente grandes, que deberá separar en
pedazos (segmentación) que no excedan de los 64Kbytes (máximo aceptado por IP),
enviándolos como mensajes separados. Como IP no garantiza el orden de los
mensajes, es trabajo de TCP reensamblar de forma correcta los submensajes antes
de entregar el mensaje completo y libre de errores al destinatario.

Además utiliza números de 16 bits para identificar varios destinos dentro de una
misma máquina. Son los llamados puertos". Un proceso que quiera contactar con otro
de una máquina remota debe conocer además de la dirección Internet de la otra
máquina, el número de puerto en el que el otro proceso está escuchando.

Un servicio UDP por otro lado, ofrece en esencia lo mismo que el protocolo IP de nivel
3, con dos diferencias fundamentales:


1. Ofrece la posibilidad de detección de errores (pero se puede perder un

mensaje entero y UDP no nos avisará).

2. Al

igual que TCP, gestiona números de puerto permitiendo varias

comunicaciones simultáneas en una misma máquina.




2. SOCKETS EN C

2.1. Conceptos básicos.

Los sockets son una de las herramientas que ofrecen los Sistemas Operativos para la
comunicación entre diferentes procesos. La particularidad que tienen frente a otros
mecanismos de comunicación entre procesos (IPC – Inter-Process Communication)
es que posibilitan la comunicación aún cuando ambos procesos estén corriendo en
distintos sistemas unidos mediante una red. De hecho, el API de sockets es la base
de cualquier aplicación que funcione en red puesto que ofrece una librería de
funciones básicas que el programador puede usar para desarrollar aplicaciones en
red.





- 4 -

Laboratorio de Arquitectura de Redes


Este API permite la comunicación sobre una gran variedad de redes, pero en este
manual nos concentraremos en su uso sobre redes TCP/IP.

Los sockets para TCP/IP permiten la comunicación de dos procesos que estén
conectados a través de una red TCP/IP. En una red de este tipo, cada máquina está
identificada por medio de su dirección IP que debe ser única. Sin embargo, en cada
máquina pueden estar ejecutándose múltiples procesos simultáneamente. Cada uno
de estos procesos se asocia con un número de puerto, para poder así diferenciar los
distintos paquetes que reciba la máquina (proceso de multiplexación).

Un socket se identifica unívocamente por la dupla dirección IP + número de puerto.
Una comunicación entre dos procesos se identifica mediante la asociación de los
sockets que estos emplean para enviar y recibir información hacia y desde la red:
identificador de socket origen + identificador de socket destino.


Figura 2-1: Comunicación entre aplicaciones en una red TCP/IP





Un socket es una abstracción a través de la cual una aplicación puede enviar y recibir
información de manera muy similar a como se escribe y lee de un fichero. La
información que una aplicación envía por su socket origen puede ser recibida por otra
aplicación en el socket destino y viceversa.

Existen diferentes tipos de sockets dependiendo de la pila de protocolos sobre la que
se cree dicho socket. Nos centraremos en la pila de protocolos TCP/IP.



- 5 -





Laboratorio de Arquitectura de Redes

Figura 2-2: Interfaz de sockets



En este manual se verá como se le pueden asociar estos parámetros a los sockets
creados.



Figura 2-3: Sockets, protocolos y puertos



La Figura 2-3 muestra la relación lógica entre aplicaciones, sockets, protocolos y
puertos en un dispositivo. Hay varios aspectos a destacar en esta relación. Primero, un
programa puede usar más de un socket al mismo tiempo. Segundo, diferentes
programas pueden usar el mismo socket al mismo tiempo aunque esto es menos
común. Como se muestra en la Fi
  • Links de descarga
http://lwp-l.com/pdf8199

Comentarios de: PRÁCTICA 2: MANUAL DE SOCKETS EN C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad