Red de conocimiento informático - Problemas con los teléfonos móviles - Las diferencias y principios entre socket, tcp y http

Las diferencias y principios entre socket, tcp y http

La diferencia entre http, protocolo TCP/IP y socket

La red se divide de abajo hacia arriba:

Capa física--

Capa de enlace de datos--

Capa de red--Protocolo IP

Capa de transporte--Protocolo TCP

Capa de sesión--

Capa de presentación y capa de aplicación: protocolo HTTP

1. Conexión TCP/IP

La razón por la que los teléfonos móviles pueden utilizar la función de red es porque la capa inferior del teléfono móvil implementa la Protocolo TCP/IP, que permite al teléfono móvil El terminal establece una conexión TCP a través de la red inalámbrica. El protocolo TCP puede proporcionar una interfaz para la red de capa superior, de modo que la transmisión de datos de la red de capa superior se establezca en una red "indiferenciada".

Establecer una conexión TCP requiere un "apretón de manos de tres vías":

El primer apretón de manos: el cliente envía un paquete syn (syn=j) al servidor e ingresa el SYN_SEND estado, esperando confirmación del servidor;

Segundo protocolo de enlace: cuando el servidor recibe el paquete syn, debe confirmar el SYN del cliente (ack=j 1) y, al mismo tiempo, también envía un paquete SYN (syn =k), es decir, el paquete SYN ACK, en este momento el servidor ingresa al estado SYN_RECV;

El tercer apretón de manos: el cliente recibe el paquete SYN+ACK del servidor y envía un paquete de confirmación ACK (ack = k 1) al servidor Después de enviar el paquete, el cliente y el servidor ingresan al estado ESTABLECIDO y completan el protocolo de enlace de tres vías.

El paquete transmitido durante el proceso de protocolo de enlace no contiene datos. Una vez completado el protocolo de enlace de tres vías, el cliente y el servidor comienzan oficialmente a transmitir datos. Idealmente, una vez que se establece una conexión TCP, la conexión TCP se mantendrá hasta que cualquiera de las partes cierre activamente la conexión. Al desconectarse, tanto el servidor como el cliente pueden iniciar activamente una solicitud para desconectar la conexión TCP. El proceso de desconexión requiere un "apretón de manos de cuatro vías" (el proceso no se detallará, es decir, el servidor y el cliente).

interacción, y finalmente desconectado).

2. Conexión HTTP

El protocolo HTTP es el Protocolo de transferencia de hipertexto (Protocolo de transferencia de hipertexto), que es la base de las redes web y es También se usa comúnmente para redes de teléfonos móviles. Uno de los protocolos, el protocolo HTTP, es una aplicación basada en el protocolo TCP.

La característica más importante de la conexión HTTP es que cada solicitud enviada por el cliente requiere que el servidor envíe una respuesta. Una vez completada la solicitud, la conexión se liberará activamente. El proceso desde el establecimiento de una conexión hasta su cierre se denomina "conexión".

1) En HTTP 1.0, cada solicitud del cliente requiere el establecimiento de una conexión separada. Después de procesar esta solicitud, la conexión se libera automáticamente.

2) En HTTP 1.1, se pueden procesar varias solicitudes en una conexión y se pueden superponer varias solicitudes. No es necesario esperar a que finalice una solicitud antes de enviar la siguiente.

Dado que HTTP liberará activamente la conexión después de cada solicitud, la conexión HTTP es una "conexión corta". Para mantener el programa cliente en línea, debe iniciar conexiones con el servidor continuamente.

Solicitar. El enfoque habitual es que incluso si no es necesario obtener ningún dato, el cliente también sigue enviando una solicitud de "mantener conectado" al servidor a intervalos regulares, y el servidor responde al cliente después de recibir la solicitud

Responder, indicando que el cliente está "en línea". Si el servidor no puede recibir la solicitud del cliente durante mucho tiempo, el cliente se considera "fuera de línea". Si el cliente no puede recibir la respuesta del servidor durante mucho tiempo, la red se considera desconectada.

