Programación de redes Java (1) Conceptos básicos de redes [Protocolo de comunicación HTTP|WebSocket|TCP/IP|UDP]

Descripción general

Una red informática se refiere a la conexión de múltiples computadoras y sus dispositivos externos con funciones independientes en diferentes ubicaciones geográficas a través de líneas de comunicación para compartir recursos e información bajo la administración y coordinación de sistemas operativos de red, software de administración de red y protocolos de comunicación de red.

Clasificación de red

  • Red de área local (LAN)
    • Una red de área local es una red compuesta por varias computadoras utilizadas en un área pequeña, la cobertura suele estar limitada a 10 kilómetros y pertenece a un área pequeña establecida por una empresa o departamento.
  • Red de Área Metropolitana (MAN)
    • Una red de área metropolitana es una red cuyo alcance se encuentra entre una red de área amplia y una red de área local. Su cobertura de red generalmente puede extenderse a toda la ciudad. Con la ayuda de fibras ópticas de comunicación, se conectan múltiples redes de área local a la ciudad pública. red para formar una red grande, de modo que no solo se puedan compartir los recursos dentro de la red de área local, sino que también se puedan compartir recursos entre LAN
  • Red de área amplia (WAN)
    • La red Guangcheng es una red de larga distancia que implica comunicaciones de larga distancia y puede cubrir varios países o incluso el mundo entero. Debido a que la distancia geográfica de la WAN es demasiado larga, la atenuación de la información es muy grave. Este tipo de red generalmente requiere líneas dedicadas arrendadas, que están conectadas a través de protocolos y líneas de procesamiento de información de interfaz para formar una estructura de malla para resolver el problema de enrutamiento.

Protocolo de comunicación de red

Para lograr la comunicación en una red informática, deben existir algunas convenciones, a saber, protocolos de comunicación. Incluyendo estándares de velocidad, código de transmisión, estructura de código, pasos de control de transmisión, control de errores, etc. Los protocolos de comunicación de red comunes incluyen: protocolo TCP/IP , protocolo IPX/SPX, etc. Para permitir el diálogo entre dos nodos, se debe establecer una herramienta de comunicación (es decir, un puerto) entre ellos para permitir el intercambio de información entre ellos.

Protocolo TCP/IP: Protocolo de control de transmisión/Protocolo de Internet (Protocolo de control de transmisión/Protocolo de Internet), que es el protocolo más básico y extendido de Internet. Define estándares sobre cómo se conectan las computadoras a Internet y cómo se transfieren los datos entre ellas. Contiene una serie de protocolos para procesar la comunicación de datos internamente y adopta un modelo jerárquico de 4 capas: cada capa llama al protocolo proporcionado por la siguiente capa para completar sus propias necesidades.

  • Capa de aplicación: Principalmente responsable de los protocolos de aplicación, como el protocolo HTTP, el protocolo FTP, etc.
  • Capa de transporte: permite principalmente que los programas de red se comuniquen. Cuando se comunica a través de la red, se puede utilizar el protocolo TCP o el protocolo UDP.
  • Capa de red: la capa de red es el núcleo de todo el protocolo TCP/IP y se utiliza principalmente para agrupar los datos transmitidos y enviar los datos agrupados a la computadora o red de destino.
  • Capa de enlace de datos: la capa de enlace se utiliza para definir el canal de transmisión físico, generalmente un protocolo de controlador para ciertos dispositivos de conexión de red, como los controladores proporcionados para fibras ópticas y cables de red.

HTTP

Descripción general

