Sea un proceso del host C que tiene un socket UDP con el número de puerto 6789. Suponga también que los hosts A y B envían cada uno de ellos un segmento UDP al host C con el número de puerto de destino 6789. ¿Serán dirigidos ambos segmentos al mismo socket del host C? En caso afirmativo, ¿cómo sabrá el proceso del host C que estos dos segmentos proceden de dos hosts distintos?
Entiendo que la respuesta es que si, que los segmentos son dirigidos al socket UDP con puerto 6789.
Y que los puedo identificar porque esos paquetes llegaron al host con un header IP que tiene la IP origen del paquete y en el header UDP tengo el puerto origen, y con esos dos datos identifico cada uno de esos host.
Lo que no entiendo es, como en capa de transporte puedo obtener la información del header IP que venia asociado a ese paquete UDP que recibí (porque al subir la informacion de una capa hacia la otra (red a transporte), el header IP no se envia).
Se lo pregunta a la capa de abajo? Es algo que depende de cada implementacion pero siempre algún mecanismo existe para obtenerlo? Por ejemplo en un link que encontré en el foro de la implementacion de un servidor UDP en java (https://systembash.com/a-simple-java-udp-server-and-udp-client/), veo que usa el metodo getAddress en un objeto DatagramPacket, pero ni idea de como están implementados estas clases.
En definitiva, mi pregunta es que justificación se esperaba en esta respuesta del parcial?