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