jueves, 24 de agosto de 2017

REDES Batalla Naval


Silvia Quiroga

Batalla Naval


En este proyecto se simulara un juego de batalla naval entre dos computadores que se comunican a través del puerto serial, para esto se hará uso del protocolo PPP(Point to Point Protocol) pero haciendo algunas modificaciones especiales a las tramas que se explican a continuación:

Trama:

Bandera(1 Byte)
Carga Útil(2 Bytes)
CRC-16(2 Bytes)
Bandera(1 Byte)

Se usara la bandera estándar 01111110 (0x7E) y el polinomio generador especificado para CRC -16.

Se omiten los campos dirección y control pues los computadores están conectados directamente por el cable serial y en estos casos en LCP se puede negociar ACFC(Compresión de los campos de dirección y protocolo) . Así mismo se omite el campo protocolo pues no se requiere y se estaría enviando siempre la misma información en este campo para todas las tramas.

Todas las tramas tendrán la misma longitud (48 bits) y solo se tendrán en cuenta tramas de este tamaño cualquier otra trama será rechazada. Se utilizaran acuses para verificar que las tramas han llegado y se verificara el CRC-16 en la llegada de cada trama y en caso de detectar algún error se solicitara retransmisión de la última trama.

Para negociar quien será el jugador con el primer turno se transmite un primer mensaje por el canal y se espera una respuesta y dependiendo de esta se asigna el primer turno en una variable booleana que obtendrá el valor true para el jugador que inicie el juego en segundo lugar. Después de asignar los turnos el jugador que obtuvo el primero, deberá escoger el tamaño de los tableros el cual será enviado como parámetro a un método local y al método equivalente en el computador del otro jugador para inicializar el juego y poder acomodar los barcos.

Dentro de la carga útil los primeros 8 bits permitirán manejar los tipos de trama entre ellos ACK, NACK, trama de ataque, trama de respuesta a un ataque y trama de inicio de tableros. En caso de tratarse de una trama de ataque o de respuesta a un ataque el segundo byte de la carga útil representa las coordenadas de ataque y se dividirá en dos mitades, los primeros cuatro bits representaran posición horizontal(fila)  y los restantes la posición vertical(columna) como se muestra a continuación:

Carga útil:


Tipo trama(1)
Coordenada Fila Ataque
Coordenada columna Ataque



Cuando una trama es recibida, la aplicación lleva a cabo los siguientes pasos:
  1. Quita las banderas
  2. Revisa la integridad de la trama(CRC-16)
  3. En caso de ser correcta la comprobación del CRC extrae la carga útil.
  4. Evalúa el tipo de instrucción recibida y ejecuta las acciones correspondientes a dicha carga.

Referencias

n  [1] PPP, Presentación Ing. Enrique Ruiz


n  [2] Tanenbaum, Andrew,Redes de Computadores,Cuarta Edición Prentice Hall, 2003

No hay comentarios:

Publicar un comentario