Romper la cazuela y preguntar al final! Explicación detallada de HTTP y HTTPS (sin terminar)

HTTP 

Cita de Wikipedia HTTP: Protocolo de transferencia de hipertexto (en inglés: Protocolo de transferencia de hipertexto, abreviatura: HTTP) es un protocolo de capa de aplicación para sistemas de información distribuidos, colaborativos e hipermedia. HTTP es la base de la comunicación de datos en la World Wide Web.
El propósito original de diseñar HTTP era proporcionar un método para publicar y recibir páginas HTML. Los recursos solicitados a través del protocolo HTTP o HTTPS se identifican mediante identificadores uniformes de recursos (URI).

Capa de protocolo HTTP

HTTP (Protocolo de transferencia de hipertexto), Protocolo de transferencia de hipertexto, es un protocolo de capa de aplicación basado en TCP.

Modelo de respuesta de solicitud HTTP

 

HTTP consiste en solicitudes y respuestas y es un modelo estándar de cliente-servidor (B / S). El protocolo HTTP siempre es una solicitud iniciada por el cliente, y el servidor envía una respuesta. Ver imagen a continuación:

 

 

HTTP es un protocolo sin estado. Sin estado significa que no es necesario establecer una conexión persistente entre el cliente (navegador web) y el servidor, lo que significa que cuando un cliente envía una solicitud al servidor y el servidor devuelve una respuesta, la conexión se cierra. El servidor no retiene información sobre la conexión.

HTTP sigue el modelo de solicitud / respuesta. El cliente (navegador) envía una solicitud al servidor, y el servidor procesa la solicitud y devuelve una respuesta adecuada. Todas las conexiones HTTP están estructuradas como un conjunto de solicitudes y respuestas.

Proceso de trabajo HTTP

Una operación HTTP se denomina transacción, y todo el proceso de su trabajo es el siguiente:

Resolución de la dirección

Si utiliza un navegador cliente para solicitar esta página: localhost.com:8080/index.htm

El nombre del protocolo, el nombre del host, el puerto, la ruta del objeto y otras partes se descomponen de él. Para nuestra dirección, los resultados de la resolución son los siguientes:

Nombre del protocolo: http
Nombre de host: localhost.com
Puerto: 8080 Ruta del 
objeto: /index.htm

En este paso, se requiere el DNS para resolver el nombre de dominio localhost.com para obtener la dirección IP del host.

Encapsular paquetes de solicitud HTTP 

Combine la parte anterior con la propia información de la máquina y encapsúlela en un paquete de solicitud HTTP

Encapsulado en el paquete TCP, establezca la conexión TCP (protocolo de enlace de tres vías TCP)

Antes de que comience el trabajo HTTP, el cliente (navegador web) primero debe establecer una conexión con el servidor a través de la red. La conexión se completa a través de TCP. Este protocolo y el protocolo IP construyen conjuntamente Internet, que es la conocida familia de protocolos TCP / IP. Internet también se conoce como una red TCP / IP.

HTTP es un protocolo de capa de aplicación de nivel superior que TCP. De acuerdo con las reglas, solo después de establecer el protocolo de capa inferior se puede establecer la conexión del protocolo de capa superior. Por lo tanto, la conexión TCP debe establecerse primero. El número de puerto de la conexión TCP general es 80. Aquí está el puerto 8080. 

El cliente envía el comando de solicitud

 Una vez establecida la conexión, el cliente envía una solicitud al servidor en el formato de un identificador uniforme de recursos (URL), número de versión del protocolo, seguido de información MIME que incluye modificadores de solicitud, información del cliente y posible contenido.

Respuesta del servidor

Después de recibir la solicitud, el servidor proporciona la información de respuesta correspondiente en forma de una línea de estado, incluido el número de versión del protocolo de la información, un código de éxito o error, seguido de la información MIME que incluye información del servidor, información de la entidad y posible contenido.

El mensaje de la entidad es que después de que el servidor envía la información del encabezado al navegador, envía una línea en blanco para indicar que el envío de la información del encabezado ha terminado. Luego, envía la solicitud real del usuario en el formato descrito por la información del encabezado de respuesta de tipo de contenido. Datos.

El servidor cierra la conexión TCP.

En circunstancias normales, una vez que el servidor web envía los datos de la solicitud al navegador, cerrará la conexión TCP y luego, si el navegador o el servidor agrega esta línea de código en la información del encabezado:

Conexión: mantener vivo

La conexión TCP permanecerá abierta después del envío, por lo que el navegador puede continuar enviando solicitudes a través de la misma conexión. Mantener la conexión ahorra el tiempo requerido para establecer una nueva conexión para cada solicitud, y también ahorra ancho de banda de red.

 

 

 

Conceptos utilizados en el proceso de trabajo HTTP

Formato de mensaje

Hay dos tipos de mensajes HTTP1.0: solicitud y respuesta. Los formatos de mensaje son:

