El proceso completo de solicitud HTTP

El proceso completo de solicitud HTTP

1.1 El navegador resuelve la dirección IP según el nombre de dominio
   浏览器根据访问的域名找到其IP地址。DNS查找过程如下:

Caché del navegador: primero busque el caché de DNS del navegador (el tiempo de caché es relativamente corto, alrededor de 1 minuto y solo puede acomodar 1000 cachés), para ver si hay una entrada correspondiente al nombre de dominio en el caché, y no ha expirado. Si ha caducado y no ha caducado, el análisis termina aquí.
Caché del sistema: Si la entrada correspondiente no se encuentra en la propia caché del navegador, el navegador buscará en la propia caché de DNS del sistema operativo, si la encuentra y no ha caducado detendrá la búsqueda y se resolverá hasta el final.
Caché del enrutador: si no se encuentra el caché del sistema, enviará una solicitud de consulta al enrutador.
Caché de DNS del ISP (Proveedor de servicios de Internet): si no se encuentra en el caché de enrutamiento, lo último que se debe verificar es el servidor de caché de DNS del ISP.

1.2 El navegador establece una conexión TCP con el servidor WEB
   TCP的3次握手。
1.3 El navegador envía una solicitud HTTP al servidor WEB
   一个HTTP请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。

1.3.1 Línea de solicitud

La línea de solicitud se divide en tres partes: método de solicitud, URL de la dirección de solicitud y versión del protocolo HTTP, separadas por espacios. Por ejemplo, GET /index.html HTTP / 1.1.

1.请求方法

   HTTP/1.1 定义的请求方法有8种:GET(完整请求一个资源)、POST(提交表单)、PUT(上传文件)、DELETE(删除)、PATCH、HEAD(仅请求响应首部)、OPTIONS(返回请求的资源所支持的方法)、TRACE(追求一个资源请求中间所经过的代理)。最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

	(1)GET

   当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,会送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号‘?’代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。通过GET方式传递的数据直接放在地址中,所以GET方式的请求一般不包含“请求内容”部分,请求数据以地址的形式表现在请求行。地址中‘?’之后的部分就是通过GET发送的请求数据,各个数据之间用‘&’符号隔开。显然这种方式不适合传送私密数据。另外,由于不同的浏览器对地址的字符限制也有所不同,一半最多只能识别1024个字符,所以如果需要传送大量数据的时候,也不适合使用GET方式。如果数据是英文字母/数字,原样发送;如果是空格,转换为+;如果是中文/其他字符,则直接把字符串用BASE64加密,得出:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

(2)POST

   允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。POST方式请求行中不包含数据字符串,这些数据保存在“请求内容”部分,各数据之间也是使用‘&’符号隔开。POST方式大多用于页面的表单中。因为POST也能完成GET的功能,因此多数人在设计表单的时候一律都使用POST方式,其实这是一个误区。GET方式也有自己的特点和优势,我们应该根据不同的情况来选择是使用GET还是使用POST。



2.URL

   URL:统一资源定位符,是一种资源位置的抽象唯一识别方法。

   组成:<协议>://<主机>:<端口>/<路径>

   端口和路径有事可以省略(HTTP默认端口号是80)



3.协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

1.3.2 Encabezado de solicitud

El encabezado de la solicitud agrega información adicional al mensaje de solicitud. Consta de pares "nombre / valor", un par por línea, y el nombre y el valor están separados por dos puntos.

Habrá una línea en blanco al final del encabezado de la solicitud, que indica el final del encabezado de la solicitud y luego los datos de la solicitud.

1.3.3 Solicitar datos

Los datos de la solicitud no se utilizan en el método GET, sino en el método POST. El método POST es adecuado para ocasiones en las que los clientes deben completar formularios. Los encabezados de solicitud más usados ​​relacionados con los datos de solicitud son Cntent-Type y Content-Length. El siguiente es un mensaje de solicitud de un método POST:

POST /index.php Línea de solicitud HTTP / 1.1

Anfitrión: localhost

User-Agent: Mozilla / 5.0 (Windows NT 5.1; rv: 10.0.2) Gecko / 20100101 Firefox / 10.0.2 encabezado de solicitud

Aceptar: texto / html, aplicación / xhtml + xml, aplicación / xml; q = 0,9, /; q = 0,8

Aceptar-Idioma: zh-cn, zh; q = 0.5

Aceptar codificación: gzip, desinflar

Conexión: mantener vivo

Referente: http: // localhost /

Longitud del contenido: 25

Tipo de contenido: aplicación / x-www-form-urlencoded

Linea en blanco

username = aa & password = 1234 solicitar datos

1.4 El servidor responde a la solicitud HTTP y el navegador obtiene el código HTML

El mensaje de respuesta HTTP consta de cuatro partes: línea de estado, encabezados correspondientes, línea en blanco y cuerpo de respuesta.

1.4.1 Línea de estado

La línea de estado consta de 3 partes, a saber: versión del protocolo, código de estado y escaneo del código de estado. La versión del protocolo es coherente con el mensaje de solicitud y la descripción del código de estado es una descripción simple del código de estado.

1.4.2 Encabezado de respuesta

1.4.3 Datos de respuesta

Se utiliza para almacenar información de datos que debe devolverse al cliente.

Línea de estado HTTP / 1.1 200 OK

Fecha: Dom, 17 de marzo de 2013 08:12:54 Encabezado de respuesta GMT

Servidor: Apache / 2.2.8 (Win32) PHP / 5.2.5

Desarrollado por X: PHP / 5.2.5

Conjunto de cookies: PHPSESSID = c0huq7pdkmm5gg6osoe3mgjmm3; ruta = /

Caduca: Jue, 19 de noviembre de 1981 08:52:00 GMT

Control de caché: sin almacenamiento, sin caché, debe revalidar, verificación posterior = 0, verificación previa = 0

Pragma: sin caché

Longitud del contenido: 4393

Keep-Alive: tiempo de espera = 5, máx. = 100

Conexión: Keep-Alive

Tipo de contenido: texto / html; juego de caracteres = utf-8

Linea en blanco

  Datos de respuesta HTTP响应示例<title>

¡Hola HTTP!

1.5 El navegador analiza el código HTML y solicita recursos en el código HTML

Una vez que el navegador obtiene el archivo HTML, comienza a analizar el código HTML y, cuando encuentra un recurso estático, solicita una descarga del servidor.

1.6 Cierra la conexión TCP y el navegador muestra la página al usuario

El navegador utiliza su propio mecanismo de trabajo interno para representar los recursos estáticos solicitados y el código HTML y presentarlos al usuario.

Supongo que te gusta

Origin blog.csdn.net/qq_40808228/article/details/108874557
Recomendado
Clasificación