Redes de Computadoras: Puertos, Direcciones IP, Protocolos, Formatos de Trama y Cabeceras
Redes de Computadoras: Referencia Técnica de Protocolos y Formatos
Esta referencia recoge los principales números de puerto, rangos de direcciones IP, formatos de tramas y cabeceras de los protocolos más utilizados en redes de computadoras.
Números de puertos conocidos (0-1023)
- FTP: TCP, control 21, datos 20
- TELNET: TCP 23
- SMTP: TCP 25
- HTTP: TCP 80
- DNS: suele usar UDP 53
- SNMP: suele usar UDP 161 (trap 162)
- DHCP: UDP, servidor 67, cliente 68
- RIP: UDP 520
- POP3: TCP 110
- IMAP4: TCP 143
- SIP: 5060 (TCP/UDP/SCTP), 5061 (TLS)
- BGP: TCP 179
Rangos de direcciones IP
- Clase A: 0.0.0.0 a 127.255.255.255
- Clase B: 128.0.0.0 a 191.255.255.255
- Clase C: 192.0.0.0 a 223.255.255.255
- Clase D: 224.0.0.0 a 239.255.255.255
- Clase E: 240.0.0.0 a 247.255.255.255
Direcciones privadas
- Clase A: 10.0.0.0 a 10.255.255.255
- Clase B: 172.16.0.0 a 172.31.255.255
- Clase C: 192.168.0.0 a 192.168.255.255
Formato Ethernet
DirDestino (6 bytes) | DirOrigen (6 bytes) | Tipo (2 bytes) | Datos (46-1500 bytes) | CRC (4 bytes)
- Tipo 0800 (2 bytes): Datagrama IP (46-1500 bytes)
- Tipo 0806 (2 bytes): Petición/respuesta ARP (28 bytes), PAD (18 bytes)
- Tipo 0835 (2 bytes): Petición/respuesta RARP (28 bytes), PAD (18 bytes)
Formato 802.2/802.3
802.3 MAC | 802.2 LLC | 802.2 SNAP | datos | CRC
DirDestino (6 bytes) | DirOrigen (6 bytes) | Longitud (2 bytes) | DSAP 0xAA (1 byte) | SSAP 0xAA (1 byte) | Control 0x03 (1 byte) | OrgCode 0x000000 (3 bytes) | Tipo (2 bytes) | Datos (38-1492 bytes) | CRC (4 bytes)
- Tipo 0800 (2 bytes): Datagrama IP (38-1492 bytes)
- Tipo 0806 (2 bytes): Petición/respuesta ARP (28 bytes), PAD (10 bytes)
- Tipo 0835 (2 bytes): Petición/respuesta RARP (28 bytes), PAD (10 bytes)
Formato de tramas SLIP
Cabecera de 40 bytes (20 bytes de cabecera IP y 20 bytes de cabecera TCP). CSLIP: 3 a 5 bytes.
- END: 0xC0
- SLIP ESC: 0xDB
- Datos 0xC0 se codifican como 0xDB, 0xDC
- Datos 0xDB se codifican como 0xDB, 0xDD
Formato de tramas PPP
Flag 7E (1 byte) | Dirección FF (1 byte) | Control 03 (1 byte) | Protocolo (2 bytes) | Datos (hasta 1500 bytes) | CRC (2 bytes) | Flag 7E (1 byte)
- Protocolo 0021: Datagrama IP
- Protocolo C021: Datos de control de enlace
- Protocolo 8021: Datos de control de red
Línea síncrona: se inserta un cero tras cada cinco unos seguidos.
Línea asíncrona: el byte 0x7D actúa como carácter de escape; el carácter siguiente debe tener el sexto bit complementado.
MTU típicas (bytes)
- Hyperchannel: 65535
- Token Ring de 16 Mbits/s: 17914
- Token Ring de 4 Mbits/s: 4464
- FDDI: 4352
- Ethernet: 1500
- IEEE 802.2/802.3: 1492
- X.25: 576
- PPP: 296
Formato ARP
[Cabecera Ethernet, con DirDestino = broadcast]
Tipo de dirección física (2 bytes) [Ethernet = 1] | Tipo de dirección de red [IP = 0x0800] (2 bytes) | Tamaño dirección física (1 byte) [Ethernet = 6] | Tamaño dirección de red (1 byte) [IP = 4] | Tipo de mensaje (2 bytes) [01 = petición ARP, 02 = respuesta ARP, 03 = petición RARP, 04 = respuesta RARP] | Dirección física del origen (6 bytes) | Dirección de red del origen (4 bytes) | Dirección física del destino (6 bytes) | Dirección de red del destino (4 bytes)
Direcciones multicast reservadas
- 224.0.0.1: todas las estaciones de una subred
- 224.0.0.2: todos los routers de una subred
- 224.0.0.5: todos los routers con OSPF
Direcciones físicas multicast: 01:00:5E:00:00:00 a 01:00:5E:7F:FF:FF. Los 23 bits menos significativos de la dirección física corresponden a los 23 bits menos significativos del grupo multicast.
Formato de la cabecera IP
- Versión (4 bits): IPv4 = 4
- Longitud de cabecera (4 bits): 5-15 (número de palabras de 32 bits)
- TOS (8 bits): 3 bits de precedencia; el bit restante a cero
- Longitud total (16 bits): máximo 65535 bytes, normal 8192 bytes, mínimo 576 bytes
- Identificación (16 bits): identifica los fragmentos de un mismo datagrama
- Flags (3 bits): 0, DF (no fragmentar), MF (más fragmentos)
- Desplazamiento del fragmento (13 bits): múltiplo de 8
- TTL (8 bits): normalmente 32-64
- Protocolo (8 bits): 1 = ICMP, 2 = IGMP, 6 = TCP, 17 = UDP, 89 = OSPF
- Checksum de cabecera (16 bits)
- Dirección IP origen y destino (32 bits cada una)
- Opciones (máximo 40 bytes, múltiplo de 32 bits, rellenado con ceros)
Opciones de la cabecera IP
Byte de tipo: bit 0 = flag de copia; bits 1-2 = clase de opción (0 control de red, 1 depuración y medida); bits 3-7 = número de opción.
- Fin de lista: valor 0, copia 0, clase 0, número 0
- Sin operación: valor 1, copia 0, clase 0, número 1
- Ruta en origen estricta: valor 137, copia 1, clase 0, número 9
- Ruta en origen vaga: valor 131, copia 1, clase 0, número 3
- Registro de ruta: valor 7, copia 0, clase 0, número 7
- Marca de tiempo: valor 68, copia 0, clase 2, número 4
- Seguridad: valor 130, copia 1, clase 0, número 2
Codificación de ruta en origen estricta (137): tamaño, puntero, lista de direcciones.
Codificación de ruta en origen vaga (131): tamaño, puntero, lista de direcciones.
Codificación de registro de ruta (7): tamaño, puntero, lista de direcciones.
Codificación de marcas de tiempo (68): tamaño, puntero (incremento de 4), desbordamiento, flag. Flag = 0: solo marcas de tiempo; flag = 1: se guardan dirección IP y tiempo (puntero += 8); flag = 3: dirección IP escrita en origen.
Mensajes ICMP
Tipo (1 byte) | Código (1 byte) | Checksum (2 bytes) | Datos
| Tipo | Código | Descripción | Error |
|---|---|---|---|
| 17 | 0 | Solicitud de máscara de red | No |
| 18 | 0 | Respuesta de máscara de red | No |
| 4 | 0 | Respuesta de marca de tiempo | No |
| 13 | 0 | Solicitud de marca de tiempo | No |
| 12 | Varios | Problemas con parámetros | Sí |
| 11 | Varios | Plazo de tiempo excedido | Sí |
| 10 | 0 | Solicitud de ruta | No |
| 9 | 0 | Aviso de ruta | No |
| 8 | 0 | Solicitud de eco | No |
| 5 | Varios | Redirección | Sí |
| 4 | 0 | Source quench | Sí |
| 3 | Varios | Destino inalcanzable | Sí (3/4: fragmentation needed but don't-fragment bit set) |
| 0 | 0 | Respuesta de eco | No |
Redirección: Tipo = 5 | Código | Checksum | Dirección IP del encaminador | Cabecera IP y 8 bytes de datos.
Petición y respuesta de eco: Tipo [petición = 8, respuesta = 0] | Código | Checksum | Identificador (2 bytes) | Número de secuencia (2 bytes) | Datos.
Plazo de tiempo excedido: Tipo = 11 | Código [tránsito = 0, reensamblado = 1] | Checksum | No usado (2 bytes) | Cabecera IP y 8 bytes de datos.
Formato de tramas UDP
Puerto origen (2 bytes, opcional) | Puerto destino (2 bytes) [RIP = 520] | Tamaño (2 bytes) | Checksum (2 bytes, opcional) | Datos (normal = 512 bytes, API = 8192 bytes, límite IP = 65507 bytes)
Formato RIPv1 (máximo 16 saltos)
Comando [1 = petición, 2 = respuesta] (1 byte) | Versión = 1 (1 byte) | 0 (2 bytes) | Familia de direcciones [2 = IP, 0 = vacío] (2 bytes) | 0 (2 bytes) | Dirección IP (4 bytes) | 0 (4 bytes) | 0 (4 bytes) | Métrica (4 bytes). Hasta 25 rutas.
Formato RIPv2 (multicast a 224.0.0.9)
Comando [1 = petición, 2 = respuesta] (1 byte) | Versión = 2 (1 byte) | Dominio de encaminamiento (2 bytes) | Familia de direcciones (2 bytes) [2 = IP, 0xFFFF = contraseña en claro (16 bytes)] | Marca de ruta (2 bytes) [identificador AS, compatibilidad BGP] | Dirección IP (4 bytes) | Máscara de subred (4 bytes) | IP del siguiente router (4 bytes) | Métrica (4 bytes). Hasta 25 rutas.
OSPF y BGP
- OSPF: IP con TOS = 0000, precedencia de control de internetwork, multicast 224.0.0.5.
- BGP: mensajes OPEN, UPDATE, KEEPALIVE y NOTIFICATION.
Formato de tramas TCP
Puerto origen (2 bytes) | Puerto destino (2 bytes) | Número de secuencia (4 bytes) [el primero = ISN + 1] | Número de asentimiento (4 bytes) [requiere ACK = 1] | Longitud de cabecera (4 bits) | Reservado (6 bits) | Flags: URG, ACK, PSH, RST, SYN, FIN | Tamaño de ventana (2 bytes) [máximo = 2^16] | Checksum TCP (2 bytes) | Puntero urgente (2 bytes) | Opciones (si las hay) | Datos (si los hay)
Opciones TCP
- Fin de lista de opciones: Tipo = 0
- No operación: Tipo = 1
- Tamaño máximo del segmento (MSS): Tipo = 2, Longitud = 4, MSS (2 bytes)
- Factor de escala de ventana: Tipo = 3, Longitud = 3, ShiftCount (1 byte)
- Marcas de tiempo: Tipo = 8, Longitud = 10, Valor (4 bytes), Respuesta de eco (4 bytes)
Cálculo del RTT (tiempo de ida y vuelta)
- RTT paso bajo: RTT = 0.9 × RTT_anterior + 0.1 × M
- RTT según RFC: RTO = 2 × RTT
- Algoritmo de Jacobson: RTT es la media y D la varianza. Inicialmente D_anterior = 1,5 s y RTT_anterior = 0.
Err = M − RTT_anterior
RTT = RTT_anterior + 0.125 × Err
D = D_anterior + 0.25 × (|Err| − D_anterior)
RTO = RTT + 4 × D
Formato de DNS
Identificación (2 bytes) | Flags (2 bytes) | Número de preguntas (2 bytes) | Número de RR de respuesta (2 bytes) | Número de RR de autoridad (2 bytes) | Número de RR adicionales (2 bytes) | Preguntas | Respuestas | Autoridad | Información adicional
Flags DNS
- QR (1 bit): petición = 0, respuesta = 1
- OPCODE (4 bits): normal = 0, inversa = 1
- AA (1 bit): respuesta con autoridad
- TC (1 bit): respuesta truncada (primeros 512 bytes)
- RD (1 bit): uso recursivo = 1, iterativo = 0
- RA (1 bit): recursivo permitido = 1, prohibido = 0
- RCODE (4 bits): sin error = 0, host o dominio inexistente = 3
Pregunta DNS
Nombre de la pregunta (variable) | Tipo de pregunta (2 bytes) | Clase de pregunta (2 bytes) [1 = Internet]
Tipos: A (1) dirección IP; NS (2) servidor de nombres; CNAME (5) nombre canónico (alias); PTR (12) nombre asociado a una dirección IP; HINFO (13) información del host; MX (15) intercambiador de correo; ALL (255) todos los RR disponibles.
Respuesta DNS
Nombre del dominio (variable) | Tipo (2 bytes) | Clase (2 bytes) | TTL en segundos (4 bytes) | Longitud (2 bytes) | Datos (variable)
Mensaje completo: cabecera DNS, pregunta, respuesta 1, respuesta 2, respuesta 3...
Códigos de respuesta SMTP
- 1yz: respuesta positiva preliminar
- 2yz: respuesta positiva completa
- 3yz: respuesta positiva intermedia
- 4yz: respuesta negativa transitoria
- 5yz: respuesta negativa permanente
- x0z: sintaxis
- x1z: información o ayuda
- x2z: conexión o sesión
- x5z: sistema de correo
Módulo MIB-II
| Grupo | Función | Número de objetos |
|---|---|---|
| SNMP | Protocolo SNMP | 30 |
| EGP | Protocolo EGP | 18 |
| UDP | Protocolo UDP | 7 |
| TCP | Protocolo TCP | 19 |
| ICMP | Protocolo ICMP | 26 |
| IP | Protocolo IP | 38 |
| AT | Traducción de direcciones | 3 |
| Interfaces | Interfaces de red (tarjetas de red) | 23 |
| System | Información básica del sistema | 7 |
Mensajes SNMP
Petición/respuesta: Versión | Comunidad | Tipo de PDU | ID de solicitud | Status Error | Índice de error | Lista nombre-valor
Trap: Versión | Comunidad | Tipo de PDU | Enterprise | Dirección del agente | Tipo de trap | Trap específico | Time stamp | Lista nombre-valor
- Versión: 0 para SNMPv1, 1 para SNMPv2, 2 para SNMPv2c, 3 para SNMPv3
- Comunidad: contraseña de acceso en SNMPv1 y v2c
- Tipo de PDU: indica el tipo de mensaje (set, get, get-next...)
- ID de solicitud: relaciona la solicitud con su respuesta
- Status Error: 0 en la solicitud; distinto de 0 en respuestas con fallo
- Índice de error: 0 en la solicitud; índice de la variable que causó el fallo
- Lista objeto-valor: en get o get-next los valores son NULL
- Mensaje set: si falla una variable, falla la petición completa
Mensajes DHCP
OP Code (1 byte) [solicitud = 1, respuesta = 2] | Tipo de hardware (1 byte) [Ethernet = 1, 802 = 6] | Longitud de dirección física (1 byte) | Saltos (1 byte) | Identificador de transacción (4 bytes) | Tiempo en segundos (2 bytes) | Flags (2 bytes) [bit 15 = difusión] | IP del cliente (4 bytes) | IP asignada (4 bytes) | IP del servidor DHCP (4 bytes) | IP del router (4 bytes) | Dirección física del cliente (16 bytes) | Nombre del servidor (64 bytes) | Nombre del archivo de arranque (128 bytes) | Opciones (312 bytes)
Comandos Telnet
Un comando consta de 0xFF (IAC) seguido de uno o más bytes de código. Para enviar el dato 0xFF se envían dos 0xFF.
- Erase Character (EC): 247
- Erase Line (EL): 248
- Abort Output (AO): 245
- Go Ahead (GA): 249
- Are You There (AYT): 246
- Pause (BRK): 243
- Interrupt Process (IP): 244
- Data Mark (DM): 242
- Option Negotiation WILL: 251
- Option Negotiation WONT: 252
- Option Negotiation DO: 253
- Option Negotiation DONT: 254
- Sub-option Begin (SB): 250
- Sub-option End (SE): 240
Negociación de opciones
- 0: transmisión binaria
- 1: eco
- 3: suprimir Go Ahead
- 5: status
- 6: marca de tiempo
- 24: tipo de terminal
- 31: tamaño de la ventana (filas × columnas)
- 33: control de flujo remoto
- 34: modo línea
- 37: autenticación
Comandos FTP
ABOR, USER, PASS, TYPE, MODE, STRU, QUIT, SYST, REIN, PORT, LIST, CWD, PWD, RMD, MKD, DELE, RETR, STOR, APPE, STAT, HELP
Respuestas FTP
- 1xx: inicio de una acción con éxito
- 2xx: comando realizado con éxito
- 3xx: respuesta intermedia con éxito
- 4xx: errores transitorios
- 5xx: errores permanentes
HTTP
Cada línea termina en CR/LF. Se utiliza ISO Latín-1 de 8 bits.
- Petición: request-line, cabeceras (0 o más), cuerpo (solo en POST)
- Request-line: método URI versión HTTP
- Métodos: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
- Respuesta: status-line, cabeceras (0 o más), cuerpo
- Status-line: versión HTTP código de respuesta frase de respuesta
Campos de cabecera
- WWW-Authenticate: respuesta
- User-Agent: petición
- Server: respuesta
- Referer: petición
- Pragma: respuesta y petición
- MIME-Version: respuesta y petición
- Location: respuesta
- Last-Modified: body
- If-Modified-Since: petición
- From: petición
- Expires: body
- Date: respuesta y petición
- Content-Type: body
- Content-Length: body
- Content-Encoding: body
- Authorization: petición
- Allow: body
Códigos de respuesta
- 1xx: no se utiliza
- 200-204: éxito
- 301-304: redirección; el cliente debe realizar más acciones
- 400-404: error del cliente
- 500-503: error del servidor
Formato de mensajes RTP
Versión (2 bits) | Padding (1 bit) | Extensión (1 bit) | CC (4 bits) [número de fuentes] | Marker (1 bit) | Payload Type (7 bits) | Número de secuencia (2 bytes) | Timestamp (4 bytes) | Identificador de fuente de sincronización SSRC (4 bytes). Cabecera básica de 12 bytes. Después: identificadores CSRC (4 bytes cada uno), extensión de cabecera (4 bytes), carga útil (audio, vídeo...).
SIP
Peticiones
INVITE, ACK, BYE, CANCEL, OPTIONS, REGISTER
Respuestas
- Provisionales (1xx): informativas (trying, ringing, forwarded, queued...)
- Finales (terminan la transacción):
- Éxito (2xx): OK
- Redirección (3xx): moved permanently, moved temporarily...
- Fallo de la petición (4xx): bad request, unauthorized, timeout, busy here, user not found...
- Fallo del servidor (5xx): not implemented, version not supported...
- Fallo global (6xx): busy everywhere, user does not exist anywhere, session not acceptable...
IPv6: prefijos asignados
| Asignación | Prefijo (binario) | Inicio | Máscara (bits) | Espacio utilizado |
|---|---|---|---|---|
| Reservado | 0000 0000 | 0:: | 8 | 1/256 |
| NSAP | 0000 001 | 200:: | 7 | 1/128 |
| IPX | 0000 010 | 400:: | 7 | 1/128 |
| Global unicast agregable | 001 | 2000:: | 3 | 1/8 |
| Local al enlace (unicast) | 1111 1110 10 | FE80:: | 10 | 1/1024 |
| Local al sitio (unicast) | 1111 1110 11 | FEC0:: | 10 | 1/1024 |
| Multicast | 1111 1111 | FF00:: | 8 | 1/256 |
Unicast
FP (3 bits) [001] | TLA ID (13 bits) [nivel más alto] | RES (8 bits) | NLA ID (24 bits) [proveedores] | SLA ID (16 bits) [organizaciones] | Interface ID (64 bits) [interfaz del nodo]
Multicast
FP (8 bits) [1111 1111] | Flags (4 bits) [permanente / transitoria] | Scope (4 bits) [ámbito] | Group ID (112 bits) [grupo multicast]
Cabecera IPv6
Versión (4 bits) [6] | Traffic Class (8 bits) [prioridad] | Flow Label (20 bits) | Payload Length (2 bytes) [>64 kB = 0] | Next Header (1 byte) | Hop Limit (1 byte) | Dirección origen (16 bytes) | Dirección destino (16 bytes)
Cabecera de encaminamiento (routing)
Next Header (1 byte) | Hdr Len (1 byte) | Type (1 byte) | Addrs Left (1 byte) | Reserved (4 bytes) | Address 1 (16 bytes) ... Address N (16 bytes)
Cabecera de fragmento
Next Header (1 byte) | Reserved (1 byte) | Fragment Offset, reserved, More Fragments (2 bytes) | Fragment Id (4 bytes)
Otras cabeceras de extensión
- Autenticación: autentica al emisor del paquete y comprueba la integridad del mismo.
- ESP (Encapsulating Security Payload): carga útil de seguridad cifrada. Se cifra todo lo que sigue a esta cabecera.
- Opciones de destino: similares a hop-by-hop, pero solo son examinadas por la interfaz de destino.