¿Qué sucede si dos sistemas locales descargan el mismo recurso en el mismo puerto?

¿Qué sucede si dos sistemas locales descargan el mismo recurso en el mismo puerto?

Conozco la tabla NAT. Solo quiero saber qué sucede si dos clientes en una red de área local privada quieren descargar exactamente el mismo recurso en el mismo puerto. En otras palabras, cuando un paquete proviene del servidor, ¿cómo puede el enrutador decidir qué cliente debe recibir este paquete?

Si no me equivoco, el paquete entrante del servidor tiene la dirección IP de destino del enrutador, que es pública y es la misma para ambos, y también el número de puerto de destino, que resulta ser el mismo en este caso.

¿Existe algún mecanismo en el enrutador o servidor para detectar esto? ¿O es este comportamiento posible en primer lugar?

He buscado preguntas comoeste, lo cual tiene sentido que el error surja porque el puerto está ocupado, pero estoy preguntando acerca de dos sistemas separados.


Actualizar :Por los comentarios me di cuenta de que no había sido lo suficientemente claro así que déjame decirlo nuevamente con un ejemplo:

Solo me importa el puerto "fuente" de los dispositivos. Supongamos que tengo dos computadoras portátiles ( 192.168.2.10y 192.168.2.11), ambas están descargando el mismo archivo desde el mismo servidor en algún lugar de Internet. Cada uno de ellos tiene un sistema operativo que genera un puerto aleatorio por lo que la IP de origen y el puerto de origen serían algo así como: 192.168.2.10:6321y 192.168.2.11:7132. Pensé que en NAT, el enrutador configurará su dirección IP (pública) junto con los puertos de las computadoras portátiles, por lo que si la dirección IP pública del enrutador doméstico es 65.82.23.32, estos dos paquetes obtendrán la IP de origen y el puerto de origen respectivamente: 65.82.23.32:6321y 65.82.23.32:7132.

Ahora, cuando llega la respuesta, el enrutador puede determinar qué paquete es para qué computadora portátil a partir de los números de puerto, ¿verdad? Hasta ahora, todo bien. Pero, ¿qué sucede si accidental o intencionalmente dos computadoras portátiles generan exactamente el mismo puerto de origen? por ejemplo: 192.168.2.10:6000y 192.168.2.11:6000. Ahora el enrutador configurará su dirección IP pública como la dirección IP de origen como antes, pero ahora, si intenta usar esos números de puerto, esos paquetes tendrán exactamente la misma IP de origen y el mismo número de puerto de origen, como: 65.82.23.32:6000y 65.82.23.32:6000.

Aquí es donde me confundí: cuando llega la respuesta, ¿cómo puede el enrutador decidir qué paquete es para qué computadora portátil?

Después de la respuesta de @mfinni, me di cuenta de que no es así como funciona PAT. El dispositivo NAT (aquí enrutador) asignará puertos únicos a cada computadora portátil individual (dirección IP privada), luego los paquetes se enviarán con estos puertos únicos (por ejemplo 7777y 7778). Entonces, cuando llegue la respuesta, estará claro qué paquete es para qué computadora portátil de los puertos, luego el enrutador los convertirá 65.82.23.32:7777a 65.82.23.32:7778--> 192.168.2.10:6000, 192.168.2.11:6000respectivamente.

Respuesta1

Una conexión TCP (que subyace a HTTP y muchos otros protocolos) se define de forma única (en un momento dado) mediante 4 parámetros:

  • La IP local
  • El puerto local
  • La IP remota
  • El puerto remoto

Incluso si realiza la misma solicitud dos veces simultáneamente desde la misma computadora, incluso con las dos direcciones IP idénticas y el puerto de destino idéntico, el puerto de origen será diferente.

Del mismo modo, si tiene dos solicitudes provenientes de dos dispositivos que pasan por el mismo dispositivo NAT, el dispositivo NAT utilizará puertos de origen diferentes. Dependiendo del dispositivo, puede mantener los puertos de origen originales (y solo cambiar uno si hay un conflicto) o asignar siempre un nuevo puerto de origen independientemente del puerto de origen original.

El dispositivo NAT mantendrá para cada conexión una asignación en su tabla de traducción que indica que la conexión externa (IP externa, puerto de origen externo, IP de destino, puerto de destino) se asigna a la conexión interna (IP del host interno, puerto de origen del host interno, puerto de origen del host interno, IP, puerto de destino).

Respuesta2

La tabla NAT sabe que el puerto de origen en cada cliente es diferente, por lo que no enviará accidentalmente el paquete incorrecto al cliente interno incorrecto. El dispositivo NAT también asigna diferentes puertos de salida, y esos NO son los mismos entre diferentes clientes internos.

Respuesta3

Cuando te refieres NATprobablemente te refieres aNAPT. Lo que cambia el puerto de origen (al menos si es necesario) en el dispositivo NAT. Como tal, el puerto de origen cambiará.

Por ejemploiptables MASQUERADE

Al realizar NAT en este caso, también existe la necesidad de un "seguimiento de conexión", que simplemente realiza un seguimiento de qué "puerto externo" se relaciona con qué "cliente interno y puerto". En iptables verás a menudo la regla RELATED,ESTABLISHEDque utiliza. También encontrará que si se reinicia un enrutador que realiza NAPT, se desconectarán todas las conexiones. Mientras que un enrutador sin NAT generalmente simplemente reanudará las conexiones. (suponiendo que complete los reinicios antes de que se agote el tiempo de espera del cliente)

Respuesta4

El enrutador no utiliza el mismo número de puerto de origen que generan las computadoras portátiles en sus solicitudes salientes a la WAN, sino que genera sus propios puertos de origen únicos. La tabla NAT del enrutador convierte laptop1:6000 en publicip:N y laptop2:6000 en publicip:M. Entonces sabe dónde enrutar los paquetes entrantes y por qué puerto llega el tráfico desde Internet.

información relacionada