3. Principio SOCKET

3.1 Concepto de socket

El socket es la piedra angular de la comunicación y admite el protocolo TCP/IP. La unidad operativa básica de la comunicación en red. Es una representación abstracta del punto final en el proceso de comunicación de la red y contiene cinco tipos de información necesaria para la comunicación de la red: el protocolo utilizado para la conexión, la dirección IP del host local, el puerto de protocolo del proceso local, la dirección IP de el host remoto y el protocolo del proceso remoto.

Cuando la capa de aplicación comunica datos a través de la capa de transporte, TCP encontrará el problema de proporcionar servicios concurrentes a múltiples procesos de aplicación al mismo tiempo. Es posible que varias conexiones TCP o múltiples procesos de aplicación necesiten transmitir datos a través del mismo puerto de protocolo TCP. Para distinguir diferentes procesos de aplicaciones y conexiones, muchos sistemas operativos de computadora proporcionan interfaces de socket (Socket) para que las aplicaciones interactúen con el protocolo TCP/IP.

La capa de aplicación puede comunicarse con la capa de transporte a través de la interfaz Socket para distinguir las comunicaciones de diferentes procesos de aplicación o conexiones de red para implementar servicios concurrentes para la transmisión de datos.

3.2 Establecer una conexión de socket

Establecer una conexión de socket requiere al menos un par de sockets, uno de los cuales se ejecuta en el cliente, llamado ClientSocket, y el otro se ejecuta en el servidor. llamado ServerSocket.

El proceso de conexión entre sockets se divide en tres pasos: monitoreo del servidor, solicitud del cliente y confirmación de la conexión.

Monitoreo del servidor: el socket del lado del servidor no localiza el socket del cliente específico, pero está en un estado de espera de conexión, monitorea el estado de la red en tiempo real y espera la solicitud de conexión del cliente.

Solicitud de cliente: se refiere al socket del cliente que realiza una solicitud de conexión y el destino a conectar es el socket del servidor. Para hacer esto, el socket del cliente primero debe describir el socket del servidor al que desea conectarse, indicar la dirección y el número de puerto del socket del lado del servidor y luego realizar una solicitud de conexión al socket del lado del servidor.

Confirmación de conexión: cuando el socket del lado del servidor escucha o recibe una solicitud de conexión del socket del cliente, responde a la solicitud del socket del cliente, establece un nuevo hilo y conecta el servidor al servidor. La descripción del socket final se envía al cliente. Una vez que el cliente confirma esta descripción, las dos partes establecen formalmente una conexión. El socket del lado del servidor continúa en estado de escucha y continúa recibiendo solicitudes de conexión de otros sockets del cliente.

4. Conexión SOCKET y conexión TCP/IP

Al crear una conexión Socket, puede especificar el protocolo de capa de transporte utilizado. Socket puede admitir diferentes protocolos de capa de transporte (TCP o UDP). Cuando se conecta mediante el protocolo TCP, la conexión Socket es una conexión TCP.

Socket es la encapsulación y aplicación del protocolo TCP/IP (a nivel de programador). También se puede decir que el protocolo TPC/IP es un protocolo de capa de transporte, que resuelve principalmente cómo transmitir datos en la red, mientras que HTTP es un protocolo de capa de aplicación, que resuelve principalmente cómo empaquetar datos. Con respecto a la relación entre los protocolos TCP/IP y HTTP, la red tiene una introducción relativamente fácil de entender:

“Cuando transmitimos datos, solo podemos usar el protocolo TCP/IP (capa de transporte), pero en ese caso, si

No hay una capa de aplicación, el contenido de los datos no se puede identificar. Si desea que los datos transmitidos sean significativos, debe utilizar un protocolo de capa de aplicación. protocolos, como HTTP, FTP, TELNET, etc. También puede definir su propio protocolo de capa de aplicación. WEB utiliza el protocolo HTTP como protocolo de capa de aplicación para encapsular información de texto HTTP y luego usa TCP/IP como protocolo de capa de transporte para enviar. a la red.

