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:
- Quita
las banderas
- Revisa
la integridad de la trama(CRC-16)
- En
caso de ser correcta la comprobación del CRC extrae la carga útil.
- 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