HTTP (Protocolo transformador de hipertexto) es un protocolo de comunicación. Es un protocolo de aplicación basado en el protocolo de comunicación TCP/IP para transmitir archivos HTML y de imágenes. Su objetivo principal es definir el cliente (navegador) y el servidor para lograr la transmisión . y acceso a diversos recursos (como páginas HTML, imágenes, audio, vídeos, etc.) ;

  • Características del protocolo HTTP
    • Basado en el modo de respuesta a la solicitud
      • El protocolo HTTP adopta un modelo de arquitectura cliente-servidor: el cliente envía una solicitud al servidor y el servidor devuelve la respuesta correspondiente. Este modo puede separar eficazmente la lógica de la aplicación y mejorar la capacidad de mantenimiento y escalabilidad del sistema.
    • sin conexión
      • El protocolo HTTP es un protocolo sin conexión, cada solicitud es independiente y el servidor cierra la conexión inmediatamente después de procesar la solicitud. Esto puede ahorrar recursos, pero también trae algunas desventajas, como la necesidad de restablecer la conexión, enviar repetidamente la misma información de encabezado, etc.
    • Eficiencia de transmisión | Alta confiabilidad
      • Sin estado : no se guarda ningún historial ni información de estado durante la transmisión de datos.
      • Usar TCP como protocolo de capa de transporte
    • Admite transmisión multimedia
      • El protocolo HTTP puede transmitir varios tipos de datos, como HTML, XML, JSON, imágenes, audio, vídeo, etc. Esto convierte al protocolo HTTP en un protocolo de transmisión de red universal adecuado para varios tipos de escenarios de aplicación.
    • Buena compatibilidad
      • Admite modo B/S, C/S
  • Protocolo HTTP insuficiente
    • El protocolo HTTP se transmite en texto claro y puede ser fácilmente interceptado, manipulado o falsificado.
    • En el modelo de solicitud/respuesta, cada solicitud requiere establecer una nueva conexión TCP, lo que aumenta la sobrecarga de comunicación de la red.
    • El protocolo HTTP solo puede realizar una autenticación de identidad simple, como la autenticación básica y la autenticación implícita. Este método de autenticación es vulnerable a ataques y no puede proporcionar suficiente seguridad.

Proceso de respuesta de solicitud HTTP

Proceso de respuesta de solicitud del protocolo HTTP

mensaje HTTP

mensaje de solicitud

 Un mensaje de solicitud HTTP consta de cuatro partes : línea de solicitud, encabezado de solicitud, línea en blanco y datos de solicitud.

Encabezado de solicitud

mensaje de respuesta

 El mensaje de respuesta también consta de cuatro partes: línea de estado, encabezado del mensaje, línea en blanco y cuerpo de la respuesta.

encabezado de respuesta

versión HTTP

HTTP1.0

HTTP/1.0 fue la primera versión del protocolo HTTP que especificó un número de versión en las comunicaciones y todavía se usa ampliamente en servidores proxy. El servidor no rastrea a cada cliente ni registra solicitudes pasadas (sin estado). Esta falta de estado puede utilizar el mecanismo de cookie/sesión para la autenticación de identidad y el registro de estado. Al mismo tiempo, utiliza conexiones cortas de forma predeterminada, es decir, HTTP1.0 proporciona navegación El navegador mantiene una conexión corta con el servidor. Cada solicitud del navegador necesita establecer una conexión TCP con el servidor. La conexión TCP se desconecta inmediatamente (sin conexión) después de que el servidor completa el procesamiento.

Los defectos son los siguientes.

  • Sin conexión: la conexión no se puede reutilizar y la conexión TCP debe volver a crearse para cada solicitud, lo que aumenta el costo de la comunicación de la red.
  • Bloqueo de encabezado de línea: 1.0 estipula que la siguiente solicitud debe enviarse después de que llegue la respuesta a la solicitud anterior; de lo contrario, debe estar en estado de espera.
HTTP1.1
  • Conexión larga : HTTP1.1 agrega un campo de Conexión. Al configurar Keep-Alive, la conexión HTTP se puede mantener abierta, evitando la necesidad de establecer, liberar y establecer repetidamente una conexión TCP cada vez que el cliente y el servidor lo solicitan, mejorando la utilización de la red. Si el cliente desea cerrar la conexión HTTP, puede llevar Conexión: falso en el encabezado de la solicitud para indicarle al servidor que cierre la solicitud.
  • Canalización de solicitudes de soporte (canalización): según la conexión larga HTTP1.1, la canalización de solicitudes es posible. Es decir, se pueden enviar múltiples solicitudes simultáneamente en la misma conexión TCP sin esperar a que regrese la respuesta anterior, lo que mejora aún más la eficiencia de transmisión de la red.