¿Cuál es el socket del que más hablamos? De hecho, el socket es una encapsulación del protocolo TCP/IP. El socket en sí no es un protocolo, sino una interfaz de llamada.

(API), podemos utilizar el protocolo TCP/IP a través de Socket. De hecho, Socket no está necesariamente relacionado con el protocolo TCP/IP. Cuando se diseñó la interfaz de programación de Socket, se esperaba que también pudiera adaptarse a otras aplicaciones. Protocolo de red Por lo tanto, la aparición de Socket solo facilita a los programadores el uso de la pila de protocolos TCP/IP. Es una abstracción del protocolo TCP/IP, formando así algunas de las interfaces de funciones más básicas. como crear,

escuchar, conectar, aceptar, enviar, leer y escribir, etc. Hay un dicho sobre la relación entre socket y protocolo TCP/IP que es más fácil de entender

<. p >Respuesta:

“TCP/IP es solo una pila de protocolos, al igual que el mecanismo operativo de un sistema operativo. Debe implementarse de manera concreta y al mismo tiempo proporcionar una interfaz de operación externa. Así como el sistema operativo proporciona una interfaz de programación estándar, como la interfaz de programación win32, TCP/IP también proporciona una interfaz que los programadores pueden utilizar para el desarrollo de redes. Esta es la interfaz de programación Socket. ”

De hecho, el TCP de la capa de transporte se basa en el protocolo IP de la capa de red, y el protocolo HTTP de la capa de aplicación se basa en el protocolo TCP de la capa de transporte y el propio Socket. No es un protocolo, como el anterior. Dicho esto, solo proporciona una interfaz para la programación TCP o UDP. Socket es una herramienta para el desarrollo de comunicación portuaria, que es de nivel más bajo.

5. y conexión HTTP

Dado que la conexión Socket suele ser una conexión TCP, una vez que se establece la conexión Socket, las partes comunicantes pueden comenzar a enviarse datos entre sí hasta que se desconecte la conexión entre las dos partes. En las aplicaciones de red reales, la comunicación entre el cliente y el servidor a menudo se realiza a través de múltiples nodos intermedios, como enrutadores, puertas de enlace, cortafuegos, etc. De forma predeterminada, la mayoría de los cortafuegos cerrarán las conexiones que hayan estado inactivas durante mucho tiempo. tiempo, lo que provoca que la conexión del Socket se desconecte. Por lo tanto, la red debe ser informada mediante sondeo que la conexión está activa.

La conexión HTTP utiliza el método "solicitud-respuesta". deben establecerse al realizar una solicitud, pero el cliente debe realizar una solicitud al servidor antes de que el servidor pueda responder con datos.

En muchos casos, el servidor necesita enviar datos activamente al cliente. mantenga los datos del cliente y del servidor en tiempo real y sincronizados. En este momento, si las dos partes establecen una conexión de Socket, el servidor puede transmitir directamente los datos al cliente; Conexión HTTP, el servidor necesita esperar hasta que el cliente envíe una solicitud antes de poder transmitir los datos al cliente. Por lo tanto, el cliente envía regularmente solicitudes de conexión al servidor

Solicitud, no solo puede permanecer. en línea, pero también puede "preguntar" al servidor si hay datos nuevos y, de ser así, los datos se pasarán al cliente.

El protocolo http es el protocolo de la capa de aplicación

Hay una descripción más vívida: HTTP es un automóvil que proporciona una forma específica de encapsular o mostrar datos; Socket es un motor que proporciona la capacidad de comunicación en red. dos computadoras no es más que comunicación de datos entre dos puertos. La forma específica en la que se mostrarán los datos está definida por diferentes protocolos de capa de aplicación, como HTTP`FTP`...