2011-01-24 23 views
15

He estado leyendo acerca de la programación básica de la red, pero estoy teniendo dificultades para encontrar una explicación directa de qué es exactamente y socket, y cómo se relaciona con la pila OSI o TCP/IP.Conceptos básicos de socket

  1. ¿Alguien me puede explicar qué es un enchufe? ¿Es una estructura de datos definida por API o programador, o es un dispositivo de hardware en una tarjeta de red?

  2. ¿Qué capas de los modelos de red mencionados se ocupan de los zócalos "sin procesar"? ¿Capa de transporte? ¿Capa de red?

  3. En términos de los datos que pasan entre ellos, ¿son socket basados ​​en texto o binarios?

  4. ¿Existe una alternativa a la programación de red basada en sockets? ¿O todas las aplicaciones en red usan alguna forma de socket?

Si consigo tanto, debería tener una comprensión bastante clara de todo lo demás que estoy leyendo. ¡Gracias por cualquier ayuda!

Respuesta

7

respuestas cortas:

  1. socket es una abstracción de un extremo de la conexión IP - por lo que si usted piensa en él como una estructura de API, que no estén muy lejos. Lea http://en.wikipedia.org/wiki/Internet_socket
  2. Internet layer es decir, Protocolo IP. En la práctica, generalmente utiliza conectores explícitos que se unen a ciertos parámetros de capa de transporte (datagrama/UDP o secuencia/TCP)
  3. Los sockets envían datos, en orden de bytes de red, ya sea de texto o binario, depende del protocolo de capa superior.
  4. En teoría, probablemente sí - pero en la práctica todo el tráfico IP se realiza mediante 'enchufes'
+0

Gracias Kimvais! Entonces, ¿es seguro decir que alguien que implementa una estructura de socket debe permitir que se ajuste al protocolo IP? – Eugie

+0

... Además, si los sockets son construcciones de nivel de IP, ¿cuál es la distinción entre un socket que implementa IPv4 o IPSec? – Eugie

+0

Los sockets no implementan (generalmente) IPSec - usted (generalmente) solo usa el socket TCP o UDP 'ordinario' para crear el tráfico y los niveles inferiores de la pila de red (posiblemente en un nodo de red diferente) manejan la transformación ESP para IPSec . Desde el punto de vista de un programador de aplicaciones, no debería haber diferencia entre los sockets IPv4 e IPv6 que exceden las direcciones que necesita usar al abrir el socket. – Kimvais

4

El zócalo es un mecanismo de software proporcionado por el sistema operativo. Como su nombre lo indica, se puede considerar como un "tomacorriente" o algún conector eléctrico, aunque el zócalo no es un dispositivo físico, sino un mecanismo de software. En el mundo real, cuando tiene dos conectores eléctricos, puede conectarlos con un cable. De la misma manera, en la programación de red puede crear un socket en una computadora y otro socket en otra computadora y luego conectar esos sockets. Y cuando escribe datos en uno de ellos, lo recibe en el otro. También hay algunos tipos diferentes de enchufes. Por ejemplo, si está programando un software de servidor, desea tener un socket de escucha que nunca envíe o reciba datos reales, sino que solo escuche y acepte las conexiones entrantes y cree un nuevo socket para cada conexión nueva.

+0

¿Quién se encarga de enviar datos de un extremo al otro? –

3

Un zócalo, en C jerga, es una estructura de datos en el espacio del núcleo, lo que corresponde a un punto final de un UDP o sesión TCP (estoy usando la sesión muy sin apretar cuando se habla de UDP). Normalmente está asociado a un único número de puerto en el lado local y rara vez a más de un número "bien conocido" en cada lado de la sesión.

Un "socket raw" es un punto final en, más o menos, el transporte físico. Raramente se utilizan en la programación de aplicaciones, pero a veces se usan para varias cosas de diagnóstico (traceroute, ping, posiblemente otros) y pueden requerir privilegios elevados para abrirse.

Los zócalos son, en su naturaleza, un octeto-transporte binario.No es raro tratar los sockets (sockets TCP, al menos) como flujos basados ​​en texto.

Todavía no he visto un modelo de programación que no involucre algo así como enchufes, si profundiza lo suficiente, pero ciertamente ha habido otros modelos de hacer redes. El pseudo sistema de archivos "/ net /", donde abrir "/net/127.0.0.0.1/tcp/80" (o "tcp/www") le daría un manejador de archivo donde las escrituras terminan en un servidor web en localhost es solo uno.

Cuestiones relacionadas