Formato de mensaje de solicitud
Método de solicitud de URL HTTP / número de versión de los
 campos de encabezado de solicitud (opcional)
Línea en blanco
cuerpo (solo válido para solicitudes de publicación)

Por ejemplo:

OBTENGA http: // m.baidu.com/ HTTP / 1.1 
Host m.baidu.com
Conexión Keep - Alive
... // otra 

clave de encabezado = iOS
Formato de mensaje de respuesta
Número HTTP / versión devuelve un código de retorno de la descripción del código de
 campo de cabecera de respuesta (opcional)
Línea en blanco
cuerpo

Por ejemplo:

HTTP / 1.1 200 OK
Content-Type text / html; charset = UTF-8
... // otros encabezados

<html> ...
Estructura de URL

 El acceso a los recursos utilizando el protocolo HTTP se logra a través del localizador uniforme de recursos URL (Uniform Resource Locator). El formato de la URL es el siguiente:

esquema: // host: puerto / ruta? consulta

esquema: indica el protocolo, como Http, Https, Ftp, etc.
host: indica el nombre de host donde se encuentra el recurso al que se accede: por ejemplo: www.baidu.com;
puerto: indica el número de puerto, el valor predeterminado es 80;
ruta: indica la ruta de almacenamiento del recurso al que se accede en el host de destino;
consulta: indica condiciones de consulta;

Por ejemplo: http: // www.baidu.com/search?words=Baidu
Método de solicitud HTTP
OBTENER: obtener el recurso especificado por la URL;
POST: transmitir información de la entidad
PUT: subir archivo
BORRAR: eliminar un archivo
HEAD: Obtenga la primera parte del mensaje, en comparación con GET, no devuelva la parte principal del mensaje
OPCIONES: pregunte sobre los métodos admitidos
TRACE: rastrea la ruta de la solicitud;
CONECTAR: Se requiere establecer un túnel cuando se comunica con el servidor proxy y usar el túnel para la comunicación TCP. SSL y TLS se utilizan principalmente para cifrar datos y luego transmitirlos a través de un túnel de red.
Campo de mensaje

 

El campo de encabezado HTTP consiste en el nombre del campo y el valor del campo, separados por ":" en el medio, como Content-Type: text / html. Entre ellos, el mismo nombre de campo puede corresponder a múltiples valores de campo.

Hay 5 tipos de campos de mensajes HTTP:

  • Campo de mensaje de solicitud
  • Campo de mensaje de respuesta
  • Campo de encabezado de entidad
  • Campo de mensaje general
  • Otros campos de mensaje
Campo de mensaje de solicitud 

Campos de mensaje admitidos en solicitudes HTTP.

 

Aceptar: tipos de medios que el cliente puede manejar. Como text / html, indica que el cliente le pide al servidor que devuelva datos de tipo html, si no, devuelve texto
Los tipos están bien. El formato del tipo de medio es generalmente: tipo / subtipo, lo que significa que los datos del tipo de subtipo se solicitan primero, de lo contrario, se devuelve el tipo de tipo
Los datos también están bien.

Tipos de medios comunes:
Archivos de texto: text / html, text / plain, text / css, application / xml
Archivos de imagen: iamge / jpeg, image / gif, image / png;
Archivo de video: video / mpeg
Archivos binarios utilizados por la aplicación: application / octet-stream, application / zip

El campo Aceptar puede establecer múltiples valores de campo, de modo que el servidor coincida a su vez y devuelva el primer tipo de medio coincidente. Por supuesto, también se puede establecer mediante el parámetro q
El peso del tipo de medio: cuanto mayor sea el peso, mayor será la prioridad. El valor de q es [ 0 , 1 ], que puede tomar 3 decimales, y el valor predeterminado es 1.0 . Por ejemplo:
Aceptar: texto / html, aplicación / xml; q = 0.9 , * / *

Aceptar -Charset: representa el conjunto de caracteres admitido por el cliente. Por ejemplo: la Accept-el juego de caracteres: GB2312, iso- 8859 - . 1

Aceptar - Codificación: indica el formato de codificación de contenido admitido por el cliente. Tales como: Aceptar- Codificación: gzip

Codificación de contenido común:
gzip: el formato de codificación generado por el programa de compresión de archivos gzip;
comprimir: el formato de codificación generado por el programa de compresión de archivos Unix comprimir;
deflate: el formato de codificación generado al combinar los algoritmos de compresión zlib y deflate;
identidad: el formato de codificación predeterminado, no se realiza ninguna compresión.

Aceptar -Idioma: indica el idioma admitido por el cliente. Tales como: Accept-Language: zh- cn, en

Autorización: indica la información de autenticación del cliente. Cuando el cliente accede a la autenticación, el servidor devolverá 401, y luego el cliente se autenticará
Después de agregarlo al campo Autorización y enviarlo al servidor, si la autenticación es exitosa, devuelve 200. Por ejemplo, el servidor Ftp en Linux Commune es este proceso:
ftp: // ftp1.linuxidc.com。