HTTP2.0
  • Multiplexación: permite iniciar múltiples mensajes de solicitud-respuesta simultáneamente a través de una única conexión HTTP/2.
  • Encuadre binario: HTTP/2 agrega una capa de marco binario entre la capa de aplicación (HTTP/2) y la capa de transporte (TCP o UDP). Sin cambiar la semántica, los métodos, los códigos de estado, los URI y los campos de encabezado de HTTP/1.x, resuelve las limitaciones de rendimiento de HTTP1.1, mejora el rendimiento de la transmisión y logra una baja latencia y un alto rendimiento.

Códigos de estado HTTP ( comunes )

  • 200 bien
  • 302 Encontrado significa una redirección temporal, no una redirección permanente
  • 401 No autorizado indica que la solicitud actual requiere verificación del usuario.
  • 403 Prohibido significa que el servidor entendió la solicitud pero se negó a ejecutarla
  • 404 No encontrado significa que la solicitud falló y el recurso solicitado no se encontró en el servidor.

  • 500 Error interno del servidor significa que el procesamiento de la solicitud no se puede completar, generalmente un error interno en el lado del servidor.

Seguridad del protocolo HTTP

El protocolo HTTP se transmite en texto claro, es decir, todas las solicitudes y respuestas se transmiten en texto claro . Esto significa que puede ser interceptado, manipulado o falsificado durante la transmisión. Para resolver los problemas de seguridad del protocolo HTTP, surgió el protocolo HTTPS. El protocolo HTTPS agrega el protocolo SSL/TLS al protocolo HTTP para garantizar la seguridad de los datos a través de certificados digitales ( tecnologías de cifrado y autenticación, incluido el cifrado y descifrado simétrico, el cifrado y descifrado asimétrico, las firmas digitales, etc. ) . Cuando se utiliza el protocolo HTTPS, todas las comunicaciones entre el cliente y el servidor están cifradas y no pueden ser escuchadas ni manipuladas por terceros. Además, HTTPS también admite la autenticación de certificados, que puede verificar la identidad del servidor y evitar falsificaciones y ataques de intermediario.

Proceso de verificación HTTPS para garantizar la seguridad de la transmisión de datos

WebSocket

concepto

El protocolo WebSocket es un protocolo de red que se basa en el protocolo HTTP y se basa en el protocolo TCP . Realiza una comunicación full-duplex entre el navegador y el servidor, es decir, mientras el cliente envía información al servidor, también permite que el servidor envíe información activamente al cliente.

Las características son las siguientes

  • Protocolo de comunicación en tiempo real que permite la comunicación bidireccional.
  • Construido sobre el protocolo HTTP, se establece una conexión persistente a través del protocolo de protocolo de enlace
  • Utilice el protocolo binario para transmitir datos más rápido.
  • Admite comunicación entre dominios.
  • Soporte de datos push del servidor

Razones para el protocolo WebSocket

Antes de la aparición del protocolo WebSocket, la comunicación dúplex entre el cliente y el cliente se lograba mediante sondeo HTTP ( la tecnología de sondeo generalmente usa setInerval o setTimeout en los navegadores después de todo, el propósito original de HTTP no era la comunicación bidireccional ). Además, el envío de solicitudes HTTP solo puede ser iniciado por el cliente y no puede ser iniciado por el servidor al cliente. Para lograr una comunicación bidireccional entre el cliente y el servidor, el protocolo WebSocket nació en 2008 después de años de desarrollo.

principio de funcionamiento

