Browse Source

Rafa: anadiendo diags

Rafael Arce Nazario 8 years ago
parent
commit
fa9137f850
5 changed files with 83 additions and 69 deletions
  1. 47
    40
      README-en.md
  2. 36
    29
      README-es.md
  3. BIN
      images/main1.png
  4. BIN
      images/main2.png
  5. BIN
      images/main3.png

+ 47
- 40
README-en.md View File

5
 ![main2.png](images/main2.png)
5
 ![main2.png](images/main2.png)
6
 ![main3.png](images/main3.png)
6
 ![main3.png](images/main3.png)
7
 
7
 
8
+[Verano 2016 - Ive - Tatiana - Rafa]
8
 
9
 
9
-When working with arrays, two common tasks are searching for data and sorting the data using a certain order, ascending or descending, alphabetically or numerically. To efficiently carry out these tasks, searching and sorting algorithms are used. One simple searching algorithm is linear search. Two well known sorting algorithms are the Selection Sort and the Bubble Sort. In this laboratory experience you will complete an application to monitor network flow to practice the implementation of algorithms for searching and sorting.
10
+When working with arrays, two common tasks are searching for data and sorting the data using a certain order, ascending or descending, alphabetically or numerically. To efficiently carry out these tasks, searching and sorting algorithms are used. One simple searching algorithm is linear search. Two well known sorting algorithms are Selection Sort and Bubble Sort. In this laboratory experience, you will complete an application to monitor network flow to practice the implementation of algorithms for searching and sorting.
10
 
11
 
11
 
12
 
12
 ##Objectives:
13
 ##Objectives:
32
 
33
 
33
 4. Studied the concepts and instructions for the laboratory session.
34
 4. Studied the concepts and instructions for the laboratory session.
34
 
35
 
35
-5. Taken the Pre-Lab quiz available through the course’s Moodle portal.
36
+5. Taken the Pre-Lab quiz, available in Moodle.
36
 
37
 
37
 ---
38
 ---
38
 
39
 
39
 ---
40
 ---
40
 
41
 
41
 
42
 
42
-##Communication between computers
43
+##Communication between Computers
43
 
44
 
44
 Computers communicate with each other through the *Internet Protocol* (IP).  When a computer sends information to another computer it is sent via *Internet Packets* that contain the Internet address of the sender computer (*source address*), and the Internet address of the receiving computer (*destination address*). Internet addresses are used to guide information from one computer to another, but, once a packet arrives to its destination, who is supposed to receive the information? Which application should receive the information?
45
 Computers communicate with each other through the *Internet Protocol* (IP).  When a computer sends information to another computer it is sent via *Internet Packets* that contain the Internet address of the sender computer (*source address*), and the Internet address of the receiving computer (*destination address*). Internet addresses are used to guide information from one computer to another, but, once a packet arrives to its destination, who is supposed to receive the information? Which application should receive the information?
45
 
46
 
46
-The internet packets should also specify the application that sends the information and the application that should receive it. We can think that the Internet address are the mailing address of a house, and the applications that send and receive the information are the people that send and receive the correspondence. To send a letter by mail, one must specify to whom the letter is being sent. This corresponds to specify the application that receives the information. To identify the source application and the destination application, the Internet protocol uses what is known as *port numbers*. Looking at the information on the packet, the addresses and ports of the source and destination can be identified.
47
+The internet packets should also specify the application that sends the information and the application that should receive it. We can think that the Internet address is the mailing address of a house, and the applications that send and receive the information are the people that send and receive the correspondence. To send a letter by mail, one must specify to whom the letter is being sent. This corresponds to specifying the application that receives the information. To identify the source application and the destination application, the Internet protocol uses what is known as *port numbers*. Looking at the information on the packet, the addresses and ports of the source and destination can be identified.
47
 
48
 
48
 
49
 
49
-For instance, when your computer in the laboratory is contacting the Moodle server, the packets that carry the information from your computer to the Moodle server contain the source address of the laboratory computer and the destination address of the Moodle server. The source port is the one of your web browser and the destination port is the web server that serves Moodle.
50
+For instance, when your computer is in the laboratory contacting the Moodle server, the packets that carry the information from your computer to the Moodle server contain the source address of the laboratory computer and the destination address of the Moodle server. The source port is web browser and the destination port is the web server that serves Moodle.
50
 
51
 
51
 Internet addresses are stored on 4 bytes (32 bits), normally presented to users as strings of 4 decimal values. Each decimal value between 0 and 255 is the decimal representation of one of the 4 bytes:  "(0-255).(0-255).(0-255).(0-255)". Examples of IP addresses are: `10.0.1.10`, `192.168.10.11`, `136.145.54.10`.
