[Jiwang] Explicación detallada del protocolo HTTP

1. Descripción general de HTTP

El nombre completo de HTTP es Protocolo de transferencia de hipertexto. Es un protocolo de solicitud-respuesta simple, que es un protocolo de capa de aplicación y se basa en el protocolo TCP. Especifica qué tipo de mensajes el cliente puede enviar al servidor y qué tipo de respuesta obtiene. Todos los servidores www se basan en este protocolo.

2. Flujo de trabajo de solicitud HTTP

La séptima capa del modelo OSI donde funciona el protocolo HTTP es la capa de aplicación superior. Una aplicación importante del protocolo HTTP es el servicio www. El siguiente es el flujo de trabajo de solicitud del protocolo HTTP.

(1)用户在浏览器输入访问地址:http://www.baidu.com

(2)浏览器请求DNS进行域名解析,从而得到域名对应的IP地址

(3)浏览器将端口号(默认80)从访问地址中解析出来

(4)浏览器通过解析出来的IP和端口号与服务器之间进行tcp三次握手建立一条可靠的tcp连接

(5)三次握手建立好tcp连接后,浏览器向服务器发送一条http请求报文

(6)服务器响应并读取浏览器的请求信息,然后返回响应报文

(7)服务器关闭http连接,关闭tcp连接,浏览器显示访问内容到网页上
3. Formato de mensaje de solicitud HTTP

Insertar descripción de la imagen aquí
Un ejemplo es el siguiente:
Insertar descripción de la imagen aquí
Línea de solicitud : describe el método de solicitud, la URL de solicitud y el protocolo y la versión HTTP.
Encabezados de solicitud (encabezados de mensajes, encabezados de solicitud): describe quién envía la solicitud, de dónde proviene la solicitud o las preferencias y capacidades del cliente. . El servidor puede intentar proporcionar una mejor respuesta al cliente en función de la información del cliente proporcionada en el encabezado de la solicitud. El formato de la información en el encabezado de la solicitud es clave: valor.
Cuerpo de la solicitud (cuerpo del mensaje, datos de la solicitud): los datos pasados ​​por el cliente al servidor.

4. formato de URL

URL (Localizador uniforme de recursos), Localizador uniforme de recursos. Cada archivo en Internet tiene una URL única. La información que contiene indica la ubicación del archivo y cómo debe manejarlo el navegador.
Insertar descripción de la imagen aquí
El formato específico de la URL:

1、资源在哪台主机上——域名(dormain)或者ip来体现主机(host)
2、和主机上的哪个进程去获取资源——端口(port)
3、具体定位到是该进程管理的哪个资源——资源路径/路径(path)
4、URL设计之初,不仅仅为HTTP协议使用。所以需要表示出本次资源对应的协议(protocol/schema)
5、针对本次请求,除了资源本身之外的特殊要求。(查询字符串 query string、文档片段fragment)
5. Método de solicitud
Método de solicitud ilustrar
CONSEGUIR Realiza una solicitud de "mostrar" al recurso especificado. En una solicitud GET, los datos pasados ​​en la solicitud se incluyen en la URL y se muestran en la barra de direcciones del navegador. Al transmitir datos en una solicitud GET, los datos deben contener caracteres ASCII. Los navegadores pueden almacenar en caché las solicitudes GET.
CORREO Envíe datos al recurso especificado y solicite al servidor su procesamiento (como enviar un formulario o cargar un archivo). Los datos se incluyen en el cuerpo de la solicitud. Cuando la solicitud POST transmite datos, los datos pueden ser caracteres ASCII o datos de bytes. El valor predeterminado es el tipo de carácter. De forma predeterminada, los navegadores no almacenan en caché las solicitudes POST.
CABEZA Solicite al servidor una respuesta coherente con la solicitud GET, excepto que no se devolverá el cuerpo de la respuesta. Este método obtiene la metainformación contenida en el encabezado del mensaje de respuesta sin tener que transmitir todo el contenido de la respuesta.
PONER Cargue su contenido más reciente en la ubicación de recursos especificada.
BORRAR Solicite al servidor que elimine el recurso representado por Request-URI.
TRANCE Solicitudes de eco recibidas por el servidor, utilizadas principalmente para pruebas o diagnósticos.
OPCIONES Hace que el servidor devuelva todos los métodos de solicitud HTTP admitidos por el recurso. Utilice '*' en lugar del nombre del recurso y envíe una solicitud de opciones al servidor web para probar si las funciones del servidor funcionan correctamente.
CONECTAR El protocolo HTTP/1.1 está reservado para servidores proxy que pueden cambiar las conexiones a las canalizaciones. Normalmente, el usuario SSL cifra la conexión del servidor (a través de un servidor proxy HTTP no cifrado).
6. La diferencia entre GET y POST (importante, pregunta frecuente en las entrevistas)
CONSEGUIR CORREO
botón atrás/actualizar inofensivo Los datos se volverán a enviar (el navegador debe informar al usuario que los datos se volverán a enviar)
marcador Se puede marcar como favorito No se puede marcar como favorito
cache se puede almacenar en caché no se puede almacenar en caché
tipo de codificación Sólo es posible la codificación de URL (application-x-www-form-urlencoded) Admite múltiples codificaciones (multipart/form-data, etc.)
historia Los parámetros persisten en el historial del navegador. Los parámetros no persisten en el historial del navegador.
Limitaciones en la longitud de los datos Al enviar datos, el método GET agrega datos a la URL; la longitud de la URL es limitada (la longitud máxima de la URL es 2048 caracteres) Ilimitado
Restricciones sobre tipos de datos Sólo se permiten caracteres ASCII También se permiten datos binarios ilimitados.
seguridad* GET es menos seguro que POST porque los datos enviados son parte de la URL POST es más seguro que GET porque los parámetros no se guardan en el historial del navegador ni en los registros del servidor web.
visibilidad Los datos son visibles para todos en la URL. Los datos no se mostrarán en la URL.