Flujo de trabajo de cliente y servidor basado en el protocolo HTTP y el protocolo WebSocket

El principio de funcionamiento de WebSocket se puede dividir en tres etapas: protocolo de enlace, transferencia de datos y desconexión.

  • Apretón de manos
    • Cuando el cliente inicia una conexión WebSocket, el protocolo WebSocket reutiliza el proceso de solicitud de protocolo de enlace HTTP y establece la conexión enviando un encabezado de solicitud HTTP especial al servidor. Después de que el servidor verifica campos específicos en el encabezado de la solicitud para confirmar que admite el protocolo WebSocket, envía un encabezado de respuesta HTTP especial para la confirmación del protocolo de enlace. Una vez que el protocolo de enlace es exitoso, las dos partes establecen una conexión WebSocket y pueden realizar la transmisión de datos posterior.
  • transmisión de datos
    • Una vez que la conexión WebSocket se establece correctamente, el cliente y el servidor pueden realizar una transmisión de datos bidireccional en tiempo real a través de la conexión. Ambas partes pueden enviar y recibir mensajes, y los mensajes se transmiten en forma de marcos . El protocolo WebSocket define diferentes tipos de marcos, como marcos de texto y marcos binarios, para transmitir diferentes tipos de datos.
  • Desconectar
    • Cuando ya no se necesita una conexión, el cliente o servidor puede iniciar una solicitud para cerrar la conexión. Ambas partes intercambiarán marcos de cierre especiales para negociar el cierre de la conexión y garantizar que ambas partes reciban la solicitud de cierre.

Aplicación WebSocket

API WebSocket ( ejemplo de interfaz de usuario )
  • WebSocket API es una interfaz que utiliza el protocolo WebSocket para establecer un canal full-duplex para enviar y recibir mensajes. Durante el protocolo de enlace inicial entre el cliente y el servidor, el protocolo http se actualiza al protocolo WebSocket y se establece una conexión. La capa subyacente es el protocolo TCP. Una vez establecida la conexión, los mensajes se pueden enviar repetidamente a través de la interfaz WebSocket
  • WebSocket API se basa exclusivamente en eventos: una vez que se establece una conexión full-duplex, cuando el servidor envía datos o recursos al cliente, puede enviar automáticamente datos y notificaciones de cambios de estado.
  • Eventos WebSocket de uso común: onopen, onmessage, onclose, etc.
  • Métodos WebSocket de uso común: enviar () y cerrar ()
  • WebSocket属性: readyState (abierto, conectando, cerrando, cerrado)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Websocket</title>
</head>
<body>
<script>
    var socket;
    if (window.WebSocket) {
        socket = new WebSocket("ws://localhost:9999/hello");
        //相当于channelRead0,读取服务器端的消息
        socket.onmessage = function(ev){
            var rt = document.getElementById("responseText");
            rt.value = rt.value + "\n" + ev.data;
        }
        //开启连接
        socket.onopen = function(ev){
            var rt = document.getElementById("responseText");
            rt.value = "开启连接成功!";
        }
        //连接关闭
        socket.onclose = function(ev){
            var rt = document.getElementById("responseText");
            rt.value = rt.value + "\n" + "连接关闭成功!";
        }
    }
    //发送消息给服务器
    function send(msg){
        if(!window.socket){ //是否已创建socket
            return;
        }
        if(socket.readyState == WebSocket.OPEN){
            socket.send(msg);
        }else{
            alert("socket未连接");
        }
    }
</script>
<form onsubmit="return false">
    <textarea name="message" style="height:300px;width:300px"></textarea>
    <input type="button" value="Send" onclick="send(this.form.message.value)">
    <textarea id="responseText" style="height:300px;width:300px"></textarea>
    <input type="button" value="Clear" onclick="document.getElementById('responseText').value=''">
</form>
</body>
</html>

tcp