52
 Internet addresses are stored on 4 bytes (32 bits), normally presented to users as strings of 4 decimal values. Each decimal value between 0 and 255 is the decimal representation of one of the 4 bytes:  "(0-255).(0-255).(0-255).(0-255)". Examples of IP addresses are: `10.0.1.10`, `192.168.10.11`, `136.145.54.10`.
52
 
53
 
53
 Port numbers are stored on 2 bytes (16 bits). Therefore, port numbers range from 0 to 65535. Some port numbers assigned to known service applications are: 22 for `ssh`, 23 for `telnet`, 25 `smtp`, 80 for `http`. 
54
 Port numbers are stored on 2 bytes (16 bits). Therefore, port numbers range from 0 to 65535. Some port numbers assigned to known service applications are: 22 for `ssh`, 23 for `telnet`, 25 `smtp`, 80 for `http`. 
54
 
55
 
55
-The application that you will see today can be used to monitor what is known as NetFlows. One NetFlow is composed of the aggregation of the packets of an unidirectional communication between the the applications of two computers. For instance, a NetFlow can be composed of the packets used to send the information from you browser to the `http` application of the web server running Moodle. 
56
+The application that you will see today can be used to monitor what is known as NetFlows. One NetFlow is composed of the aggregation of the packets of an unidirectional communication between the the applications of two computers. For instance, a NetFlow can be composed of the packets used to send the information from your browser to the `http` application of the web server running Moodle. 
56
 
57
 
57
 
58
 
58
 Figure 1 shows the interface for the *Network Analyzer* application.
59
 Figure 1 shows the interface for the *Network Analyzer* application.
70
 The application that you will complete gives the user the ability to analyze the status of the network.  Among others it allows to:
71
 The application that you will complete gives the user the ability to analyze the status of the network.  Among others it allows to:
71
 
72
 
72
 * identify which communications transmit the largests amount of data
73
 * identify which communications transmit the largests amount of data
73
-* which applications are running in certain computers
74
-* which computers transmit a large amount of packets compared to the amount of data
74
+* identify which applications are running in certain computers
75
+* identify which computers transmit a large amount of packets compared to the amount of data
75
 
76
 
76
 ##Libraries
77
 ##Libraries
77
 
78
 
78
-For this laboratory experience you will use objects of class `vector`, which are similar to arrays, and you will need to know how to use the `size()` method of the `vector` class objects. You should also familiarize yourself with the `Packet` class defined in this project. The `Packet.h` library contains the setters and getters necessary to fill the information of a NetFlow packet.
79
+For this laboratory experience, you will use objects of class `vector`, which are similar to arrays, and you will need to know how to use the `size()` method of the `vector` class objects. You should also familiarize yourself with the `Packet` class defined in this project. The `Packet.h` library contains the setters and getters necessary to fill the information of a NetFlow packet.
79
 
80
 
80
 ---
81
 ---
81
 
82
 
124
 136.145.181.126 136.145.181.99 57 33 965 14
125
 136.145.181.126 136.145.181.99 57 33 965 14
125
 ```
126
 ```
126
 
127
 
127
-###Exercise 0: Familiarize yourself with the `Packet` class.
128
+###Exercise 1 - Familiarize Yourself with the `Packet` Class.
128
 
129
 
129
 ####Instructions
130
 ####Instructions
130
 
131
 
131
-1. Load the Qt project called `NetworkAnalyzer` by double-clicking on the `NetworkAnalyzer.pro` file in the `Documents/eip/Sorting-NetworkAnalyzer` folder of your computer. You may also go to  `http://bitbucket.org/eip-uprrp/sorting-networkanalyzer` to download the `Sorting-NetworkAnalyzer` folder to your computer.
132
+1. Load the project  `NetworkAnalyzer` into `QtCreator`. There are two ways to do this:
133
+
134
+    * Using the virtual machine: Double click the file `NetworkAnalyzer.pro` located in the folder `/home/eip/labs/sorting-networkanalyzer` of your virtual machine.
135
+    * Downloading the project’s folder from `Bitbucket`: Use a terminal and write the command `git clone http:/bitbucket.org/eip-uprrp/sorting-networkanalyzer` to download the folder `sorting-networkanalyzer` from `Bitbucket`. Double click the file `NetworkAnalyzer.pro` located in the folder that you downloaded to your computer.
132
 
136
 
133
 2. Open the `packet.cpp` file. Study the attributes and methods of the `Packet` class.
137
 2. Open the `packet.cpp` file. Study the attributes and methods of the `Packet` class.
134
 
138
 
