Constellation Knowledge Network - Preguntas y respuestas sobre Bagua - Análisis del código fuente OkHttp (3): proxy y enrutamiento

Análisis del código fuente OkHttp (3): proxy y enrutamiento

No entendí el código fuente de OkHttp cuando lo miré por primera vez, porque no entendía la dirección, el enrutamiento, el proxy, ProxySelector, RouteSelector, etc. Leer el código fuente es muy difícil. Después de leerlo varias veces, todavía no entiendo la lógica de encontrar una conexión multiplexada, crear una conexión, conectarme al servidor, conectarme al servidor proxy y crear una conexión de túnel. Este artículo decidió ordenar conceptos relacionados y principios básicos.

● HTTP/1.1(HTTPS)

● HTTP/2

● SPDY

A /p/63ba15d8877a

1. Construya un objeto de dirección.

2. Lea la configuración del proxy: resetNextProxy

3. Resuelva la dirección del socket del servidor de destino.

4. Seleccione una ruta para crear una RealConnection.

5. Determine el protocolo

Método de prueba:

●Abra Charles en la PC, configure el puerto y cómo configurar el proxy. Hay tutoriales en Internet, que son relativamente simples;

●Abra el WIFI en el teléfono móvil, seleccione el WIFI conectado para modificar la red y especifique el servidor proxy, la IP de la PC y el puerto que Charles simplemente configúrelo en la configuración de opciones avanzadas;

● OkHttpClient inicia una solicitud sin especificar un proxy.

1. Construya el objeto de dirección.

2. Lea la configuración del proxy: resetNextProxy

3. Resuelva la dirección del socket del servidor de destino.

4. Seleccione una ruta para crear una RealConnection.

5. Crear un túnel

Debido a que es un proxy para solicitudes https, se requiere un proxy de túnel.

Como se puede ver en la figura, establecer un túnel en realidad es enviar una solicitud CONNECT. El encabezado incluye el campo Proxy-Connection y el nombre del host de destino. El contenido de la solicitud es similar:

6. Determine el protocolo, protocolo de enlace SSL

1. Los servidores proxy se pueden dividir en servidores proxy HTTP y servidores proxy SOCK;

2. apoderados. Los servidores proxy ordinarios son adecuados para la transmisión de texto sin formato, es decir, las solicitudes http; los servidores proxy de túnel solo reenvían paquetes TCP y son adecuados para la transmisión cifrada, es decir, https / http 2;

3. SOCK4 y SOCK5. La diferencia es que este último admite la transmisión UDP y es adecuado para herramientas de chat de agentes como QQ.

4. Sin configurar el proxy (no especifique OkHttpClient, no configure el sistema), el cliente establece directamente una conexión TCP con el servidor de destino

5. colocar. Cuando se envía una solicitud http, el cliente establece una conexión TCP con el servidor proxy. Si el servidor proxy es un nombre de dominio, el nombre de dominio del servidor proxy se interpreta y el servidor proxy resuelve el nombre de dominio del servidor de destino.

6. El proxy ha sido configurado. Cuando se utiliza un proxy para solicitudes https/http2, el cliente establece una conexión TCP con el servidor proxy, envía una solicitud CONNECT para establecer un túnel con el servidor proxy y realiza un protocolo de enlace SSL. El servidor proxy no analiza los datos, solo reenvía paquetes TCP.

Cómo utilizar correctamente el proxy HTTP

Proxy y enrutamiento en OkHttp3

Principio e implementación del proxy HTTP (1)

上篇: No chismees hasta que estés lleno 下篇: ¿Cuántos satélites tiene el GPS?
Artículos populares