Protocolo de control de transmisión (Protocolo de control de transmisión), el protocolo TCP es un protocolo de comunicación orientado a la conexión, es decir, antes de transmitir datos, el remitente y el receptor establecen una conexión lógica y luego transmiten los datos, proporcionando datos confiables y sin errores. entre dos computadoras. Transmisión; en la conexión TCP, el cliente y el servidor deben estar claramente definidos. El cliente envía una solicitud de conexión al servidor. Cada creación de conexión requiere un "apretón de manos de tres vías". Cuando el cliente TCP y el servidor se desconectan , saluda cuatro veces

tres apretones de manos

Protocolo de enlace de tres vías TCP
  • El primer apretón de manos: el cliente envía un mensaje SYN (SEQ = x) al servidor y entra en el estado SYN_SEND. (El cliente envía una solicitud de conexión al servidor y espera la confirmación del servidor)
  • Segundo protocolo de enlace: el servidor recibe el mensaje SYN, responde con un mensaje SYN (SEQ=y) ACK (ACK=x+1) y entra en el estado SYN_RECV (el servidor envía una respuesta al cliente para notificarle que ha recibido solicitud de conexión)
  • El tercer apretón de manos: el cliente recibe el mensaje SYN del servidor, responde con un mensaje ACK (ACK = y + 1) y ingresa al estado Establecido (el cliente envía información de confirmación al servidor nuevamente para confirmar la conexión)

El protocolo de enlace de tres vías finaliza, el cliente TCP y el servidor establecen una conexión con éxito y luego se pueden transmitir los datos ~

saludar cuatro veces

  • El cliente tiene la intención de cerrar la conexión. En este momento, enviará un mensaje con el bit de bandera FIN en el encabezado TCP establecido en 1, es decir, un mensaje FIN. Después de eso, el cliente ingresa al estado FIN_WAIT_1.
  • Después de recibir el mensaje, el servidor envía un mensaje de respuesta ACK al cliente y luego el servidor ingresa al estado CLOSED_WAIT.
  • Después de recibir el mensaje de respuesta ACK del servidor, el cliente ingresa al estado FIN_WAIT_2.
  • Después de esperar a que el servidor procese los datos, también envía un mensaje FIN al cliente y luego el servidor ingresa al estado LAST_ACK.
  • Después de recibir el mensaje FIN del servidor, el cliente devuelve un mensaje de respuesta ACK y luego ingresa al estado TIME_WAIT.
  • Después de que el servidor recibe el mensaje de respuesta ACK, ingresa al estado CERRADO. En este punto, el servidor ha completado el cierre de la conexión.
  • Después de un período de 2 MSL, el cliente ingresa automáticamente al estado CERRADO. En este punto, el cliente también ha completado el cierre de la conexión.

Como se puede ver en la figura anterior, debe haber un FIN y un ACK en cada dirección, por lo que generalmente se le llama cuatro ondas. Nota sobre este punto: solo cuando cierra activamente la conexión puede ingresar al estado TIME_WAIT.

UDP

  • Protocolo de datagramas de usuario (el datagrama es la unidad básica de transmisión de red UDP)
  • UDP es un protocolo de comunicación sin conexión, es decir, el remitente y el receptor de datos no establecen una conexión lógica durante la transmisión de datos. Es decir, cuando una computadora envía datos a otra computadora, el extremo emisor no confirmará si el extremo receptor existe antes de enviar los datos. De manera similar, cuando el extremo receptor recibe los datos, no informará al extremo emisor si los datos han sido recibido.
  • Dado que el protocolo UDP consume menos recursos y tiene una alta eficiencia de comunicación, generalmente se usa para la transmisión de audio, video y datos ordinarios. Por ejemplo, la videoconferencia usa el protocolo UDP, porque en este caso incluso si uno o dos paquetes de datos son Si se pierde ocasionalmente, no causará ningún daño. Demasiado impacto en los resultados de recepción.
  • Sin embargo, cuando se utiliza el protocolo UDP para transmitir datos, debido a la naturaleza sin conexión de UDP, no se puede garantizar la integridad de los datos, por lo que no se recomienda utilizar el protocolo UDP al transmitir datos importantes.