Host: indica el nombre de host donde se accede al recurso, es decir, la parte del nombre de dominio en la URL. Tales como: m.baidu.com

If -Match: si el valor de If- Match coincide con el valor ETag del recurso solicitado (etiqueta de entidad, asociada con el recurso. El recurso cambia y la etiqueta de entidad cambia en consecuencia),
El servidor procesa esta solicitud.

If -Modified-Since: se utiliza para confirmar la puntualidad de los recursos locales que posee el cliente. Si el recurso solicitado por el cliente se especifica en If-Modified- Since
Después de que el tiempo ha cambiado, el servidor procesa la solicitud. Tales como: If -Modified-Since: Thu 09 Jul 2018  00 : 00 : 00 , lo que indica que si el cliente
Si el recurso solicitado por el terminal cambia después de las 0:00 del 9 de enero de 2018, el servidor procesa la solicitud. A través de este campo podemos resolver los siguientes problemas: uno contiene un gran
La interfaz de los datos cuantitativos, y el rendimiento en tiempo real es alto, podemos usar el campo modificado al actualizar, para evitar el consumo innecesario de tráfico.

If -None-Match: si el valor de If -Match no coincide con el valor ETag del recurso solicitado, el servidor procesa la solicitud.

If -Range: cuando el valor de If- Range (valor o tiempo ETag) es coherente con el valor o tiempo ETag del recurso al que se accede, el servidor procesa la solicitud y devuelve
Los datos del rango especificado establecido en el campo Rango. Si son inconsistentes, se devuelve todo el contenido. If -Range es en realidad una versión mejorada de If- Match, porque
Si el valor de no coincide, los datos aún pueden devolverse, y si If - Match no coincide, la solicitud no se procesará y los datos deben solicitarse nuevamente.


If -Unmodified-Since: al contrario de If-Modified- Since, significa que el recurso solicitado no se procesa después del tiempo especificado, y se procesa la solicitud.
De lo contrario, devuelve 412.

Reenvíos máximos: indica el número máximo de servidores por los que puede pasar una solicitud. Cada vez que se reenvía una solicitud, los reenvíos máximos se reducen en 1, cuando el reenvío máximo es 0
En este momento, el servidor donde se encuentra ya no lo reenviará, sino que responderá directamente. Este campo se puede utilizar para localizar problemas de comunicación. Por ejemplo, antes de cortar la fibra Alipay, se puede configurar
Establecer Máx. - Adelante para ubicar la ubicación aproximada.

Proxy - Autorización: cuando el cliente recibe el desafío de autenticación del servidor proxy, el cliente agrega la información de autenticación a
Proxy : autorización para completar la autenticación. Similar a la Autorización, excepto que la Autorización ocurre entre el cliente y el servidor.

Rango: sección de adquisición de recursos, por ejemplo: Rango: bytes = 500 - 1000 representa el contenido de la adquirida entre un recurso especificado de 500 a 1000 bytes, si el servidor
Si se puede procesar correctamente, 206 se devuelve como respuesta, lo que indica que parte de los datos se han devuelto. Si este rango de solicitudes no se puede procesar, 200 se devolverán como respuesta
Datos,

Referer: le dice al servidor desde qué página se originó la solicitud. Por ejemplo, si busca una palabra clave en la página de inicio de Baidu, el encabezado de solicitud de la página de resultados tendrá este campo.
El valor es https: //www.baidu.com/ . A través de este campo, puede contar los clics de los anuncios.

Usuario - Agente: envíe el navegador solicitante y el nombre del agente y otra información al servidor, por ejemplo:
User -Agent: Mozilla / 5.0 (Linux; Android 5.0 ; SM-G900P Build / LRX21T) AppleWebKit / 537.36 
(KHTML, como Gecko) Chrome / 63.0 . 3239.84 Safari móvil / 537.36
Campo de mensaje de respuesta

Campos de mensaje admitidos en respuestas HTTP.

Indica que no se puede procesar.

Edad: el servidor informa al cliente cuánto tiempo hace que el servidor de origen (no el servidor de caché) creó la respuesta.
La unidad es segundos.

ETag: el identificador del recurso físico, que se puede utilizar para solicitar el recurso especificado.

Ubicación: la nueva ubicación del recurso solicitado.

Proxy - Autenticar: envíe la información de autenticación requerida por el servidor proxy al cliente.

Reintentar : después: el servidor informa al cliente con qué frecuencia debe volver a intentarlo, generalmente se utiliza con respuestas de redireccionamiento 503 y 3xx.

Servidor: informe al servidor sobre el programa de aplicación del servidor HTTP actual.

WWW - Autenticar: informa al cliente de un esquema de autenticación adecuado para el recurso al que se accede, como Basic o Digest. La respuesta 401 debe contener
WWW: campo de autenticación.
Campo de encabezado de entidad
 
 

Supongo que te gusta

Origin www.cnblogs.com/magicg/p/12735526.html
Recomendado
Clasificación