135
 3. The data that the NetworkAnalyzer application manages are stored in a vector of `Packet` objects. The vector is a class provided in the C++ Standard Template Library that stores data and objects of the same type. As with arrays, vectors assign an index (starting with the index 0) to each element they store. The i-th element of a vector `V` can be accessed using `V[i]`. The main difference between vectors and arrays is that the size of vectors can change, a size doesn't have to be defined beforehand, contrary to arrays.
139
 3. The data that the NetworkAnalyzer application manages are stored in a vector of `Packet` objects. The vector is a class provided in the C++ Standard Template Library that stores data and objects of the same type. As with arrays, vectors assign an index (starting with the index 0) to each element they store. The i-th element of a vector `V` can be accessed using `V[i]`. The main difference between vectors and arrays is that the size of vectors can change, a size doesn't have to be defined beforehand, contrary to arrays.
136
 
140
 
137
-    A method `met` of the object in position `i` in the vector can be accessed writing `V[i].met()`. The contents of all of the attributes of an object can be assigned to another object of the same class “at once”. For example, you can assign the contents of all of the attributes of the object in the position `k` of the vector `V` the corresponding attributes of the object in the position `i` of the vector `V` by writing `V[i]=V[k]`.
141
+4. A method `met` of the object in position `i` in the vector can be accessed writing `V[i].met()`. The contents of all of the attributes of an object can be assigned to another object of the same class “at once”. For example, you can assign the contents of all of the attributes of the object in the position `k` of the vector `V` the corresponding attributes of the object in the position `i` of the vector `V` by writing `V[i]=V[k]`.
138
 
142
 
139
-###Exercise 1: Filter communications
143
+###Exercise 2 - Filter Communications
140
 
144
 
141
 ####Instructions
145
 ####Instructions
142
 
146
 
143
 1. Open the file `Filter.cpp`. In this exercise you will complete the following functions that can be found in the file:
147
 1. Open the file `Filter.cpp`. In this exercise you will complete the following functions that can be found in the file:
144
 
148
 
145
-* `FilterBySrcAddr`
146
-* `FilterByDstAddr`
147
-* `FilterBySrcPort`
148
-* `FilterByDstPort`
149
-
150
-Each one of the functions receives a vector of objects of class `Packet` and a search key. Each function (notice their names) is related to an attribute of the `Packet` class and should filter the packets in the vector that correspond to the key. To filter these packets you will use a modified version of the linear search algorithm that consists of a sequential search to find each occurrence of a particular record of data. In each of the functions, the algorithm must search through all the packets in the vector and disable the packets that are not equal to the search key. To deactivate the packet use the `disable()` method of the `Packet` class. The filter consists of keeping only the packets that correspond to the key.
149
+    * `FilterBySrcAddr`
150
+    * `FilterByDstAddr`
151
+    * `FilterBySrcPort`
152
+    * `FilterByDstPort`
151
 
153
 
154
+    Each one of the functions receives a vector of objects of class `Packet` and a search key. Each function (notice their names) is related to an attribute of the `Packet` class and should filter the packets in the vector that correspond to the key. To filter these packets you will use a modified version of the linear search algorithm that consists of a sequential search to find each occurrence of a particular record of data. In each of the functions, the algorithm must search through all the packets in the vector and disable the packets that are not equal to the search key. To deactivate the packet use the `disable()` method of the `Packet` class. The filter consists of keeping only the packets that correspond to the key.
152
 
155
 
153
-For instance, if you are filtering by `Source Address` and the search key is 136.145.181.130, the `FilterBySrcAddr` function will keep only the packets in the vector whose `Source Address` is 136.145.181.130 and deactivate the others.
156
+    For instance, if you are filtering by `Source Address` and the search key is 136.145.181.130, the `FilterBySrcAddr` function will keep only the packets in the vector whose `Source Address` is 136.145.181.130 and deactivate the others.
154
 
157
 
155
-The following figure is an screenshot of the application interface after filtering the data by `Source Address` with search key 136.145.181.130.
158
+    The following figure is an screenshot of the application interface after filtering the data by `Source Address` with search key 136.145.181.130.
156
 
159
 
157
----
160
+    ---
158
 
161
 
159
-![figure3.png](images/figure3.png)
162
+    ![figure3.png](images/figure3.png)
160
 
163
 
161
-**Figure 3.** Interface of the *Network Analyzer* application with the network flow packets filtered by `Source Address` with the key 136.145.181.130.
164
+    **Figure 3.** Interface of the *Network Analyzer* application with the network flow packets filtered by `Source Address` with the key 136.145.181.130.
162
 
165
 
163
----
166
+    ---
164
 
167
 
165
-###Exercise 2: Sorting data
168
+###Exercise 2 - Sorting Data
166
 
169
 
167
 
170
 
168
 ####Instructions
171
 ####Instructions
169
 
172
 
170
 1. Open the `Sort.cpp` file. In this exercise you will complete the following functions that can be found in the file:
173
 1. Open the `Sort.cpp` file. In this exercise you will complete the following functions that can be found in the file:
171
 
174
 
172
-* `SortBySrcAddr`
173
-* `SortByDstAddr`
174
-* `SortBySrcPort`
175
-* `SortByDstPort`
176
-
177
-Each one of these functions receives a vector of `Packet` objects. Each function (notice their names) is related to an attribute of the `Packet` class and should order the packets in the vector according to the attribute of interest.
175
+    * `SortBySrcAddr`
176
+    * `SortByDstAddr`
177
+    * `SortBySrcPort`
178
+    * `SortByDstPort`
178
 
179
 
179
-The following figure is a screenshot of the application interface after sorting the data by `Source Address`.
180
+    Each one of these functions receives a vector of `Packet` objects. Each function (notice their names) is related to an attribute of the `Packet` class and should order the packets in the vector according to the attribute of interest.
180
 
181
 
181
----
182
+    The following figure is a screenshot of the application interface after sorting the data by `Source Address`.
182
 
183
 
183
-![figure4.png](images/figure4.png)
184
+    ---
184
 
185
 
185
-**Figure 4.** Interface of the *Network Analyzer* application with the network flow packets ordered by `Source Address`.
186
+    ![figure4.png](images/figure4.png)
186
 
187
 
187
----
188
+    **Figure 4.** Interface of the *Network Analyzer* application with the network flow packets ordered by `Source Address`.
188
 
189
 
190
+    ---
189
 
191
 
190
 2. Complete the `SortBySrcAddr` function implementing the *Bubble Sort* algorithm, sorting the packets by `source address`.
192
 2. Complete the `SortBySrcAddr` function implementing the *Bubble Sort* algorithm, sorting the packets by `source address`.
191
 
193
 
201
 
203
 
202
 ##Deliverables
204
 ##Deliverables
203
 
205
 
204
-1. Use "Deliverables 1" in Moodle to upload the `Filter.cpp` file that you modified in Exercise 1. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
206
+1. Use "Deliverable 1" in Moodle to upload the `Filter.cpp` file that you modified in Exercise 1. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
205
 
207
 
206
-2. Use "Deliverables 2" in Moodle to upload the `Sort.cpp` file that you modified in Exercise 2. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
208
+2. Use "Deliverable 2" in Moodle to upload the `Sort.cpp` file that you modified in Exercise 2. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
207
 
209
 
208
 ---
210
 ---
209
 
211
 
217
 
219
 
218
 [3] http://www.java2novice.com/java-sorting-algorithms/quick-sort/
220
 [3] http://www.java2novice.com/java-sorting-algorithms/quick-sort/
219
 
221
 
220
-[4] http://intranet.deei.fct.ualg.pt/IC/t22.html
222
+[4] http://intranet.deei.fct.ualg.pt/IC/t22.html
223
+
224
+
225
+
226
+
227
+

+ 36
- 29
README-es.md View File

5
 ![main2.png](images/main2.png)
5
 ![main2.png](images/main2.png)
6
 ![main3.png](images/main3.png)
6
 ![main3.png](images/main3.png)
7
 
7
 
8
-Dos tareas comunes cuando se trabaja con arreglos de datos son el buscar datos y el organizar los datos usando algún orden, ascendente o descendente, alfabéticamente o numéricamente. Para realizar estas tareas eficientemente se siguen algoritmos de búsqueda y de ordenamiento. Un algoritmo sencillo para hacer búsquedas es el de búsqueda lineal. Dos algoritmos de ordenamiento sencillos y bien conocidos son el ordenamiento de selección (Selection sort) y el ordenamiento por burbujas (Bubble sort). En esta experiencia de laboratorio completarás una aplicación para el monitoreo de flujo de redes para practicar la implementación del algoritmo de búsqueda lineal y algoritmos de búsqueda.
8
+[Verano 2016- Ive - Tatiana - Rafa]
9
+
10
+Dos tareas comunes cuando se trabaja con arreglos de datos son buscar datos y organizar los datos usando algún orden, ascendente o descendente, alfabéticamente o numéricamente. Para realizar estas tareas eficientemente se siguen algoritmos de búsqueda y de ordenamiento. Un algoritmo sencillo para hacer búsquedas es la búsqueda lineal. Dos algoritmos de ordenamiento sencillos y bien conocidos son el ordenamiento de selección (Selection sort) y el ordenamiento por burbujas (Bubble sort). En esta experiencia de laboratorio completarás una aplicación para el monitoreo de flujo de redes para practicar la implementación del algoritmo de búsqueda lineal y algoritmos de búsqueda.
9
 
11
 
10
 
12
 
11
 ##Objetivos:
