HyperText Transfer Protocol#

Puertos que utiliza en la capa de transporte#

http             80/tcp     www
https           443/tcp

URL - Uniform Resource Locator#

Es un identificador global que ayuda a ubicar un recurso en una red. Los elementos especificados entre corchetes ([ y ]) son opcionales.

protocolo:[//[usuario[:contraseña]@]servidor[:puerto]][/ruta][?argumentos][#fragmento]

Una URL se compone de los siguientes elementos:

  abcde://usuario:contraseña@example.com:12345/ruta/hacia/recurso?arg=valor#identificador
  └─┬─┘   └────────┬───────┘ └────┬────┘ └─┬─┘└────────┬────────┘ └───┬───┘ └─────┬─────┘
protocolo   autenticación     servidor  puerto       ruta           args      fragmento
Elemento Descripción
Protocolo Identifica el protocolo a utilizar para la transmisión y recepción de datos
Autenticación (*) Especifica las credenciales que deben ser enviadas para tener acceso al recurso
Servidor Nombre de host, nombre DNS o dirección IP del servidor que hospeda el recurso
Puerto (*) Puerto de conexión donde el servicio está en escucha
Ruta Ruta donde se ubica el recurso
Argumentos (*) Argumentos necesarios para obtener y desplegar el recurso solicitado
Fragmento (*) Identificador utilizado para hacer referencia a una parte específica del documento solicitado

*: Opcional

Petición HTTP (request)#

Son los datos que el cliente envía al servidor para solicitar el recurso

Respuesta HTTP (response)#

Son los datos que el servidor envía al cliente para entregar el recurso solicitado

Cabecera y cuerpo#

Métodos HTTP#

Método Descripción
OPTIONS Muestra los métodos disponibles en el servidor
HEAD Pide que el servidor únicamente regrese las cabeceras asociadas a la respuesta de la petición
GET Pide un recurso y el servidor lo envía
POST Manda información al servidor utilizando formularios para establecer los parámetros y valores que se enviarán
Método Petición Respuesta
OPTIONS Cabeceras Cabeceras (Allow)
HEAD Cabeceras Cabeceras
GET Cabeceras Cabeceras y Cuerpo
POST Cabeceras y Cuerpo Cabeceras y Cuerpo
$ curl -v# 'http://www.example.com/'
* Hostname was NOT found in DNS cache
*   Trying 93.184.216.34...
* Connected to www.example.com (93.184.216.34) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.38.0
> Host: www.example.com
> Accept: */*
> 
< HTTP/1.1 200 OK
< Cache-Control: max-age=604800
< Content-Type: text/html
< Date: Thu, 01 Mar 2018 12:13:14 GMT
< Etag: "1541025663+ident"
< Expires: Thu, 07 Mar 2018 15:16:17 GMT
< Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
* Server ECS (ftw/FBE4) is not blacklisted
< Server: ECS (ftw/FBE4)
< Vary: Accept-Encoding
< X-Cache: HIT
< Content-Length: 1270
< 
<!DOCTYPE html>
<html>
  <head>
    <title>Example Domain</title>
    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
        /*  ... */
    </style>    
  </head>
  <body>
    <div>
      <h1>Example Domain</h1>
      <p>
        This domain is established to be used for illustrative examples in documents. 
        You may use this domain in examples without prior coordination or asking for permission.
      </p>
      <p><a href="http://www.iana.org/domains/example">More information...</a></p>
    </div>
  </body>
</html>
* Connection #0 to host www.example.com left intact

Códigos de estado#

Cada vez que el cliente envía una petición al servidor, este incluye un código de estado y un mensaje informativo en la primer línea de las cabeceras de la respuesta

Código Mensaje Descripción
Mensajes informativos
1xx (varios mensajes) Menciona al cliente que la información fue recibida correctamente
Códigos de éxito
200 OK El servidor recibió la petición correctamente y entrega una respuesta
Códigos de redirección
301 Moved permanently El servidor menciona que el recurso tiene una nueva URL definitiva
302 Found El servidor indica que el recurso se encuentra por el momento en otra URL
_Error del cliente
400 Bad Request El cliente ha enviado al servidor una petición inválida o mal formada
401 Authorization Required El recurso requiere autenticación HTTP para ser mostrado
403 Forbidden El recurso no puede ser mostrado por falta de privilegios de acceso
404 Not Found El recurso no puede ser mostrado porque no fue encontrado
408 Request Timeout El servidor no recibió la petición en el tiempo máximo de espera
Error del servidor
500 Internal Server Error Ocurrió un error interno del servidor y el recurso no puede ser mostrado
503 Service Unavailable El servicio no está disponible