* Seguridad : Desde la perspectiva de la transmisión, todos son inseguros porque HTTP se transmite en texto sin formato en la red. Siempre que el paquete se capture en el nodo de la red, el mensaje de datos se puede obtener por completo.

7. Atributos comunes del encabezado de los mensajes
Campo ilustrar Ejemplo
Aceptar Tipos de contenido de respuesta aceptables Aceptar:texto/sin formato (tipo de texto)
Aceptar juego de caracteres Juegos de caracteres aceptables Aceptar juego de caracteres: utf-8
Aceptar codificación Codificación aceptable del contenido de la respuesta. Aceptar codificación: gzip, deflate
Aceptar-Idioma Lista de idiomas de contenido de respuesta aceptables Aceptar-Idioma: en-US
Aceptar-Fechahora Versión aceptable del contenido de la respuesta expresada en el tiempo. Fecha y hora de aceptación: jueves 31 de mayo de 2007 20:35:00 GMT
Control de caché En la solicitud/respuesta, si se debe utilizar el mecanismo de almacenamiento en caché Control de caché: sin caché
Conexión El tipo de conexión que el cliente quiere utilizar con preferencia. Conexión: mantener vivo Conexión: Actualizar
Largancia de contenido La longitud del cuerpo de la solicitud en notación octal. Longitud del contenido: 348
Tipo de contenido El tipo MIME del cuerpo de la solicitud. Tipo de contenido: aplicación/x-www-form-urlencoded
Fecha La fecha y hora en que se envió el mensaje. Fecha: 26 de diciembre de 2022 17:30:00 GMT
Esperar Indica que el cliente requiere que el servidor realice acciones específicas. Espere: 100-continuar
De La dirección de correo electrónico del usuario que inició esta solicitud. De: [email protected]
Anfitrión Nombre de dominio del servidor y número de puerto; se puede omitir el puerto predeterminado Anfitrión: www.itbilu.com:80 o www.itbilu.com
Si coincide Utilizado principalmente para PUT, la coincidencia de entidades solo puede funcionar If-Match: “9jd00cdj34pss9ejqiw39d82f20d0ikd”
If-Modified-Since 资源未被修改的情况下返回304未修改 If-Modified-Since: Dec, 26 Dec 2022 17:30:00 GMT
User-Agent 浏览器的身份标识字符串 User-Agent: Mozilla/
Upgrade 要求服务器升级到一个高版本协议 Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Via 告诉服务器,这个请求是由哪个代理发出的 Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1)
Referer 表示跳转到当前页面的之前的页面 Referer: http://itbilu.com/nodejs
Origin 发起一个针对跨域资源共享的请求 Origin: http://www.itbilu.com
8、HTTP状态码分类
分类 分类描述
1XX 信息,服务器收到请求,需要请求者继续执行操作
2XX 成功,操作被成功接收并处理
3XX 重定向,需要进一步的操作以完成请求
4XX 客户端错误,请求包含语法
5XX 服务器错误,服务器在处理请求的过程中发生了错误