13
 ##Objetivos:
32
 
34
 
33
 4. Estudiar los conceptos e instrucciones para la sesión de laboratorio.
35
 4. Estudiar los conceptos e instrucciones para la sesión de laboratorio.
34
 
36
 
35
-5. Tomar el quiz Pre-Lab que se encuentra en Moodle.
37
+5. Tomar el quiz Pre-Lab, disponible en Moodle.
36
 
38
 
37
 ---
39
 ---
38
 
40
 
41
 
43
 
42
 ##Comunicación entre computadoras
44
 ##Comunicación entre computadoras
43
 
45
 
44
-Las computadoras se comunican por medio del Internet utilizando el *Protocolo de Internet* (IP, por sus siglas en inglés). Cuando una computadora envía información (o mensaje) a otra computadora, la información se envía por *Paquetes de Internet* que contienen la *dirección fuente* ("source address"), que es la dirección de Internet de la computadora que está enviando la información, y la *dirección del destino* ("destination address"), que es dirección de Internet de la computadora que debe recibir el mensaje. Las direcciones de Internet se usan para guiar la información de una computadora a otra, pero, una vez el paquete llega a su destino, ?quién se supone que reciba la información? ?Cuál aplicación debe recibir la información?
46
+Las computadoras se comunican por medio del Internet utilizando el *Protocolo de Internet* (IP, por sus siglas en inglés). Cuando una computadora envía información (o mensaje) a otra computadora, la información se envía por *Paquetes de Internet* que contienen la *dirección fuente* ("source address"), que es la dirección de Internet de la computadora que está enviando la información, y la *dirección del destino* ("destination address"), que es dirección de Internet de la computadora que debe recibir el mensaje. Las direcciones de Internet se usan para guiar la información de una computadora a otra, pero, una vez el paquete llega a su destino, ¿quién se supone que reciba la información? ¿Cuál aplicación debe recibir la información?
45
 
47
 
46
-Los paquetes de internet también deben especificar la aplicación que envía la información y la aplicación que debe recibirla. Podemos pensar que las direcciones de Internet son las direcciones de correo de una casa, y que las aplicaciones que envían y reciben la información son las personas que envían y reciben la correspondencia. Para enviar una carta por correo, hay que especificar a qué persona se le está enviando la carta. Esto corresponde a especificar la aplicación que recibe la información. Para identificar la aplicación fuente y la aplicación del destino, el protocolo de Internet usa lo que se conoce como *números de puerto*. De este modo, mirando la información del paquete, se puede identificar las direcciones y puertos de la fuente y del destino.
48
+Los paquetes de internet también deben especificar la aplicación que envía la información y la aplicación que debe recibirla. Podemos pensar que las direcciones de Internet son las direcciones de correo de una casa, y que las aplicaciones que envían y reciben la información son las personas que envían y reciben la correspondencia. Para enviar una carta por correo, hay que especificar a qué persona se le está enviando la carta. Esto corresponde a especificar la aplicación que recibe la información. Para identificar la aplicación fuente y la aplicación del destino, el protocolo de Internet usa lo que se conoce como *números de puerto*. Mirando la información del paquete, se puede identificar las direcciones y puertos de la fuente y del destino.
47
 
49
 
48
-Por ejemplo, cuando la computadora que usas en un laboratorio se comunica con el servidor donde se encuentra el programa  Moodle, los paquetes que llevan la información de tu computadora al servidor contienen la dirección de la fuente, que es la computadora del laboratorio, y la dirección del destinatario, que es el servidor de Moodle. El puerto fuente es el de tu buscador web y el puerto destinatario es el del servidor de Moodle.
50
+Por ejemplo, cuando la computadora que usas en un laboratorio se comunica con el servidor donde se encuentra el programa Moodle, los paquetes que llevan la información de tu computadora al servidor contienen la dirección de la fuente, que es la computadora del laboratorio, y la dirección del destinatario, que es el servidor de Moodle. El puerto fuente es el de tu buscador web y el puerto destinatario es el del servidor de Moodle.
49
  
51
  
50
 Las direcciones de internet ocupan 4 bytes (32 bits) y usualmente se presentan al usuario como cadenas de 4 valores decimales. Cada valor decimal entre 0 y 255 es la representación decimal  de uno de los 4 bytes:
52
 Las direcciones de internet ocupan 4 bytes (32 bits) y usualmente se presentan al usuario como cadenas de 4 valores decimales. Cada valor decimal entre 0 y 255 es la representación decimal  de uno de los 4 bytes:
51
  "(0-255).(0-255).(0-255).(0-255)". Algunos ejemplos de direcciones de IP son:
53
  "(0-255).(0-255).(0-255).(0-255)". Algunos ejemplos de direcciones de IP son:
