Duda IP,Puerto, sockets

Duda IP,Puerto, sockets

de Ignacio Federico Alesina Acuña -
Número de respuestas: 1

Buenas noches, disculpen que consulte por acá pero no pude ir a la clase de consulta. Me surgió una duda respecto a los cabezales de TCP y UDP. En el libro se dice que los mismos solamente constan de información respecto a los puertos y no a las direcciones IP (haciendo referencia a direccionamiento), ya que supongo que de eso se encarga la capa de red y efectivamente eso pasa porque me fije en WireShark que los segmentos de la capa de transporte no tienen información sobre IPs. 

Pero ahora me surge la duda de cómo el socket sabe la IP origen del mensaje que está recibiendo. Ya que al demultiplexar el cabezal de la capa de red se perdería la información referente a la dirección IP.

Por ejemplo en conexiones TCP, cuando se recibe un mensaje al puerto x del servidor que atiende todas las conexiones en el puerto, la capa de red sabe a que socket redirigir la consulta dependiendo de la IPorigen y el puerto\_origen (en el caso de que ya estuviera establecida, sino crea un socket nuevo). Entonces como los segmentos TCP en su cabezal no poseen la información sobre la IP, la capa de red en el caso de que dos procesos independientes de hosts distintos tengan establecida la conexión sobre el mismo número de puerto en sus hosts clientes (lo cual es poco probable pero podría pasar), no sabría de cual host viene el mensaje, por tanto ni a cual socket enviar el mensaje ni a donde responder. Por lo tanto puedo suponer que en algún lugar fuera del segmento (por ejemplo en variables del sistema operativo) quedan almacenadas las direcciones IP de los clientes que van comunicandose, y de ahí la capa de red pueda tomar esa información.

También en la cartilla que ustedes nos brindaron, por ejemplo en UDP al hacer un receive el mismo retorna el mensaje, la ip y el puerto desde donde se envió y no entiendo como esto sería posible desde la capa de transporte.

Espero no haber confunido más con el ejemplo. 

Saludos

En respuesta a Ignacio Federico Alesina Acuña

Re: Duda IP,Puerto, sockets

de Jorge Visca -
Efectivamente, en el stack TCP/IP la separación de capas no es perfecta. En cierto sentido TCP y UDP no pueden ser pensados de forma independiente de IP, porque reusan sus direcciones como parte de las suyas propias. Por eso capa 4 depende de la colaboración de la capa 3.
En el ejemplo UDP, la capa 3 de red luego de procesar el cabezal IP le pasa el payload (el datagrama UDP) a la capa 4 de transporte, y además le pasa las direcciones IP que extrajo. Luego la capa 4 extrae los puertos y el payload de transporte; luego coloca en el socket correspondiente la IP origen (que le paso la capa 3), el puerto origen y el payload que extrajo.