⏮ Más apuntes

Resumen RC2

- 21 Jan 2020

Protocolos de aplicación

Arquitecturas de Red

Cliente servidor

Servidor:

Cliente:

Peer to peer (P2P)

Híbridas P2P - C/S

QoS en la comunicación entre procesos

TCP UDP
Orientado a conexión cada parte fija IP y puertos durante el establecimiento de la conexión. No orientado a conexión Cada parte especifica IP y puerto de destino cada vez que envía datos (uso de sendto y recvfrom)
Transferencia confiable se garantiza la llegada de toda la información en orden. Transferencia no confiable no se garantiza nada
Control de flujo el emisor no sobrecarga al receptor No hay control de flujo el emisor no sabe como está el receptor
No provee garantías de ancho de banda No provee garantías de ancho de banda, pero la transferencia de mensajes cortos suele ser más rápida (DNS).

API de sockets en C

Todo apartato que se conecte a la red utilizará estas dos funciones

En este punto un cliente UDP ya está listo para enviar con sendto(fd, data, data_len, flags, dest_addr, dest_addr_len) y recibir con recvfrom(fd, buf, buflen, flags, source_addr, source_addr_len).

Un servidor UDP solo tendría que hacer listen(fd, queue_size) y proceder a recibir datos como un cliente (utilizar recvfrom).

Un cliente TCP tendría que conectarse con connect(fd, dest_addr, dest_addr_len) y luego ya podría enviar y recibir bytes como si de un fichero se tratara con read y write o con send y recv.

Un servidor TCP tendría que esperar conexiones con accept(fd, source_addr, source_addr_len) que es bloqueante.

Tanto cliente como servidor cierran conexiones con close(fd).

Arquitectura de servidores

Protocolos con arquitectura Cliente/Servidor

Protocolo Puerto(s) Uso
HTTP/HTTPS 80/443 seguro Páginas web
SSH 22 Terminal remota
FTP 21 (control) / otro (datos) Transferencia de archivos
SMTP 25 Envío de correo (servidor - servidor)
IMAP 143/993 seguro Consulta de correo (cliente - servidor)
POP3 110/995 seguro Consulta de correo (cliente - servidor)
DNS 53 Traducción dominios -> IPs
DHCP 67 servidores / 68 clientes Gestión de redes LAN (asignación de IPs dinámicas, configuración de DNS, gateways…)

Protocolos con arquitectura P2P (peer to peer)

Protocolo Puerto(s) Uso
BitTorrent aleatorios Transferencia de archivos
Chord Tablas hash distribuidas

HTTP

Formato de la cabecera de petición:

VERB /resource?query_string HTTP/VERSION\r\n
Header-Name: header-value\r\n
[more headers]\r\n
\r\n

Como mínimo es necesario enviar las cabeceras de Host y Allow.

Formato de la cabecera de respuesta:

HTTP/VERSION STATUS-CODE STATUS-MESSAGE\r\n
Header-Name: header-value\r\n
[more headers]\r\n
\r\n

Como mínimo es necesario incluir la cabecera Content-Type y suelen enviarse además Last-Modified, Server, Date y Content-Length.

FTP

SMTP

POP3 e IMAP

DNS

Criptografía y seguridad

Cifrados simétricos

Tipos de cifrados

Ejemplos de cifrados

Ejercicios sobre cifrados en bloque

Cifrados asimétricos

RSA

Atención: si queremos comunicación bidireccional cada agente tiene su par de claves.

Mecanismos para la compartición de claves

PKI

Problema que soluciona: un agente (empresa, máquina o individuo) quiere compartir su clave pública de manera que los destinatarios puedan estar seguros de que dicha clave le pertenece.

  1. La entidad genera un par de claves RSA.

  2. La entidad crea un CSR (= certificate signing request) que incluye su clave pública y metadatos que permiten identificarla (nombre de la entidad, país, etc.) y lo envía a una RA (= registratión authority)

  3. La RA realiza la verificación de identidad pertinente (por ejemplo, comprueba la identidad de un individuo con el DNI). En caso de éxito, envía el CSR a la CA (= certification authority).

  4. La CA crea un certificado X.509 que contiene los metadatos, la clave pública, fechas de expiración y su firma digital. Como los usuarios confían en la CA, una firma digital válida indica que la clave pública en efecto pertenece al agente que describen los metadatos. La CA envía el certificado al agente solicitante.

  5. El agente solicitante facilita su certificado a los usuarios que quieran comunicarse con él de manera que la compartición de claves conlleva autenticación.

Puntos de fallo y soluciones

Nota: en la práctica, las tres authorities suelen ser la misma.

Nota 2: cualquiera puede crear una CA (útil para certificados internos en empresas), la cosa está en que todo el mundo confíe en ella.

Seguridad de contraseñas

Gestión de contraseñas por parte de usuarios

Gestión de contraseñas por parte de servidores

Seguridad en redes

TLS = Transport Layer Security

SSH = Secure Shell

Firewalls

descripción action protocol source IP dest IP source port dest port flag bit check connection
prohibir conexiones entrantes en el puerto 80 (HTTP) allow TCP * * * 80 * -
permitir tráfico entrante UDP desde dentro de una subred allow UDP 169.72.23.0/24 * * * * -
denegar tráfico saliente SMTP desde un equipo de la LAN deny TCP 10.0.2.23 * * 25 * -
denegar tráfico entrante a una subred que vaya dirigido a puertos protegidos deny * * 10.0.2.0/24 * < 1024 * -
última regla que deniega el tráfico no permitido explícitamente deny * * * * * * -

  1. https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_(CBC)