53
 
55
 
54
 Los números de puertos ocupan 2 bytes (16 bits). Por lo tanto, los valores para los números de puertos van de 0 a 65535. Algunos números de puertos asignados a aplicaciones de servicios conocidos son: 22 para `ssh`, 23 para `telnet`, 25 para `smtp`, 80 para `http`.   
56
 Los números de puertos ocupan 2 bytes (16 bits). Por lo tanto, los valores para los números de puertos van de 0 a 65535. Algunos números de puertos asignados a aplicaciones de servicios conocidos son: 22 para `ssh`, 23 para `telnet`, 25 para `smtp`, 80 para `http`.   
55
 
57
 
56
-La aplicación que veremos hoy se puede utilizar para monitorear lo que se conoce como flujo en redes o "NetFlows". Un "NetFlow" se compone al unir los paquetes de una comunicación unidireccional entre las aplicaciones de dos computadoras. Por ejemplo, un "NetFlow" se puede componer de los paquetes usados para enviar la información desde tu buscador web a la aplicación `http` del servidor de Moodle.
58
+La aplicación que veremos hoy se puede utilizar para monitorear lo que se conoce como flujo en redes o "NetFlows". Un "NetFlow" se compone al unir los paquetes de una comunicación unidireccional entre las aplicaciones de dos computadoras. Por ejemplo, un "NetFlow" se puede componer de los paquetes usados para enviar la información desde tu navegador web a la aplicación `http` del servidor de Moodle.
57
 
59
 
58
-La Figura 1 muestra la interface de la aplicación *Network Analyzer*. 
60
+La Figura 1 muestra la interfaz de la aplicación *Network Analyzer*. 
59
 
61
 
60
 ---
62
 ---
61
 
63
 
62
 ![figure1.png](images/figure1.png)
64
 ![figure1.png](images/figure1.png)
63
 
65
 
64
-**Figura 1.** Interface para manejar la aplicación de *Network Analyzer*.
66
+**Figura 1.** Interfaz para manejar la aplicación de *Network Analyzer*.
65
 
67
 
66
 ---
68
 ---
67
 
69
 
70
 La aplicación que completarás hoy le permitirá al usuario el analizar el estatus de una red. Entre otras cosas, le permitirá:
72
 La aplicación que completarás hoy le permitirá al usuario el analizar el estatus de una red. Entre otras cosas, le permitirá:
71
 
73
 
72
 * identificar cuáles comunicaciones transmiten la mayor cantidad de datos
74
 * identificar cuáles comunicaciones transmiten la mayor cantidad de datos
73
-* cuáles aplicaciones están corriendo en ciertas computadoras
74
-* cuáles computadoras transmiten grandes cantidades de paquetes comparadas con la cantidad de datos
75
+* identificar cuáles aplicaciones están corriendo en ciertas computadoras
76
+* identificar cuáles computadoras transmiten grandes cantidades de paquetes comparadas con la cantidad de datos
75
 
77
 
76
 
78
 
77
 ##Bibliotecas
79
 ##Bibliotecas
86
 ##Sesión de laboratorio:
88
 ##Sesión de laboratorio:
87
 
89
 
88
 
90
 
89
-La aplicación que completarás hoy le permite al usuario subir un archivo que contenga expedientes de "NetFlow" utilizando el botón "Open NetFlow File", guarda los expedientes en un vector de paquetes, y los despliega en la tabla de contenido del interface de la aplicación como se muestra en la Figura 2.
91
+La aplicación que completarás hoy le permite al usuario subir un archivo que contenga expedientes de "NetFlow" utilizando el botón "Open NetFlow File", guarda los expedientes en un vector de paquetes, y los despliega en la tabla de contenido del interfaz de la aplicación como se muestra en la Figura 2.
90
 
92
 
91
 ---
93
 ---
92
 
94
 
93
 ![figure2.png](images/figure2.png)
95
 ![figure2.png](images/figure2.png)
94
 
96
 
95
-**Figura 2.** Interface de la aplicación *Network Analyzer* con los paquetes de flujo de datos en una red.
97
+**Figura 2.** Interfaz de la aplicación *Network Analyzer* con los paquetes de flujo de datos en una red.
96
 
98
 
97
 ---
99
 ---
98
 
100
 
132
 
134
 
133
 ---
135
 ---
134
 
136
 
135
-###Ejercicio 0: Familiarizarte con la clase `Packet`
137
+
138
+###Ejercicio 1 - Familiarizarte con la clase `Packet`
139
+
136
 
140
 
137
 ####Instrucciones
141
 ####Instrucciones
138
 
142
 