protocolo IP

concepto

El Protocolo IP (Protocolo de Internet), también conocido como Protocolo de Internet, es un protocolo de paquetes de datos que admite la interconexión entre redes. Este protocolo funciona en la capa de red y su objetivo principal es mejorar la escalabilidad de la red. En comparación con la capa de transporte TCP, el protocolo IP proporciona un servicio de transmisión de paquetes de mejor esfuerzo, sin conexión/no confiable, que es similar al TCP. protocolo (Protocolo de control de transmisión) juntos forman el núcleo del conjunto de protocolos TCP/IP

Clasificación
  • IPv4: Asigne una dirección de 32 bits a cada host conectado a la red. Según las regulaciones TCP/IP, las direcciones IP se representan en binario y cada dirección IP tiene una longitud de 32 bits, es decir, 4 bytes; para facilitar su uso, las direcciones IP utilizan notación decimal con puntos, como "192.168.1.66".
  • IPv6: debido al floreciente desarrollo de Internet, la demanda de direcciones IP está aumentando. Para ampliar el espacio de direcciones, se utiliza una longitud de dirección de 128 bits para definir direcciones a través de IPv6, lo que resuelve el problema de los recursos insuficientes de direcciones de red.

  • 常用命令:
    ① ipconfig:查看本机 IP 地址(Linux下对应ifconfig)
    ② ping IP 地址:检查网络是否连通。

otro

La diferencia entre websocket y protocolo HTTP

Mismo punto

Ambos son protocolos de capa de aplicación que se utilizan para transmitir datos entre clientes y servidores.

diferencia

  • Hay diferentes formas de establecer una conexión.
    • En HTTP, la conexión debe restablecerse con cada solicitud. Cuando una página web necesita enviar solicitudes continuamente al servidor, es necesario restablecer la conexión para cada solicitud, lo que genera una sobrecarga de conexión y latencia de la red.
    • En WebSocket, solo es necesario establecer una conexión entre el cliente y el servidor una vez, y luego se puede mantener la conexión y se puede llevar a cabo la comunicación bidireccional.
  • Los métodos de transmisión de datos son diferentes.
    • En HTTP, los datos se transmiten mediante el modelo de solicitud-respuesta. El cliente envía una solicitud -> el servidor devuelve una respuesta.La comunicación entre el cliente y el servidor en este proceso es a través de texto.
    • En WebSocket, la comunicación entre el cliente y el servidor se realiza en forma binaria. Esto significa que WebSocket puede transferir datos más rápido y poder manejar tipos de datos más complejos.
  • Los tipos de datos admitidos son diferentes
    • En HTTP, los tipos de datos admitidos son limitados. Normalmente, solo se admiten tipos de datos estáticos como texto, imágenes y audio.
    • En WebSocket, dado que la transmisión de datos se realiza en forma binaria, puede admitir tipos de datos más complejos, como transmisiones de video y datos de juegos en tiempo real.
  • La seguridad es diferente
    • En HTTP, los datos se transmiten en texto claro, por lo que es fácil que los roben o manipulen. Para resolver este problema se introdujo HTTPS.
    • En WebSocket, los datos se transmiten en forma binaria, por lo que son más seguros y no pueden ser robados ni manipulados fácilmente.
  • Diferente en tiempo real
    • Debido al modelo de solicitud-respuesta de HTTP, el cliente solo puede actualizar los datos después de recibir una respuesta del servidor. Es decir, en aplicaciones con altos requisitos de tiempo real, es posible que HTTP no pueda cumplir con los requisitos.
    • WebSocket puede lograr una comunicación bidireccional en tiempo real, por lo que es más adecuado para aplicaciones con altos requisitos en tiempo real.

Supongo que te gusta

Origin blog.csdn.net/qq_34020761/article/details/132332912
Recomendado
Clasificación