常见的状态码及含义

状态码 含义
200 请求成功,已经正常处理完毕
301 请求重定向,转移到其他URL
302 请求临时重定向
304 请求被重定向到客户端本地缓存
400 客户端请求存在语法错误
401 客户端请求没有经过授权
403 客户端的请求被服务器拒绝,一般为客户端没有访问权限
404 资源未找到,客户端请求的URL在服务端不存在
500 服务端出现异常

HTTP状态码列表

状态码 英文名称 中文描述
100 Continue 继续。客户端应继续其请求
101 Switching protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。
200 OK 请求成功。一般用于GET与POST请求
201 Created 已创建。成功请求并创建了新的资源
202 Accepted 已接受。已经接受请求,但未处理完成。
203 Non-Authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205 Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过次返回码清除浏览器的表单域。
206 Partial Content 部分内容。服务器成功处理了部分GET请求。
300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。
301 Moved Permanently 永久移动。请求的资源已被永久地移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URL代替。
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有的URL。
303 See Other 查看其它地址。与301类似。使用GET和POST请求查看。
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
305 Use Proxy 使用代理。所请求的资源必须通过代理访问。
306 Unused 已经被废弃的HTTP状态码
307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向。
400 Bad Request 客户端请求的语法错误,服务器无法理解。
401 Unauthorized 请求要求用户的身份认证。
402 Payment Required 保留,将来使用。
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求。
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置“您所请求的资源无法找到”的个性页面。
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
409 Conflict 服务器完成客户端的PUT请求可能返回此代码,服务器处理请求时发生了冲突
410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置。
411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息
412 Precondition Failed 客户端请求信息的先决条件错误
413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。
414 Request-URL Too Large 请求的URL过程(URL通常为网址),服务器无法处理
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
416 Requested range not satisfiable 客户端请求的范围无效
417 Expectation Failed 服务器无法满足Expect的请求头信息
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理
9、HTTP几个重要概念

连接:Connection
  一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。
  在http1.1,request和reponse头中都有可能出现一个connection的头,此header的含义是当client和server通信时对于长链接如何进行处理。
  在http1.1中,client和server都是默认对方支持长链接的,如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close。不论request还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在当天请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接了。

消息:Message
  HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连续传输。

请求:Request
  一个客户端到服务器的请求消息包括应用于资源的方法,资源的标识符和协议的版本号。

响应:Response
  一个服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。

实体:Enity
  数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。

客户端:Client
  一个为发送请求目的而建立连接的应用程序。

用户代理:User-Agent
  初始化一个请求的客户机,它们是浏览器、编辑器或者其他工具。

代理:Proxy
  一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其他客户机建立请求。请求时通过可能的翻译在内部或经过传递到其它服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。
  代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。

网关:Gateway
  一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好像对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
  网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。

通道:Tunnel
  是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。


  Caché: almacenamiento local de información de respuesta de caché .

10. Características de HTTP

(1) Soporta modelo cliente/servidor.

(2) Simple y rápido
  Cuando un cliente solicita servicios al servidor, solo necesita transmitir el método y la ruta de la solicitud. Los métodos de solicitud más utilizados incluyen get, post y head. Cada método especifica un tipo diferente de contacto entre el cliente y el servidor. Debido a la simplicidad del protocolo http, el tamaño del programa del servidor http es pequeño y la velocidad de comunicación es muy rápida.

(3) HTTP independiente y flexible
  permite la transmisión de cualquier tipo de objeto de datos.

(4) Sin conexión
  significa que cada conexión se limita a procesar una sola solicitud. El servidor procesa la solicitud del cliente, luego responde y se desconecta después de recibir la respuesta. Este método puede ahorrar tiempo de transmisión.

(5)
  http sin estado es un protocolo sin estado. Sin estado significa que el protocolo no tiene capacidad de memoria para el procesamiento de transacciones. Una desventaja de este método es que si el procesamiento posterior requiere el uso de información previa, ésta debe ser retransmitida, lo que resulta en un aumento en la cantidad de datos transmitidos por conexión. La ventaja es que si las conexiones posteriores no requieren la información proporcionada anteriormente, la respuesta será más rápida. Para resolver las características sin estado de http, aparecieron las tecnologías de sesión y cookies.

Supongo que te gusta

Origin blog.csdn.net/muyiyufei/article/details/128204815
Recomendado
Clasificación