139
-1. Carga a QtCreator el proyecto `NetworkAnalyzer` haciendo doble "click" en el archivo `NetworkAnalyzer.pro` en el directorio `Documents/eip/Sorting-NetworkAnalyzer` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/sorting-networkanalyzer` para descargar la carpeta `Sorting-NetworkAnalyzer` a tu computadora.
143
+1. Carga a `QtCreator` el proyecto `NetworkAnalyzer`. Hay dos maneras de hacer esto:
144
+
145
+*  Utilizando la máquina virtual: Haz doble "click" en el archivo `NetworkAnalyzer.pro` que se encuentra en el directorio `/home/eip/labs/sorting-networkanalyzer` de la máquina virtual. 
146
+* Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http://bitbucket.org/eip-uprrp/sorting-networkanalyzer` para descargar la carpeta `sorting-networkanalyzer` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `NetworkAnalyzer.pro`.
140
 
147
 
141
 2. Abre el archivo `packet.cpp`. Estudia los atributos y métodos de la clase `Packet`.
148
 2. Abre el archivo `packet.cpp`. Estudia los atributos y métodos de la clase `Packet`.
142
 
149
 
143
 3. Los datos que maneja la aplicación NetworkAnalyzer están almacenados en un vector de objetos de clase `Packet`. El vector es una clase provista en el “Standard Template Library” de C++ que sirve para almacenar datos u objetos del mismo tipo. Al igual que los arreglos, los vectores asignan un índice (comenzando con el índice 0) a cada elemento que almacenan.  El elemento i-ésimo de un vector `V` se puede acceder usando `V[i]`. La diferencia principal entre vectores y arreglos es que el tamaño de los vectores puede cambiar, no hay que definir un tamaño fijo de antemano como sucede con los arreglos.
150
 3. Los datos que maneja la aplicación NetworkAnalyzer están almacenados en un vector de objetos de clase `Packet`. El vector es una clase provista en el “Standard Template Library” de C++ que sirve para almacenar datos u objetos del mismo tipo. Al igual que los arreglos, los vectores asignan un índice (comenzando con el índice 0) a cada elemento que almacenan.  El elemento i-ésimo de un vector `V` se puede acceder usando `V[i]`. La diferencia principal entre vectores y arreglos es que el tamaño de los vectores puede cambiar, no hay que definir un tamaño fijo de antemano como sucede con los arreglos.
144
 
151
 
145
-Un método `met` del objeto en la posición `i` en el vector puede accederse escribiendo  `V[i].met()`. El contenido de todos los atributos de un objeto puede asignarse a otro objeto de la misma clase "a la vez". Por ejemplo, puedes asignar el contenido de todos los atributos del objeto en la entrada `k` del vector `V` a los atributos correspondientes del objeto en la entrada `i` del vector `V` escribiendo `V[i]=V[k]`.
152
+4. Un método `met` del objeto en la posición `i` en el vector puede accederse escribiendo  `V[i].met()`. El contenido de todos los atributos de un objeto puede asignarse a otro objeto de la misma clase "a la vez". Por ejemplo, puedes asignar el contenido de todos los atributos del objeto en la entrada `k` del vector `V` a los atributos correspondientes del objeto en la entrada `i` del vector `V` escribiendo `V[i]=V[k]`.
146
 
153
 
147
 
154
 
148
-###Ejercicio 1: Filtrar comunicaciones
155
+###Ejercicio 2 - Filtrar comunicaciones
149
 
156
 
150
 ####Instrucciones
157
 ####Instrucciones
151
 
158
 
161
 
168
 
162
 Por ejemplo, si estás filtrando por `Source Address` y la clave de búsqueda es 136.145.181.130, la función `FilterBySrcAddr` mantendrá todos los paquetes del vector cuyo `Source Address` es 136.145.181.130 y desactivará todos los otros.
169
 Por ejemplo, si estás filtrando por `Source Address` y la clave de búsqueda es 136.145.181.130, la función `FilterBySrcAddr` mantendrá todos los paquetes del vector cuyo `Source Address` es 136.145.181.130 y desactivará todos los otros.
163
 
170
 
164
-La siguiente figura es una foto del interface de la aplicación luego de filtrar los datos por `Source Address` con la clave 136.145.181.130.
171
+La siguiente figura es una foto del interfaz de la aplicación luego de filtrar los datos por `Source Address` con la clave 136.145.181.130.
165
 
172
 
166
 ---
173
 ---
167
 
174
 
168
 ![figure3.png](images/figure3.png)
175
 ![figure3.png](images/figure3.png)
169
 
176
 
170
-**Figura 3.** Interface de la aplicación *Network Analyzer* con los paquetes de  flujo de datos en una red filtrados por `Source Address` con clave 136.145.181.130.
177
+**Figura 3.** Interfaz de la aplicación *Network Analyzer* con los paquetes de  flujo de datos en una red filtrados por `Source Address` con clave 136.145.181.130.
171
 
178
 
172
 ---
179
 ---
173
 
180
 
174
-###Ejercicio 2: Ordenar datos
181
+###Ejercicio 3 - Ordenar datos
175
 
182
 
176
 ####Instrucciones
183
 ####Instrucciones
177
 
184
 
178
 1. Abre el archivo `Sort.cpp`. En este ejercicio completarás las siguientes funciones que están contenidas en este archivo:
185
 1. Abre el archivo `Sort.cpp`. En este ejercicio completarás las siguientes funciones que están contenidas en este archivo:
179
 
186
 
180
-
181
     * `SortBySrcAddr`
187
     * `SortBySrcAddr`
182
     * `SortByDstAddr`
188
     * `SortByDstAddr`
183
     * `SortBySrcPort`
189
     * `SortBySrcPort`
184
     * `SortByDstPort`
190
     * `SortByDstPort`
185
 
191
 
186
-
187
     Cada una de esas funciones recibe un vector  de clase `Packet`. Cada función (nota sus nombres) está relacionada a un atributo de la clase `Packet`  y deberá "ordenar" los paquetes del vector de acuerdo al atributo de interés.
192
     Cada una de esas funciones recibe un vector  de clase `Packet`. Cada función (nota sus nombres) está relacionada a un atributo de la clase `Packet`  y deberá "ordenar" los paquetes del vector de acuerdo al atributo de interés.
188
 
193
 
189
-    La siguiente figura es una foto del interface de la aplicación luego de ordenar los datos por `Source Address`.
194
+    La siguiente figura es una foto del interfaz de la aplicación luego de ordenar los datos por `Source Address`.
190
 
195
 
191
     ---
196
     ---
192
 
197
 
193
     ![figure4.png](images/figure4.png)
198
     ![figure4.png](images/figure4.png)
194
 
199
 
195
-    **Figura 4.** Interface de la aplicación *Network Analyzer* con los paquetes de  flujo de datos en una red ordenados por `Source Address`.
200
+    **Figura 4.** Interfaz de la aplicación *Network Analyzer* con los paquetes de  flujo de datos en una red ordenados por `Source Address`.
196
 
201
 
197
     ---
202
     ---
198
  
203
  
199
 
204
 
200
-2. Completa la función `SortBySrcAddr` implementando el algoritmo de burbuja (*Bubble Sort*), ordenando los paquetes por el `Source address`. 
205
+2. Completa la función `SortBySrcAddr` implementando el algoritmo de burbuja (*Bubble Sort*), ordenando los paquetes por el `Source Address`. 
201
 
206
 
202
-3. Completa la función `SortByDstAddr` implementando el algoritmo de selección (*Selection Sort*), ordenando los paquetes por el `Destination address`.
207
+3. Completa la función `SortByDstAddr` implementando el algoritmo de selección (*Selection Sort*), ordenando los paquetes por el `Destination Address`.
203
 
208
 
204
-4. Completa la función `SortBySrcPort` implementando el algoritmo de selección (*Selection Sort*), ordenando los paquetes por el `Source port`.
209
+4. Completa la función `SortBySrcPort` implementando el algoritmo de selección (*Selection Sort*), ordenando los paquetes por el `Source Port`.
205
 
210
 
206
-5. Completa la función `SortByDstPort` implementando el algoritmo de burbuja (*Bubble Sort*), ordenando los paquetes por el `Destination port`. 
211
+5. Completa la función `SortByDstPort` implementando el algoritmo de burbuja (*Bubble Sort*), ordenando los paquetes por el `Destination Port`. 
207
 
212
 
208
 ---
213
 ---
209
 
214
 
211
 
216
 
212
 ##Entregas
217
 ##Entregas
213
 
218
 
214
-1. Utiliza "Entrega 1" en Moodle para entregar el archivo `Filter.cpp` que modificaste en el Ejercicio 1. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
219
+1. Utiliza "Entrega 1" en Moodle para entregar el archivo `Filter.cpp` que modificaste en el Ejercicio 1. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores y documenta tu programa.
215
 
220
 
216
-2. Utiliza "Entrega 2" en Moodle para entregar el archivo `Sort.cpp` que modificaste en el Ejercicio 2. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
221
+2. Utiliza "Entrega 2" en Moodle para entregar el archivo `Sort.cpp` que modificaste en el Ejercicio 2. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores y documenta tu programa.
217
 
222
 
218
 
223
 
219
 ---
224
 ---
239
 
244
 
240
 ---
245
 ---
241
 
246
 
247
+
248
+

BIN
images/main1.png View File


BIN
images/main2.png View File


BIN
images/main3.png View File