1 00:00:00,000 --> 00:00:10,570 [MÚSICA DE FONDO] 2 00:00:10,570 --> 00:00:13,030 DAVID MALAN: Muy bien, esto es CS50 y vamos a iniciar 3 00:00:13,030 --> 00:00:16,030 la lección 6 y como recordarán, hoy 4 00:00:16,030 --> 00:00:19,340 comenzaremos la transición de este mundo de bajo nivel en C 5 00:00:19,340 --> 00:00:22,180 y la programación de línea de comandos hacia un área que seguramente 6 00:00:22,180 --> 00:00:24,190 les será un poco más conocida, el de la web, al igual que 7 00:00:24,190 --> 00:00:27,610 todas las ideas que exploramos hasta ahora como funciones, bucles, 8 00:00:27,610 --> 00:00:31,250 condiciones y otras más, que seguirán siendo relevantes. 9 00:00:31,250 --> 00:00:34,420 Solo que utilizaremos una sintaxis ligeramente diferente y la interfaz 10 00:00:34,420 --> 00:00:37,750 de usuario o UI será nuestro navegador, en vez 11 00:00:37,750 --> 00:00:41,920 de la ventana de terminal en blanco y negro con una sola línea de texto, 12 00:00:41,920 --> 00:00:43,000 pero, ¿cómo llegamos aquí? 13 00:00:43,000 --> 00:00:45,130 Bueno, recordemos que hace poco vimos las estructuras 14 00:00:45,130 --> 00:00:48,040 y que lo bueno de las estructuras en C, era que teníamos la habilidad 15 00:00:48,040 --> 00:00:51,760 para personalizar nuestros datos y agrupar juntos 16 00:00:51,760 --> 00:00:54,370 los datos relacionados, lo cual se volvió bastante poderoso 17 00:00:54,370 --> 00:00:58,330 cuando llegó la hora de que foresics manipulara los archivos de mapa de bits 18 00:00:58,330 --> 00:01:01,870 o los JPEG, y aunque esta estructura es mucho más complicada 19 00:01:01,870 --> 00:01:04,269 que la de los estudiantes, a fin de cuentas 20 00:01:04,269 --> 00:01:07,780 solo son datos individuales que, de algún modo, se relacionan entre sí 21 00:01:07,780 --> 00:01:10,900 y al ponerlos en una estructura podemos manipularlos libremente, 22 00:01:10,900 --> 00:01:15,400 así como copiarlos o guardarlos todos juntos como también hicimos. 23 00:01:15,400 --> 00:01:19,052 Pero hace poco, presentamos una estructura un poco más elegante, 24 00:01:19,052 --> 00:01:20,260 que en esencia es la misma idea. 25 00:01:20,260 --> 00:01:22,330 Tiene una o más cosas adentro, 26 00:01:22,330 --> 00:01:24,820 pero una de las cosas más poderosas 27 00:01:24,820 --> 00:01:29,240 tenía esta estrella o asterisco, el cual nos dio un puntero o una ubicación, 28 00:01:29,240 --> 00:01:32,650 pero lo que fue tan poderoso acerca de esta idea y de este símbolo 29 00:01:32,650 --> 00:01:36,670 aparentemente simples, es que podemos hilar juntos en la memoria 30 00:01:36,670 --> 00:01:38,387 de nuestra computadora cualquier tipo de estructuras que queramos. 31 00:01:38,387 --> 00:01:39,970 No tienen que ser solo una entidad, 32 00:01:39,970 --> 00:01:42,310 de alguna manera pueden vincularse con otras, y nosotros 33 00:01:42,310 --> 00:01:47,410 también podemos mantener unidas estas estructuras, lo cual, desde luego, 34 00:01:47,410 --> 00:01:50,620 fue una mejora simple en los inicios de nuestras estructuras de datos, 35 00:01:50,620 --> 00:01:53,080 un arreglo o una lista, pero tan pronto 36 00:01:53,080 --> 00:01:56,290 como tenemos punteros comenzamos a conectar las cosas 37 00:01:56,290 --> 00:02:00,040 hasta que obtenemos algo como esto y ahora con la implementación 38 00:02:00,040 --> 00:02:03,900 del diccionario podríamos explorar una lista vinculada, una tabla hash, 39 00:02:03,900 --> 00:02:06,790 o intentarlo con algunas variaciones de por medio. 40 00:02:06,790 --> 00:02:10,539 Por último, teníamos una imagen, que representaba 41 00:02:10,539 --> 00:02:14,260 la memoria de nuestra computadora, vista desde un modo más descriptivo 42 00:02:14,260 --> 00:02:17,230 y esto solo es relevante siempre que nuestra computadora utilice 43 00:02:17,230 --> 00:02:19,390 de manera diferente, los distintos fragmentos de la memoria. 44 00:02:19,390 --> 00:02:21,970 Todas nuestras llamadas a las funciones al final utilizan el stack. 45 00:02:21,970 --> 00:02:24,070 Todos los usuarios de malloc y sus primos 46 00:02:24,070 --> 00:02:27,640 al final utilizan el heap y luego, por supuesto, esto de aquí arriba 47 00:02:27,640 --> 00:02:31,840 y ¿cuál fue el segmento de texto en el que no hicimos mucho énfasis? 48 00:02:31,840 --> 00:02:35,340 ¿De qué se trata el segmento de texto? 49 00:02:35,340 --> 00:02:38,460 Texto, eres un voluntario. 50 00:02:38,460 --> 00:02:40,788 Sí, ¿de qué trata el segmento de texto? 51 00:02:40,788 --> 00:02:42,030 PÚBLICO: ¿son archivos de datos? 52 00:02:42,030 --> 00:02:43,100 DAVID: Son archivos de datos, sí. 53 00:02:43,100 --> 00:02:45,820 Específicamente, los ceros y los unos que conforman el programa. 54 00:02:45,820 --> 00:02:49,890 Cuando compilamos un código fuente, como en hello.c, con ceros y unos, 55 00:02:49,890 --> 00:02:53,190 estos, al final, se almacenan en este lugar de la memoria 56 00:02:53,190 --> 00:02:54,630 mientras el programa se ejecuta, 57 00:02:54,630 --> 00:02:57,870 a largo plazo se almacenarán en el disco o en el disco duro, o lo que haya dentro 58 00:02:57,870 --> 00:03:01,440 de la computadora o el servidor, para preservar los archivos incluso cuando 59 00:03:01,440 --> 00:03:03,564 se estos se apagan o nos alejamos del teclado, 60 00:03:03,564 --> 00:03:06,480 pero en cuanto hagamos doble clic en un programa, la Mac o la PC, 61 00:03:06,480 --> 00:03:09,570 ejecutemos ./ hello o algún comando como ese, 62 00:03:09,570 --> 00:03:12,720 esos mismos ceros y unos se cargan en el RAM de la computadora, 63 00:03:12,720 --> 00:03:16,710 la imagen que mostramos y ahí es donde viven mientras están en uso 64 00:03:16,710 --> 00:03:19,440 por nuestra Mac, PC o el servidor que usemos, 65 00:03:19,440 --> 00:03:23,790 pero hasta ahora, hemos ejecutado todos estos programas con algo como 66 00:03:23,790 --> 00:03:27,360 ./ hello o algún comando similar y los ejecutamos en la tan conocida 67 00:03:27,360 --> 00:03:28,590 ventana de terminal. 68 00:03:28,590 --> 00:03:31,200 Pero sin duda, estamos más familiarizados 69 00:03:31,200 --> 00:03:33,510 con las aplicaciones gráficas de nuestros teléfonos modernos 70 00:03:33,510 --> 00:03:36,030 y cada vez que visitamos un navegador web en el teléfono, 71 00:03:36,030 --> 00:03:40,080 la computadora de escritorio o la laptop, seguimos interactuando con un programa, 72 00:03:40,080 --> 00:03:43,800 lo que sucede es que el programa no solo se ejecuta en nuestra Mac o PC. 73 00:03:43,800 --> 00:03:47,397 Nuestro navegador es como Chrome, Edge, Firefox, Safari 74 00:03:47,397 --> 00:03:48,480 o el que sea que utilicemos. 75 00:03:48,480 --> 00:03:50,700 Eso se ejecuta en nuestra Mac o PC, pero 76 00:03:50,700 --> 00:03:53,700 nos comunicamos con un programa que está en otro lugar, 77 00:03:53,700 --> 00:03:56,805 en alguna otra parte del Internet y esos programas se llaman servidores web. 78 00:03:56,805 --> 00:04:01,080 Un servidor web es una parte del software, que alguna persona o personas escribieron 79 00:04:01,080 --> 00:04:03,540 y su propósito en la vida es soportar las páginas web. 80 00:04:03,540 --> 00:04:05,910 Cuando solicitamos la página de inicio de Facebook, 81 00:04:05,910 --> 00:04:08,190 hay un servidor allí, un programa que alguien escribió 82 00:04:08,190 --> 00:04:13,350 y que básicamente genera los ceros y unos que conforman la página de Facebook, 83 00:04:13,350 --> 00:04:18,014 aunque esos ceros y unos no se escriben así 84 00:04:18,014 --> 00:04:18,930 por los ingenieros de Facebook. 85 00:04:18,930 --> 00:04:21,638 En realidad su escritura es más parecida a la del inglés, 86 00:04:21,638 --> 00:04:24,450 un poco más familiar y ni siquiera es un código de programación como tal. 87 00:04:24,450 --> 00:04:28,902 Es lo que se llama lenguaje de marcado, de eso y más hablaremos más adelante. 88 00:04:28,902 --> 00:04:31,110 Ya pasamos de compilar nuestro código y ejecutarlo 89 00:04:31,110 --> 00:04:34,060 en algo como esto, a hacerlo en un entorno basado en la web, 90 00:04:34,060 --> 00:04:38,180 pero cuando ejecutamos nuestros programas en el IDE de CS50 aquí bajo, 91 00:04:38,180 --> 00:04:40,770 en realidad usamos otra pieza del software 92 00:04:40,770 --> 00:04:43,590 que llena la pantalla, el IDE de CS50 también conocido como 93 00:04:43,590 --> 00:04:48,249 Cloud9, un programa que básicamente se ejecuta en algún lugar de la nube. 94 00:04:48,249 --> 00:04:50,790 Haremos esta distinción y a través de ejemplos 95 00:04:50,790 --> 00:04:54,360 la distinción entre estos diferentes tipos de software 96 00:04:54,360 --> 00:04:57,930 comenzará a tener sentido, pero ¿dónde se ejecuta algo como el IDE de CS50? 97 00:04:57,930 --> 00:04:59,370 ¿Dónde se ejecuta Facebook. com? 98 00:04:59,370 --> 00:05:00,830 ¿Dónde se ejecuta Google.com? 99 00:05:00,830 --> 00:05:05,370 Bueno, en 1998 Google.com se ejecutaba en esto. 100 00:05:05,370 --> 00:05:09,510 Larry y Sergey fueron los creadores de la primera implementación de Google 101 00:05:09,510 --> 00:05:12,490 y al parecer, de su primer estante de servidores. 102 00:05:12,490 --> 00:05:16,380 Los servidores por lo general se almacenan en un estante como este, 103 00:05:16,380 --> 00:05:18,690 por convención miden 19 pulgadas de ancho 104 00:05:18,690 --> 00:05:21,690 y sirve para apilar las computadoras una sobre otra, sobre otra, sobre otra, 105 00:05:21,690 --> 00:05:24,330 pero las cosas en Google eran muy rudimentarias en ese entonces 106 00:05:24,330 --> 00:05:26,220 y ni siquiera había cajas de plástico o metal 107 00:05:26,220 --> 00:05:28,740 alrededor de muchas de sus computadoras. 108 00:05:28,740 --> 00:05:31,920 Al parecer, trataban de minimizar el enfriamiento, los costos y de amontonar 109 00:05:31,920 --> 00:05:35,659 tanto hardware en ese espacio como pudieron, 110 00:05:35,659 --> 00:05:37,950 por lo que vemos muchos cables y hardware 111 00:05:37,950 --> 00:05:41,280 que sobresalen y esto ahora está en una exhibición en el oeste. 112 00:05:41,280 --> 00:05:44,160 Por supuesto, mejoraron rápidamente, en solo una década o dos y este 113 00:05:44,160 --> 00:05:48,000 es uno de los centros de datos de Facebook, que opera bajo la misma idea, 114 00:05:48,000 --> 00:05:50,910 pero con servidores más elegantes, más bonitos y mucho mejor iluminados, 115 00:05:50,910 --> 00:05:53,580 pero que al final del día, desempeñan exactamente el mismo papel. 116 00:05:53,580 --> 00:05:56,190 Hay multitud de servidores en todo el mundo que solo están 117 00:05:56,190 --> 00:05:58,470 sentados allí, esperando por nosotros en el Internet 118 00:05:58,470 --> 00:06:01,350 para que solicitemos una página de inicio, un correo electrónico, 119 00:06:01,350 --> 00:06:04,260 o cualquier otro tipo de información, para termine 120 00:06:04,260 --> 00:06:05,910 enviándose desde el servidor al cliente. 121 00:06:05,910 --> 00:06:10,410 Si alguna vez pensamos en las palabras, servidor y clientes, 122 00:06:10,410 --> 00:06:12,300 la cual tal vez sea la menos utilizada de las dos, 123 00:06:12,300 --> 00:06:15,030 pero la relación servidor-cliente, es como cuando vamos a un restaurante 124 00:06:15,030 --> 00:06:17,363 y le pedimos al mesero o a la mesera algo de comer, 125 00:06:17,363 --> 00:06:19,890 él o ella nos trae algo de vuelta y por lo tanto nos sirve, 126 00:06:19,890 --> 00:06:23,610 la relación entre el cliente y la web es más o menos lo mismo. 127 00:06:23,610 --> 00:06:24,630 Nosotros somos los clientes, 128 00:06:24,630 --> 00:06:26,850 nuestros navegadores son los clientes y allá afuera 129 00:06:26,850 --> 00:06:31,530 existen servidores como estos, que ofrecen contenido e información, 130 00:06:31,530 --> 00:06:32,580 como Facebook. 131 00:06:32,580 --> 00:06:35,070 Consideremos el modo en que todos estos datos llegan a nosotros, 132 00:06:35,070 --> 00:06:39,030 actualmente, si deseamos visitar Facebook.com en nuestra laptop, 133 00:06:39,030 --> 00:06:42,570 computadora de escritorio o teléfono sin usar la aplicación, seguramente solo 134 00:06:42,570 --> 00:06:45,210 escribiremos Facebook.com y presionaremos Enter. 135 00:06:45,210 --> 00:06:47,920 Si somos un mayores o literalmente viejos, 136 00:06:47,920 --> 00:06:52,230 puede que escribamos todo así www.Facebook.com. 137 00:06:52,230 --> 00:06:56,700 Ambas funcionan y existen razones técnicas relacionadas con el tema 138 00:06:56,700 --> 00:06:58,950 del que hablamos hoy, pero ambos funcionan 139 00:06:58,950 --> 00:07:00,825 porque Facebook configuró su sitio web 140 00:07:00,825 --> 00:07:02,730 para que funcionara con cualquiera de esas direcciones. 141 00:07:02,730 --> 00:07:09,126 Como un tema aparte, ¿por qué hay tantos sitios web con el prefijo "www" 142 00:07:09,126 --> 00:07:11,040 si ambos funcionan? 143 00:07:11,040 --> 00:07:13,930 144 00:07:13,930 --> 00:07:15,090 ¿por qué tenemos ambos? 145 00:07:15,090 --> 00:07:17,700 Parece redundante el escribir "www" 146 00:07:17,700 --> 00:07:21,690 si está implícito en Facebook.com. 147 00:07:21,690 --> 00:07:22,764 Sí, ¿qué piensas? 148 00:07:22,764 --> 00:07:24,719 PÚBLICO: ¿Qué el "www" es necesario? 149 00:07:24,719 --> 00:07:26,010 DAVID: ¿Qué es necesario? 150 00:07:26,010 --> 00:07:27,690 No, no es necesario. 151 00:07:27,690 --> 00:07:29,100 No se necesita. 152 00:07:29,100 --> 00:07:29,600 ¿Sí? 153 00:07:29,600 --> 00:07:31,680 PÚBLICO: ¿Es para identificar que es parte de la World Wide Web? 154 00:07:31,680 --> 00:07:32,215 DAVID: Bueno, sí. 155 00:07:32,215 --> 00:07:34,175 Es para identificar que es parte de la World Wide Web 156 00:07:34,175 --> 00:07:36,410 y nadie dice la World Wide Web en estos días, 157 00:07:36,410 --> 00:07:40,440 solo decimos la web, pero de vuelta a los tiempos y en mis tiempos, 158 00:07:40,440 --> 00:07:42,450 para muchas personas no era obvio 159 00:07:42,450 --> 00:07:48,900 lo que Facebook.com significaría, pese al hecho 160 00:07:48,900 --> 00:07:51,480 de que antes no existía. 161 00:07:51,480 --> 00:07:54,090 Y ahora había esta señal para el mundo 162 00:07:54,090 --> 00:07:57,660 por la cual, empezaron los nombres de dominio con el prefijo "www" 163 00:07:57,660 --> 00:08:00,240 para dejarle muy claro a los usuarios, ¡oh, este es un sitio web! 164 00:08:00,240 --> 00:08:02,672 Esta es una de esas cosas del Internet o algo así 165 00:08:02,672 --> 00:08:04,380 y en aquel entonces también hubo 166 00:08:04,380 --> 00:08:07,180 diferentes servicios que actualmente cayeron en desuso, 167 00:08:07,180 --> 00:08:10,020 como el FTP que era bastante popular y Gopher lo usamos 168 00:08:10,020 --> 00:08:12,030 cuando estudié aquí y otras cosas similares. 169 00:08:12,030 --> 00:08:15,390 De modo que, el "www" era un prefijo absurdo, que solo decía lo que es 170 00:08:15,390 --> 00:08:20,760 pero ahora, nosotros los humanos sabemos que son el .com, .net y .edu, 171 00:08:20,760 --> 00:08:24,400 pero esto está cambiando de nuevo, porque hay docenas, 172 00:08:24,400 --> 00:08:26,700 de cientos de dominios de nivel superior. 173 00:08:26,700 --> 00:08:29,690 Ya no es solo .com y .edu ahora hay otros. 174 00:08:29,690 --> 00:08:31,980 Me refiero a que, hay cientos de estas cosas allá afuera 175 00:08:31,980 --> 00:08:34,490 que incluso, podrían no ser tan evidentes hasta el día de hoy. 176 00:08:34,490 --> 00:08:39,713 Por lo tanto, algunas personas, hacen todo el camino y escriben http: // 177 00:08:39,713 --> 00:08:43,230 y luego la dirección que quieren visitar, 178 00:08:43,230 --> 00:08:46,470 pero la mayoría de nosotros no lo hacemos, porque nuestros navegadores nos ayudan 179 00:08:46,470 --> 00:08:49,300 y le ponen prefijo a eso y allí es donde nos enfocaremos hoy. 180 00:08:49,300 --> 00:08:52,830 Esto es importante, porque se especifica 181 00:08:52,830 --> 00:08:57,780 qué protocolo o lenguaje, qué convenciones debe seguir 182 00:08:57,780 --> 00:09:01,410 nuestra laptop cuando se comunica con la dirección de ese servidor 183 00:09:01,410 --> 00:09:03,866 y de hecho, si queremos que las comunicaciones sean seguras, 184 00:09:03,866 --> 00:09:06,240 el punto es, si nosotros lo escribimos o el navegador lo hace por nosotros, 185 00:09:06,240 --> 00:09:11,640 agrega una s allí, que denota seguro o encriptado a la Caesar y Vigenere 186 00:09:11,640 --> 00:09:14,350 que vimos hace algunas semanas y técnicamente es probable que nuestro 187 00:09:14,350 --> 00:09:17,460 navegador agregue una barra inclinada / aún 188 00:09:17,460 --> 00:09:21,600 si no nos la muestra, pero indica que queremos ir a la raíz del servidor, 189 00:09:21,600 --> 00:09:23,761 la página de inicio predeterminada, entre otras cosas. 190 00:09:23,761 --> 00:09:25,510 En efecto, tal vez queramos algo más, 191 00:09:25,510 --> 00:09:28,730 no solo el sitio web de Facebook, también queremos la página de Mark, 192 00:09:28,730 --> 00:09:32,860 y en específico escribiríamos /zuck o cualquiera que sea el nombre de usuario. 193 00:09:32,860 --> 00:09:35,730 Esta es una manera muy larga de decirlo, 194 00:09:35,730 --> 00:09:39,480 pero escribimos o autocompletamos y damos por hecho 195 00:09:39,480 --> 00:09:42,810 que esto tiene muchos significados y todos ellos 196 00:09:42,810 --> 00:09:44,970 hacen posible a toda la web. 197 00:09:44,970 --> 00:09:49,210 Pero ¿qué sucede con el http y qué es lo que significa? 198 00:09:49,210 --> 00:09:51,600 El http es un protocolo, 199 00:09:51,600 --> 00:09:54,180 es un conjunto de convenciones, que dictan cómo un cliente 200 00:09:54,180 --> 00:09:58,870 de computadora, el navegador en la Mac o PC, habla con un servidor web, 201 00:09:58,870 --> 00:10:01,857 y es un protocolo, en el sentido de que no es un lenguaje como tal. 202 00:10:01,857 --> 00:10:03,690 Es un conjunto de convenciones y por lo tanto, 203 00:10:03,690 --> 00:10:06,780 es una especie de costumbre humana absurda e incómoda. 204 00:10:06,780 --> 00:10:08,290 Hola, soy David 205 00:10:08,290 --> 00:10:09,082 PÚBLICO: Yo soy Kara. 206 00:10:09,082 --> 00:10:11,665 DAVID: Kara, Kara y yo nos presentamos, 207 00:10:11,665 --> 00:10:14,040 extendí mi mano y ella como que sabía instintivamente 208 00:10:14,040 --> 00:10:17,910 que sería incómodo no estrecharme la mano o sacudirla 209 00:10:17,910 --> 00:10:20,670 e intercambiamos cumplidos y nos saludamos. 210 00:10:20,670 --> 00:10:22,770 Esta es una especie de convención humana tonta 211 00:10:22,770 --> 00:10:25,260 porque socialmente, hemos acordado de antemano 212 00:10:25,260 --> 00:10:27,270 cómo saludarnos de esa manera. 213 00:10:27,270 --> 00:10:30,720 El http es más o menos lo mismo, pero en este caso 214 00:10:30,720 --> 00:10:33,180 no hacemos algo físicamente, 215 00:10:33,180 --> 00:10:36,120 enviamos un mensaje del cliente al servidor, 216 00:10:36,120 --> 00:10:39,960 ponemos una especie de nota manuscrita en un sobre como este, 217 00:10:39,960 --> 00:10:43,470 la direccionamos de alguna manera y se la enviamos a Kara con el Internet 218 00:10:43,470 --> 00:10:46,860 o a Facebook.com, o a Google.com para que la reciban 219 00:10:46,860 --> 00:10:49,650 y luego cuando Google, Facebook o Kara reciben esa nota, 220 00:10:49,650 --> 00:10:53,850 la leen y ven lo que quiero, el servidor o el humano 221 00:10:53,850 --> 00:10:57,030 responden de alguna manera. 222 00:10:57,030 --> 00:11:00,010 ¿qué pasa dentro de este sobre? 223 00:11:00,010 --> 00:11:02,400 Bueno, cuando un navegador web, 224 00:11:02,400 --> 00:11:05,820 como Chrome, Edge, Firefox o Safari hacen una solicitud 225 00:11:05,820 --> 00:11:09,480 el mensaje que ponen dentro de uno de esos sobres, aunque de manera virtual, 226 00:11:09,480 --> 00:11:11,100 es prácticamente este texto, 227 00:11:11,100 --> 00:11:14,460 como si lo hubiera anotado en un trozo de papel GET / HTTP / 1.1 228 00:11:14,460 --> 00:11:19,800 Host: www.facebook.com y luego el "..." 229 00:11:19,800 --> 00:11:23,400 solo significa que allí hay otras cosas, pero básicamente son menos interesantes 230 00:11:23,400 --> 00:11:24,270 por el momento. 231 00:11:24,270 --> 00:11:26,040 Pero, ¿qué significa todo esto? 232 00:11:26,040 --> 00:11:28,260 GET es un verbo y hace lo que significa. 233 00:11:28,260 --> 00:11:30,000 Busca algo en el servidor. 234 00:11:30,000 --> 00:11:35,700 HTTP / 1.1 indica la versión de HTTP que utilizo o la convención humana 235 00:11:35,700 --> 00:11:38,640 que Kara y yo implementábamos allí, 236 00:11:38,640 --> 00:11:42,750 el 1.1 es el que más se utiliza actualmente y luego el / otra vez, 237 00:11:42,750 --> 00:11:48,330 es el identificador predeterminado para la página de inicio de un sitio web, 238 00:11:48,330 --> 00:11:51,610 la página predeterminada que vemos cuando no escribimos algo 239 00:11:51,610 --> 00:11:54,330 como /zuck o algún otro sufijo. 240 00:11:54,330 --> 00:11:58,440 Host: Es lo que está en el exterior del sobre, 241 00:11:58,440 --> 00:12:00,780 si envío un mensaje a www.Facebook.com, 242 00:12:00,780 --> 00:12:06,750 dejo muy en claro dentro del sobre cuál es el servidor que debe recibir 243 00:12:06,750 --> 00:12:10,320 esta solicitud, en caso de que haya varios sitios web ejecutándose 244 00:12:10,320 --> 00:12:13,470 en el mismo servidor físico, lo cual es muy posible por razones económicas y de 245 00:12:13,470 --> 00:12:14,640 desempeño, actualmente. 246 00:12:14,640 --> 00:12:18,210 Por otra parte, si tratara de visitar la página de Mark Zuckerberg, 247 00:12:18,210 --> 00:12:20,790 la solicitud en ese sobre se vería casi igual, 248 00:12:20,790 --> 00:12:22,164 pero seré más preciso. 249 00:12:22,164 --> 00:12:24,870 / zuck en lugar de solo / 250 00:12:24,870 --> 00:12:27,599 Sin embargo, si solicito algo de la página de inicio de Yale 251 00:12:27,599 --> 00:12:30,140 la solicitud sería así: www.yale.edu, o de la página web de Harvard 252 00:12:30,140 --> 00:12:34,060 la solicitud se vería así: www.harvard.edu y así sucesivamente. 253 00:12:34,060 --> 00:12:37,110 Una vez Harvard, Yale o Facebook 254 00:12:37,110 --> 00:12:40,350 recibieron la solicitud en ese sobre, lo abrieron y lo miraron, 255 00:12:40,350 --> 00:12:42,300 ¿cómo deciden de qué manera responder? 256 00:12:42,300 --> 00:12:44,610 Bueno, al final del día, probablemente espero 257 00:12:44,610 --> 00:12:47,870 que el servidor web me devuelva alguna, discúlpeme, 258 00:12:47,870 --> 00:12:51,780 página web que me permita ver mis noticias en Facebook, 259 00:12:51,780 --> 00:12:54,024 o quiero ver la página de búsqueda en Google, 260 00:12:54,024 --> 00:12:56,190 o quiero ver la página principal de Harvard o la de Yale 261 00:12:56,190 --> 00:12:57,540 o cualquier cosa que sea. 262 00:12:57,540 --> 00:13:01,380 Probablemente haya mucha información empaquetada en ese sobre, 263 00:13:01,380 --> 00:13:04,350 pero también hay una respuesta convencional 264 00:13:04,350 --> 00:13:07,180 o estándar que se ve de esta manera, 265 00:13:07,180 --> 00:13:10,980 por ejemplo, en la parte superior de la "carta" que regresa de Google 266 00:13:10,980 --> 00:13:13,000 o de Facebook hay un mensaje como este: 267 00:13:13,000 --> 00:13:13,500 Lo tengo, 268 00:13:13,500 --> 00:13:16,650 también hablo HTTP versión 1.1, 269 00:13:16,650 --> 00:13:19,010 todo está bien y 200. 270 00:13:19,010 --> 00:13:20,760 Volveremos a eso en un segundo y luego 271 00:13:20,760 --> 00:13:23,650 el tipo de contenido dentro del sobre, 272 00:13:23,650 --> 00:13:25,830 si voy más profundo en esto, será 273 00:13:25,830 --> 00:13:28,140 texto, pero más específicamente, será HTML y también 274 00:13:28,140 --> 00:13:29,960 nos enfocaremos hoy en eso. 275 00:13:29,960 --> 00:13:32,460 El HTML o Lenguaje de marcado de hipertexto. 276 00:13:32,460 --> 00:13:36,300 Este será el lenguaje en el que se escribirán las páginas web. 277 00:13:36,300 --> 00:13:38,640 Luego usualmente hay otras cosas y por acá abajo 278 00:13:38,640 --> 00:13:42,297 están los contenidos reales de la página web de Yale, de Harvard o de Facebook, 279 00:13:42,297 --> 00:13:44,130 pero hagámosle un acercamiento a esto por un momento. 280 00:13:44,130 --> 00:13:48,870 200, seguramente nunca vimos o nos importó ver estos números antes, 281 00:13:48,870 --> 00:13:52,020 pero si alguna vez utilizamos la web, solicitamos una página 282 00:13:52,020 --> 00:13:55,087 y ¿vimos algún número que por alguna razón aún aparece en nuestra vida? 283 00:13:55,087 --> 00:13:56,170 PÚBLICO AL UNÍSONO: El 404. 284 00:13:56,170 --> 00:13:57,370 DAVID: Sí, el 404. 285 00:13:57,370 --> 00:14:00,330 Es algo raro que muchos de nosotros en la sala 286 00:14:00,330 --> 00:14:02,755 conocemos el 404 incluso si no necesariamente somos tecnófilos 287 00:14:02,755 --> 00:14:06,690 y sabemos qué es el HTTP, pero en estos sobres que regresan 288 00:14:06,690 --> 00:14:11,500 desde los servidores a veces no solo son 200 OK, sino que 289 00:14:11,500 --> 00:14:13,860 diablos, lo escribí mal. 290 00:14:13,860 --> 00:14:16,890 Esto sería mucho más real si dijera que no es esto. 291 00:14:16,890 --> 00:14:18,210 No se encontró. 292 00:14:18,210 --> 00:14:25,260 Dentro del sobre no se encuentra 404, que exactamente eso es lo que significa. 293 00:14:25,260 --> 00:14:28,740 No se encontró el archivo que estábamos buscando. 294 00:14:28,740 --> 00:14:31,740 Escribimos mal la URL, la página fue eliminada, 295 00:14:31,740 --> 00:14:34,470 en algún lugar u otro, hubo algún tipo de error tipográfico, 296 00:14:34,470 --> 00:14:37,605 en HTTP existen muchos códigos de estado 297 00:14:37,605 --> 00:14:39,480 hay incluso más que estos, pero estos 298 00:14:39,480 --> 00:14:41,313 son los que podríamos ver más frecuentemente. 299 00:14:41,313 --> 00:14:43,500 El 200 OK significa que todo está bien, 300 00:14:43,500 --> 00:14:45,450 el 404 significa no encontrado, 301 00:14:45,450 --> 00:14:48,090 403 prohibido, que podría ser, si no inició sesión 302 00:14:48,090 --> 00:14:51,510 o no se le permite acceder a alguna carpeta 303 00:14:51,510 --> 00:14:53,100 o archivo en algún sitio web. 304 00:14:53,100 --> 00:14:56,190 Esto es malo, y lo sabremos en las próximas semanas ya que 305 00:14:56,190 --> 00:14:58,470 nosotros mismos implementaremos el código en un servidor. 306 00:14:58,470 --> 00:15:02,406 500 error interno del servidor, deberá ser nuestro nuevo defecto de segmentación, 307 00:15:02,406 --> 00:15:03,780 espero que no sea demasiado frecuente. 308 00:15:03,780 --> 00:15:06,400 Significa que algo está mal en el código del servidor. 309 00:15:06,400 --> 00:15:10,870 Esto pasó en el día de las bromas de Abril en 1998, creo, sí. 310 00:15:10,870 --> 00:15:15,210 En ese día, algunos humanos decidieron que sería divertido anunciar al mundo 311 00:15:15,210 --> 00:15:17,940 que hay otro código, el cual es 418 Soy una Tetera, 312 00:15:17,940 --> 00:15:21,840 qué aparece de vez en cuando en el código, y luego está este 313 00:15:21,840 --> 00:15:23,010 otro, 314 00:15:23,010 --> 00:15:24,630 301 Permanentemente movido. 315 00:15:24,630 --> 00:15:27,210 Es un tipo de sonido espeluznante, como si un sitio web solo 316 00:15:27,210 --> 00:15:31,890 más o menos se fuera y se fuera a otro lado, pero es un mecanismo poderoso 317 00:15:31,890 --> 00:15:32,980 de la siguiente manera. 318 00:15:32,980 --> 00:15:35,100 Si hay un servidor dentro de uno de estos sobres 319 00:15:35,100 --> 00:15:38,550 que contesta con una respuesta como esta, esto, 320 00:15:38,550 --> 00:15:41,110 al menos, tiende a ser otra pieza información. 321 00:15:41,110 --> 00:15:47,230 Si visito un sitio web como http://harvard.edu, 322 00:15:47,230 --> 00:15:51,300 devolvería en la contestación del servidor web de Harvard 323 00:15:51,300 --> 00:15:54,000 esta respuesta, 301 Permanentemente movido. 324 00:15:54,000 --> 00:15:55,590 ¿A dónde diablos fue Harvard? 325 00:15:55,590 --> 00:15:58,345 Bueno, podemos ver la ubicación basada en esta otra línea 326 00:15:58,345 --> 00:16:00,720 y todas estas cosas avanzando colectivamente 327 00:16:00,720 --> 00:16:03,180 a lo que llamaremos encabezado HTTP. 328 00:16:03,180 --> 00:16:06,060 Cada vez que veamos una palabra y un punto, eso es 329 00:16:06,060 --> 00:16:08,549 un encabezado HTTP, con un nombre, y un valor, y el primero 330 00:16:08,549 --> 00:16:10,590 es un poco anómalo porque no tiene punto, 331 00:16:10,590 --> 00:16:12,810 pero ese es el único sin punto. 332 00:16:12,810 --> 00:16:19,070 Entonces, ubicación, punto, http://www.harvard.edu. 333 00:16:19,070 --> 00:16:20,070 Bueno, ¿qué es lo que pasa? 334 00:16:20,070 --> 00:16:24,100 Bien, si visito la página principal de Harvard exactamente como sigue, 335 00:16:24,100 --> 00:16:25,660 veamos lo que sucede. 336 00:16:25,660 --> 00:16:31,290 Iré a http://harvard.edu, Enter. 337 00:16:31,290 --> 00:16:34,680 Noten que hay muchas más cosas ocurriendo en la pantalla, gracias 338 00:16:34,680 --> 00:16:37,485 a lo que se llama autocompletar, que es una función de Chrome o mi navegador. 339 00:16:37,485 --> 00:16:39,330 No tiene nada que ver con el tema en cuestión. 340 00:16:39,330 --> 00:16:43,440 Solo trato de que Chrome hoy sea útil, como también nuestra computadora, 341 00:16:43,440 --> 00:16:49,710 y de repente, aunque traté de ir a http://hardvard.edu, 342 00:16:49,710 --> 00:16:52,500 claramente, ¿dónde terminé? 343 00:16:52,500 --> 00:16:56,340 HTTPS. Ellos agregaron la s de alguna manera, ¿qué más agregaron? 344 00:16:56,340 --> 00:16:58,140 [VARIAS RESPUESTAS DEL PÚBLICO] 345 00:16:58,140 --> 00:16:59,390 DAVID: Sí, la web. 346 00:16:59,390 --> 00:17:00,950 Se añadió el prefijo www. 347 00:17:00,950 --> 00:17:04,260 Todo esto no es tan importante para el usuario 348 00:17:04,260 --> 00:17:09,040 como el que llegue a mi destino, pero la razón para esto es la siguiente. 349 00:17:09,040 --> 00:17:12,980 A continuación, abriré, en el IDE, 350 00:17:12,980 --> 00:17:16,609 una ventana de terminal y usaré un nuevo programa llamado cURL 351 00:17:16,609 --> 00:17:22,520 para conectarme a la URL ://harvard.edu, Enter. 352 00:17:22,520 --> 00:17:25,411 Me devuelve cosas que parecen misteriosas, en realidad eso es HTML, 353 00:17:25,411 --> 00:17:27,619 regresaremos a esto en un momento 354 00:17:27,619 --> 00:17:30,900 porque hay dos partes que nos devuelven los mensajes. 355 00:17:30,900 --> 00:17:34,640 Están los encabezados y luego el contenido, nosotros vemos el contenido 356 00:17:34,640 --> 00:17:35,750 y más sobre eso en un momento. 357 00:17:35,750 --> 00:17:38,937 Quiero mirar un poco más arriba en la respuesta y solo 358 00:17:38,937 --> 00:17:42,020 en los encabezados, y para hacer eso, nosotros solo sabemos esto porque leemos 359 00:17:42,020 --> 00:17:43,340 la documentación. 360 00:17:43,340 --> 00:17:47,880 Me refiero a que me muestre solo los encabezados que devuelve. 361 00:17:47,880 --> 00:17:50,360 Ahora vemos que los encabezados regresan 362 00:17:50,360 --> 00:17:52,946 y de hecho, obtuvimos un 301 Permanentemente movido, 363 00:17:52,946 --> 00:17:55,570 existen otras cosas en las que realmente no nos enfocamos, 364 00:17:55,570 --> 00:17:57,740 pero, en la parte inferior hay algo que tenemos 365 00:17:57,740 --> 00:18:01,452 ubicado, que le dice al navegador ve a esta URL. 366 00:18:01,452 --> 00:18:02,660 De acuerdo, haré eso. 367 00:18:02,660 --> 00:18:09,080 Ahorraré tiempo, solo copiaré pegaré esto y escribiré curl -I, de esto, 368 00:18:09,080 --> 00:18:13,280 Enter, y pretende ser un navegador que solicita esa página, pero ahora 369 00:18:13,280 --> 00:18:16,126 ¿A dónde están tratando de enviarme? 370 00:18:16,126 --> 00:18:18,440 HTTPS. 371 00:18:18,440 --> 00:18:21,890 Esto sugiere que por medio de algún mecanismo, algunos humanos en Harvard 372 00:18:21,890 --> 00:18:23,450 decidieron uno, uh-uh. 373 00:18:23,450 --> 00:18:25,430 No iremos a algo llamado hardvard.edu. 374 00:18:25,430 --> 00:18:29,240 Deberíamos estar en www.hardvard.edu pero por cualquier razón 375 00:18:29,240 --> 00:18:34,430 y también decidieron que si un usuario nos visita usando HTTP, que no está 376 00:18:34,430 --> 00:18:39,020 encriptada, no es segura, nos forzarán a regresar 377 00:18:39,020 --> 00:18:43,460 por medio de un canal seguro, hoy no nos detendremos en cómo se implementan, 378 00:18:43,460 --> 00:18:46,910 pero es como en Caesar o Vigenere, donde había una manera de encriptar o codificar 379 00:18:46,910 --> 00:18:49,100 información, los navegadores también pueden hacer eso 380 00:18:49,100 --> 00:18:53,600 e implica usar HTTPS en lugar de solo HTTP. 381 00:18:53,600 --> 00:18:56,730 Muy bien, visitaremos esto una vez más. 382 00:18:56,730 --> 00:18:59,560 A continuación, resaltaré esa ubicación. 383 00:18:59,560 --> 00:19:04,220 curl -I de esa dirección y ahora una cantidad abrumadora de información 384 00:19:04,220 --> 00:19:07,910 que regresa, es por eso puse las eses, pero las cosas jugosas 385 00:19:07,910 --> 00:19:08,960 están en la parte superior. 386 00:19:08,960 --> 00:19:16,880 Ahora todo está 200 OK, y de hecho, si lo ejecuto sin -I 387 00:19:16,880 --> 00:19:18,920 veo el contenido del sobre, 388 00:19:18,920 --> 00:19:21,680 está como buscar adentrarse en el sobre, 389 00:19:21,680 --> 00:19:25,190 ahora veo mucho más contenido, que colectivamente 390 00:19:25,190 --> 00:19:29,240 compone la página principal de Harvard, y 391 00:19:29,240 --> 00:19:30,914 podemos ver esto incluso en Chrome. 392 00:19:30,914 --> 00:19:33,830 Otra vez, proseguiré con mi navegador, y si no hicimos esto antes, 393 00:19:33,830 --> 00:19:37,280 podemos ir a nuestro menú View, Developer, 394 00:19:37,280 --> 00:19:40,490 e ir a Developer Tools, como lo haremos en las siguientes series de problemas, 395 00:19:40,490 --> 00:19:43,280 puedo ir aquí y ver un montón de funciones, y solo un par 396 00:19:43,280 --> 00:19:44,780 de las que podríamos ver hoy. 397 00:19:44,780 --> 00:19:47,120 Específicamente, haré clic en la pestaña Network. 398 00:19:47,120 --> 00:19:50,819 Developer Tools en Chrome todavía me muestra la página de inicio, 399 00:19:50,819 --> 00:19:52,610 pero de alguna manera le dedica parte de la pantalla 400 00:19:52,610 --> 00:19:56,690 a estas herramientas especiales de desarrollador que hacen fácil entender 401 00:19:56,690 --> 00:19:57,976 la creación de sitios web. 402 00:19:57,976 --> 00:19:59,850 Con el tiempo, comenzaremos a usar esto nosotros mismos, 403 00:19:59,850 --> 00:20:04,130 lo bueno de los dispositivos de escucha de red, es que podemos detectar o monitorear 404 00:20:04,130 --> 00:20:07,010 todas las solicitudes que van y vienen entre el navegador 405 00:20:07,010 --> 00:20:09,396 y el servidor en los llamados sobres. 406 00:20:09,396 --> 00:20:11,770 Primero presionaré el pequeño símbolo Clear de aquí 407 00:20:11,770 --> 00:20:13,580 para limpiar la pantalla. 408 00:20:13,580 --> 00:20:18,050 Haré clic en Preserve log para poder ver lo que pasa 409 00:20:18,050 --> 00:20:19,757 ahora seguiré adelante, 410 00:20:19,757 --> 00:20:21,590 de hecho, seguiré adelante y haré lo siguiente. 411 00:20:21,590 --> 00:20:27,380 http://harvard.edu, es el tipo de versión incorrecta que 412 00:20:27,380 --> 00:20:28,910 espero el navegador arregle para mi 413 00:20:28,910 --> 00:20:30,050 y presiono Enter. 414 00:20:30,050 --> 00:20:33,500 Un montón de cosas vuelan por la pantalla 415 00:20:33,500 --> 00:20:36,050 y, de hecho, si le hacemos un acercamiento a esto, 416 00:20:36,050 --> 00:20:38,660 veremos que el visitar la página de inicio de Harvard 417 00:20:38,660 --> 00:20:44,000 requiere de 85 sobres, que parecen ir y venir con fragmentos 418 00:20:44,000 --> 00:20:46,790 de la página web y pronto veremos lo que son algunos de esos fragmentos, 419 00:20:46,790 --> 00:20:48,710 pero no es solo un archivo el que regresa, 420 00:20:48,710 --> 00:20:49,730 son montones de archivos, 421 00:20:49,730 --> 00:20:52,730 tal vez imágenes, fuentes o también algunas otras cosas, 422 00:20:52,730 --> 00:20:54,770 pero me desplazaré hacia arriba en esta salida, 423 00:20:54,770 --> 00:20:57,830 también noten la historia que se contó aquí. 424 00:20:57,830 --> 00:21:01,310 La primera solicitud, sobre la que puedo pasar el mouse y verla, 425 00:21:01,310 --> 00:21:04,820 regresó con un 301, que ahora sabemos es Permanentemente movido 426 00:21:04,820 --> 00:21:06,140 o una redirección 427 00:21:06,140 --> 00:21:08,330 Luego, si paso el mouse sobre la segunda, 428 00:21:08,330 --> 00:21:12,980 veremos que es una URL www un poco más precisa, pero aún con el HTTP, 429 00:21:12,980 --> 00:21:18,240 así, eso fue redirigido y por último, si miramos la tercera línea de aquí, 430 00:21:18,240 --> 00:21:20,180 este es el único que finalmente terminamos 431 00:21:20,180 --> 00:21:24,560 y de hecho regresa 200, al igual que los montones de otros resultados posteriores 432 00:21:24,560 --> 00:21:27,860 y veremos lo que esos 200 significan en realidad. 433 00:21:27,860 --> 00:21:29,840 Podemos hacer esto un poco mejor 434 00:21:29,840 --> 00:21:33,380 y tal vez sea apropiado que nuestros amigos lo hicieran en el futuro. 435 00:21:33,380 --> 00:21:35,250 Volveré al IDE. 436 00:21:35,250 --> 00:21:38,960 Para continuar, borraré esto y en vez de usar cURL en harvard.edu, 437 00:21:38,960 --> 00:21:43,650 haré http://yale.edu y preguntaré, 438 00:21:43,650 --> 00:21:47,570 ¿cuál sería un mejor enfoque? conocemos los ingredientes, que 439 00:21:47,570 --> 00:21:49,880 tenemos, sobre cómo funcionan las redirecciones. 440 00:21:49,880 --> 00:21:54,890 ¿Cómo mejoraría Harvard respecto a llevar al usuario a la dirección 441 00:21:54,890 --> 00:21:57,560 en la que queremos que esté? 442 00:21:57,560 --> 00:21:58,161 Sí. 443 00:21:58,161 --> 00:22:00,270 PÚBLICO: ¿Al no forzar dos redireccionamientos? 444 00:22:00,270 --> 00:22:02,210 DAVID: Sí, al no forzar dos redireccionamientos, ¿cierto? 445 00:22:02,210 --> 00:22:04,001 Incluso si parte de este material es nuevo, hablamos 446 00:22:04,001 --> 00:22:06,284 mucho sobre la corrección, el diseño y el estilo, 447 00:22:06,284 --> 00:22:09,200 vimos un estilo desordenado en la pantalla y por ahora eso es todo, 448 00:22:09,200 --> 00:22:10,310 después hablaremos más sobre eso. 449 00:22:10,310 --> 00:22:12,230 Parece que es correcto porque funciona, 450 00:22:12,230 --> 00:22:14,150 pero podría tener un mejor diseño 451 00:22:14,150 --> 00:22:17,920 porque, ¿por qué hacemos una solicitud y luego otra 452 00:22:17,920 --> 00:22:20,510 para arreglar la primera y luego hacemos una tercera 453 00:22:20,510 --> 00:22:22,370 para arreglar la segunda? 454 00:22:22,370 --> 00:22:23,630 ¿Por qué no combinarlas? 455 00:22:23,630 --> 00:22:26,480 Parece que alguien tuvo la misma intuición en el camino 456 00:22:26,480 --> 00:22:31,610 así visitamos yale.edu, solo con el HTTP y sin el www, 457 00:22:31,610 --> 00:22:34,820 ellos, de un solo golpe, nos redireccionan 458 00:22:34,820 --> 00:22:38,730 al lugar correcto, en este caso. 459 00:22:38,730 --> 00:22:42,950 Dicho esto, tal vez lo más apropiado sea que 460 00:22:42,950 --> 00:22:45,980 en unos cuantos años, bueno, ahora hace algunos años, 461 00:22:45,980 --> 00:22:49,400 puede que tratáramos de visitar esta dirección en particular 462 00:22:49,400 --> 00:22:52,730 y esto es algo que solamente puedo hacer en Cambridge. 463 00:22:52,730 --> 00:22:58,940 Si continúo, abro un nuevo navegador y voy a digamos http: // 464 00:22:58,940 --> 00:23:05,240 safetyschool.org y presionamos Enter si nunca hemos estado. 465 00:23:05,240 --> 00:23:06,350 ¡Oh, que interesante! 466 00:23:06,350 --> 00:23:07,900 [RISAS] 467 00:23:07,900 --> 00:23:10,805 468 00:23:10,805 --> 00:23:13,430 DAVID: Me disculpo con aquellos que nos sintonizan 469 00:23:13,430 --> 00:23:15,050 en vivo desde New Haven. 470 00:23:15,050 --> 00:23:17,127 ¿cómo es posible que esto funcione? 471 00:23:17,127 --> 00:23:18,710 Es una heurística muy simple. 472 00:23:18,710 --> 00:23:21,770 Si en vez de seleccionar a Yale, Harvard o cualquier otra dirección, 473 00:23:21,770 --> 00:23:25,520 pongo safetyschool.org, podemos concentrarnos en 474 00:23:25,520 --> 00:23:29,150 lo que ocurre abajo del agua y parece que safetyschool.org se mudó definitivamente 475 00:23:29,150 --> 00:23:33,980 a New Haven, pero es a través de este mecanismo muy simple que alguien 476 00:23:33,980 --> 00:23:36,079 en el año 2000 registró este nombre de dominio, 477 00:23:36,079 --> 00:23:38,870 y de hecho buscaba esto en la historia de anoche, 478 00:23:38,870 --> 00:23:42,620 me divertí al descubrir que quien compró el dominio ha estado pagando por este 479 00:23:42,620 --> 00:23:48,389 nombre durante 17 años para la broma anual, pero bien vale la pena, 480 00:23:48,389 --> 00:23:49,430 pero creo que sería, 481 00:23:49,430 --> 00:23:50,652 [RISAS] 482 00:23:50,652 --> 00:23:52,610 DAVID: Pero ahora creo que esto es algo justo, 483 00:23:52,610 --> 00:23:55,550 esto solo es justo, si también le echamos un vistazo a este otro, 484 00:23:55,550 --> 00:24:03,230 si visitamos harvardsucks.org, también esta 485 00:24:03,230 --> 00:24:05,100 redirigido, esta vez a www. 486 00:24:05,100 --> 00:24:09,770 entonces sigamos este pequeño rastro cURL -I http://www.harvardsucks.org/ 487 00:24:09,770 --> 00:24:11,240 ¡y este salió bien!. 488 00:24:11,240 --> 00:24:14,450 Eso significa que algo vive en harvardsucks.org 489 00:24:14,450 --> 00:24:18,660 y no redirige de manera ingeniosa hacia harvard.edu, 490 00:24:18,660 --> 00:24:20,660 pero para presentar esto, permítanme presentarles 491 00:24:20,660 --> 00:24:23,090 a un amiga nuestra, quien muy extrañamente hoy nos visita desde New 492 00:24:23,090 --> 00:24:23,420 Heaven. 493 00:24:23,420 --> 00:24:23,919 Hola Natalie. 494 00:24:23,919 --> 00:24:26,420 ¿Quieres venir y saludarnos por un momento? 495 00:24:26,420 --> 00:24:30,950 Esta es Natalie, nuestra titular del curso junto con Benedict Brown, 496 00:24:30,950 --> 00:24:33,740 Anushri y Staleos en New Haven. 497 00:24:33,740 --> 00:24:35,360 ¿Te gustaría saludarnos rápidamente? 498 00:24:35,360 --> 00:24:37,850 Hola, hola a todos. 499 00:24:37,850 --> 00:24:40,540 DAVID: Qué bueno tenerte hoy aquí y como sabes, 500 00:24:40,540 --> 00:24:43,100 ¿Quieres mencionar algo sobre lo que estamos a punto de ver aquí? 501 00:24:43,100 --> 00:24:48,470 ¿Sabes qué pasó algunos años después del 2004? 502 00:24:48,470 --> 00:24:51,430 PÚBLICO: Ohh... hicimos... hicimos una travesura... básicamente. 503 00:24:51,430 --> 00:24:53,090 DAVID: Bien, la descripción es perfecta. 504 00:24:53,090 --> 00:24:53,950 Muchas gracias. 505 00:24:53,950 --> 00:24:54,658 Saluden a Natalie. 506 00:24:54,658 --> 00:24:57,770 Para continuar, reproduciré en tres minutos 507 00:24:57,770 --> 00:25:00,020 algo que es difícil de justificar académicamente, 508 00:25:00,020 --> 00:25:02,990 pero tal vez sea una de las mejores bromas que se hicieron alguna vez. 509 00:25:02,990 --> 00:25:05,720 Para resumir, nuestros amigos, en el camino 510 00:25:05,720 --> 00:25:08,840 se reunieron con otros, justo antes del partido Harvard contra Yale, que 511 00:25:08,840 --> 00:25:11,870 ese año se efectuaría en Harvard 512 00:25:11,870 --> 00:25:14,780 y trazaron un mapa con un software, una especie de sistema con cuadrículas 513 00:25:14,780 --> 00:25:18,260 con el que alinearon todos los asientos en el estadio de Harvard, 514 00:25:18,260 --> 00:25:21,140 y supusieron que cada persona ocupa cierta cantidad espacio, 515 00:25:21,140 --> 00:25:23,330 luego usaron un software especial para averiguar 516 00:25:23,330 --> 00:25:27,080 cómo podrían deletrear algo con el público, de una manera que 517 00:25:27,080 --> 00:25:30,416 fuera legible para los oponentes, los Yalies, que estaban en el otro lado. 518 00:25:30,416 --> 00:25:32,415 Si pudiéramos atenuar las luces para echarle un vistazo al pasado, 519 00:25:32,415 --> 00:25:37,106 a los ayeres y al pequeño uso de este software. 520 00:25:37,106 --> 00:25:39,082 [MÚSICA DE FONDO] 521 00:25:39,082 --> 00:26:04,223 522 00:26:04,223 --> 00:26:05,264 - Todos los lugares de arriba. 523 00:26:05,264 --> 00:26:08,280 524 00:26:08,280 --> 00:26:09,873 - Esto es por ti Yale. 525 00:26:09,873 --> 00:26:11,352 Te amamos Yale. 526 00:26:11,352 --> 00:26:13,810 - Estamos aquí para animar a Harvard. 527 00:26:13,810 --> 00:26:14,310 - ¡Sí! 528 00:26:14,310 --> 00:26:15,789 ¡Vamos Harvard! 529 00:26:15,789 --> 00:26:17,268 - ¡Vamos, Harvard! 530 00:26:17,268 --> 00:26:19,733 - Toma la de arriba y pásala. 531 00:26:19,733 --> 00:26:23,184 - No va a decir algo como Yale apesta, ¿verdad? 532 00:26:23,184 --> 00:26:25,156 - No, dice, ¡Vamos Harvard! 533 00:26:25,156 --> 00:26:26,635 - Somos geniales. 534 00:26:26,635 --> 00:26:28,114 - ¿Ves esa cosa? 535 00:26:28,114 --> 00:26:30,579 ¡Miren, tienen las cartulinas! 536 00:26:30,579 --> 00:26:32,551 ¡Las van a usar! 537 00:26:32,551 --> 00:26:35,190 ¡En serio las van a usar! 538 00:26:35,190 --> 00:26:37,290 ¡No puedo [PITIDO] creerlo! 539 00:26:37,290 --> 00:26:38,456 - ¿Señor, qué piensa de Yale? 540 00:26:38,456 --> 00:26:40,368 - ¡No creo que sean buenos! 541 00:26:40,368 --> 00:26:43,670 - Puede ser un completo desastre, no lo sé. 542 00:26:43,670 --> 00:26:44,670 - ¿Ya todos tienen? 543 00:26:44,670 --> 00:26:46,732 ¿Ya todos tienen sus cosas? 544 00:26:46,732 --> 00:26:49,485 - La probabilidad de que sea legible es muy pequeña. 545 00:26:49,485 --> 00:26:50,318 ¡Las van a usar! 546 00:26:50,318 --> 00:26:51,272 ¡Las van a usar! 547 00:26:51,272 --> 00:26:52,230 - Es demasiado difícil. 548 00:26:52,230 --> 00:26:53,664 - Mira, mira todas las cartulinas. 549 00:26:53,664 --> 00:26:55,098 - Lo sé, pero es demasiado difícil. 550 00:26:55,098 --> 00:26:57,473 - ¿De qué fraternidad son ustedes? 551 00:26:57,473 --> 00:26:59,375 Esa no existe. 552 00:26:59,375 --> 00:27:01,800 - ¿Ho-fo? 553 00:27:01,800 --> 00:27:03,717 - Sí. 554 00:27:03,717 --> 00:27:05,545 Ustedes no son de Harvard, ¿verdad? 555 00:27:05,545 --> 00:27:06,459 - No, fo-ho. 556 00:27:06,459 --> 00:27:07,830 ¡Pforzheimer! 557 00:27:07,830 --> 00:27:08,967 - Sí, pero él dijo ho-fo. 558 00:27:08,967 --> 00:27:10,592 - Asegurémonos de que ya todos tengan. 559 00:27:10,592 --> 00:27:11,494 - Bueno, creo que ella está borracha. 560 00:27:11,494 --> 00:27:12,900 - ¿Ya se distribuyeron todas las tarjetas? 561 00:27:12,900 --> 00:27:13,400 - ¡Casi todas! 562 00:27:13,400 --> 00:27:17,612 563 00:27:17,612 --> 00:27:22,076 [APLAUSOS] 564 00:27:22,076 --> 00:27:27,036 565 00:27:27,036 --> 00:27:28,524 [PORRAS] 566 00:27:28,524 --> 00:27:29,516 567 00:27:29,516 --> 00:27:31,004 - ¡Levanten sus cartulinas! 568 00:27:31,004 --> 00:27:32,988 - ¡Lo [PITIDO] hicieron! 569 00:27:32,988 --> 00:27:34,972 [CORO GRITANDO "¡APESTAN!"] 570 00:27:34,972 --> 00:27:36,956 571 00:27:36,956 --> 00:27:38,940 - ¡Lo [PITIDO] hicieron! 572 00:27:38,940 --> 00:27:41,420 - ¡Lo [PITIDO] hicieron! 573 00:27:41,420 --> 00:27:46,380 [CORO GRITANDO "¡APESTAN!"] 574 00:27:46,380 --> 00:27:48,860 - ¿Señor, qué piensa de Yale? 575 00:27:48,860 --> 00:27:50,844 - ¡Apestan! 576 00:27:50,844 --> 00:27:52,332 - ¡Otra vez! 577 00:27:52,332 --> 00:27:53,820 578 00:27:53,820 --> 00:27:55,308 - ¡Otra vez! 579 00:27:55,308 --> 00:27:58,780 580 00:27:58,780 --> 00:28:02,028 - ¡Oh! ¡Ahí van de nuevo! 581 00:28:02,028 --> 00:28:18,654 [CORO GRITANDO "¡APESTAN!"] 582 00:28:18,654 --> 00:28:19,580 [FINALIZA LA REPRODUCCIÓN] 583 00:28:19,580 --> 00:28:21,455 DAVID: Muy bien, hablamos 584 00:28:21,455 --> 00:28:23,620 sobre lo que sucede dentro de este sobre, 585 00:28:23,620 --> 00:28:26,062 pero, ¿qué sucede afuera? 586 00:28:26,062 --> 00:28:28,770 Cuando entregamos este sobre desde la laptop o el teléfono 587 00:28:28,770 --> 00:28:31,510 al Internet, ¿cómo llega éste a su destino? 588 00:28:31,510 --> 00:28:34,600 Bien, probablemente escuchamos del acrónimo IP, o protocolo de Internet 589 00:28:34,600 --> 00:28:37,930 y que cada computadora, teléfono o laptop con Internet 590 00:28:37,930 --> 00:28:43,000 en esta sala tienen una dirección única. 591 00:28:43,000 --> 00:28:46,810 Esa dirección única se conoce como dirección IP y se parece mucho a la 592 00:28:46,810 --> 00:28:51,040 de un edificio en el mundo real, como el Centro de Ciencias sería 1 Oxford 593 00:28:51,040 --> 00:28:53,860 Calle Cambridge, Massachusetts 02138, EE.UU. 594 00:28:53,860 --> 00:28:55,270 En el camino está el edificio de CS. 595 00:28:55,270 --> 00:28:58,600 Calle Cambridge, Massachusetts 02138, EE.UU. 596 00:28:58,600 --> 00:29:01,784 Esas largas cadenas identifican de manera única a los edificios 597 00:29:01,784 --> 00:29:03,700 en el mundo, para el servicio de correo, entre otros 598 00:29:03,700 --> 00:29:08,470 y es así como las direcciones IP identifican las computadoras en Internet, 599 00:29:08,470 --> 00:29:10,570 aunque estas direcciones son mucho más concisas, 600 00:29:10,570 --> 00:29:14,080 no son cadenas largas, sino números con cuatro partes 601 00:29:14,080 --> 00:29:20,450 y cada uno de esos números de la dirección IP tiene un valor de 0 a 255. 602 00:29:20,450 --> 00:29:23,710 Así, la dirección IP más baja es cero y la más grande 603 00:29:23,710 --> 00:29:25,860 son todos hasta 255 con algunas restricciones. 604 00:29:25,860 --> 00:29:28,250 No podemos usar todos esos números. 605 00:29:28,250 --> 00:29:32,530 A modo de avance rápido, si el número más pequeño es 0 606 00:29:32,530 --> 00:29:37,450 y el número más grande para cada sección de la dirección IP es 255, 607 00:29:37,450 --> 00:29:40,570 ¿Cuántos bits se usan para cada uno de esos cuatro números? 608 00:29:40,570 --> 00:29:41,790 PÚBLICO: Son 8. 609 00:29:41,790 --> 00:29:42,790 DAVID: Sí, son 8. 610 00:29:42,790 --> 00:29:47,320 Recordemos que 8 bits son 2 veces 2 veces 2 veces 2 veces 2 veces 611 00:29:47,320 --> 00:29:52,600 2 veces 2 veces 2, lo cual es 256 y en efecto tenemos 256 valores totales de 0 612 00:29:52,600 --> 00:29:54,320 que llegan hasta 255. 613 00:29:54,320 --> 00:29:59,180 Entonces, una dirección IP es 8 más 8 más 8 veces 8, o 32 bits en total, 614 00:29:59,180 --> 00:30:03,250 o se completa el círculo con la semana cero, si tenemos 32 bits, 615 00:30:03,250 --> 00:30:05,490 aproximadamente ¿cuál es el mayor número que podemos contar? 616 00:30:05,490 --> 00:30:08,770 ¿Cuánto es 2 a la potencia de 32? 617 00:30:08,770 --> 00:30:10,630 Sí, son aproximadamente 4 mil millones. 618 00:30:10,630 --> 00:30:14,500 En pocas palabras, lo que implica esta definición tan simple es que 619 00:30:14,500 --> 00:30:19,730 en este modelo solo puede haber, cuatro mil millones de computadoras, 620 00:30:19,730 --> 00:30:24,250 teléfonos, refrigeradores y dispositivos conectados al Internet, al mismo tiempo 621 00:30:24,250 --> 00:30:27,064 y si lo hacen, todos necesitan una dirección IP que sea única. 622 00:30:27,064 --> 00:30:29,230 Estuve diciendo una pequeña mentira blanca, en la que 623 00:30:29,230 --> 00:30:32,246 técnicamente no todos tienen que ser únicos, porque existen 624 00:30:32,246 --> 00:30:34,120 formas en las que podemos compartir las direcciones 625 00:30:34,120 --> 00:30:37,545 además, actualmente hay direcciones aún más grandes, que no son de 32 sino de 128 626 00:30:37,545 --> 00:30:42,160 bits, es tan grande este número que resulta inmenso y supongo impronunciable. 627 00:30:42,160 --> 00:30:45,580 Ya nos adelantamos a este problema, pero en muchos lugares 628 00:30:45,580 --> 00:30:49,900 empresas y proveedores de servicios de internet como Comcast y Verizon 629 00:30:49,900 --> 00:30:53,950 al igual que campus como Harvard y Yale, tienden a seguir 630 00:30:53,950 --> 00:30:57,640 patrones, como aquí en Harvard muchas de las direcciones IP comienzan con 631 00:30:57,640 --> 00:31:02,329 140.247.algo.algo o 128.103. 632 00:31:02,329 --> 00:31:04,120 Más adelante, en New Haven, gran parte de las direcciones 633 00:31:04,120 --> 00:31:08,110 IP de allí comienzan con 130.132 o 128.36, 634 00:31:08,110 --> 00:31:12,790 lo cual no es interesante para los humanos que usan estas direcciones 635 00:31:12,790 --> 00:31:16,570 IP, pero es útil para los servidores o los dispositivos que 636 00:31:16,570 --> 00:31:20,570 distribuyen estos sobres de un lugar a otro. 637 00:31:20,570 --> 00:31:24,040 Actualmente, en nuestros hogares e incluso algunas veces en el campus, 638 00:31:24,040 --> 00:31:26,620 también hay lo que se llama direcciones IP privadas, que 639 00:31:26,620 --> 00:31:29,230 son números que funcionan dentro de estos rangos y que 640 00:31:29,230 --> 00:31:33,430 son una solución para que cuando nos registremos en Verizon o en Comcast 641 00:31:33,430 --> 00:31:35,800 en casa o nuestros padres lo hagan por el servicio de internet, 642 00:31:35,800 --> 00:31:39,194 obtengamos una sola dirección IP del proveedor de servicios de Internet. 643 00:31:39,194 --> 00:31:41,860 Es por lo que pagamos cada mes, pero es gracias a algo 644 00:31:41,860 --> 00:31:44,920 llamado traducción de direcciones de red y a otras tecnologías, 645 00:31:44,920 --> 00:31:47,980 podemos darle a todos nuestros hermanos, padres, 646 00:31:47,980 --> 00:31:52,160 familiares o compañeros de cuarto, su propia y única dirección. 647 00:31:52,160 --> 00:31:55,270 Es privada en el sentido de que nadie más en el mundo exterior 648 00:31:55,270 --> 00:31:59,360 puede acceder a ella, a menos que se conecte. 649 00:31:59,360 --> 00:32:01,510 Generalmente, esta es la razón por la que desde nuestro hogar entramos 650 00:32:01,510 --> 00:32:04,809 a cualquier sitio web o servicio en Internet que queramos, 651 00:32:04,809 --> 00:32:06,850 pero no podemos tener personas al azar 652 00:32:06,850 --> 00:32:09,730 tratando de entrar a nuestra computadora portátil o a nuestro dispositivo en casa 653 00:32:09,730 --> 00:32:14,440 porque hay un dispositivo, un enrutador en casa, que traduce direcciones privadas 654 00:32:14,440 --> 00:32:17,777 en direcciones, que de otro modo, serían públicas, pero por ahora concluimos 655 00:32:17,777 --> 00:32:20,360 que cada computadora en Internet tiene una dirección IP, 656 00:32:20,360 --> 00:32:23,530 y si alguna vez han hurgado en su Mac, como en Preferencias del Sistema, 657 00:32:23,530 --> 00:32:24,620 de hecho podemos verlo. 658 00:32:24,620 --> 00:32:28,900 Acabo de sacar una captura de pantalla de un panel de control de red en Mac OS 659 00:32:28,900 --> 00:32:31,120 y si miran más o menos en su propia Mac, 660 00:32:31,120 --> 00:32:33,670 deberían ver que su dirección IP es algo 661 00:32:33,670 --> 00:32:36,430 que varía completamente por persona y de manera geográfica, 662 00:32:36,430 --> 00:32:38,170 pero verán su dirección IP ahí. 663 00:32:38,170 --> 00:32:41,110 En Windows, al menos en Windows 10, pueden ver su dirección IP 664 00:32:41,110 --> 00:32:43,340 en Configuración, como se resalta aquí. 665 00:32:43,340 --> 00:32:45,340 Esta tiene una dirección muy diferente, pero eso es 666 00:32:45,340 --> 00:32:48,310 porque esta persona estaba en una red diferente a la de todos nosotros. 667 00:32:48,310 --> 00:32:50,797 Entonces, ¿de dónde vienen estas direcciones IP? 668 00:32:50,797 --> 00:32:52,630 Bien, en el día alguien 669 00:32:52,630 --> 00:32:56,680 llega a nuestra casa y configura nuestro Comcast o servicio de Internet de Verizon 670 00:32:56,680 --> 00:33:00,640 y le gustaría ingresar estos números en su Mac o PC 671 00:33:00,640 --> 00:33:03,370 luego irse, y usted tendría una computadora en Internet. 672 00:33:03,370 --> 00:33:05,890 En estos días es mucho más dinámico. 673 00:33:05,890 --> 00:33:07,270 No necesitamos que venga alguien. 674 00:33:07,270 --> 00:33:10,570 Eso, ciertamente, no escala muy bien porque hay otros protocolos. 675 00:33:10,570 --> 00:33:13,720 HTTP es este protocolo del que hablamos anteriormente sobre páginas web, 676 00:33:13,720 --> 00:33:17,530 pero hay otros protocolos como el Protocolo de configuración de host dinámico, que 677 00:33:17,530 --> 00:33:21,760 es un trabalenguas, pero significa que las Macs, PCs, teléfonos Android, iPhones 678 00:33:21,760 --> 00:33:24,940 y similares, si hablan este protocolo, cuando 679 00:33:24,940 --> 00:33:28,630 encienden sus teléfonos o inician la computadora portátil sabe 680 00:33:28,630 --> 00:33:32,260 si tiene soporte para este protocolo, para anunciar en el Internet, 681 00:33:32,260 --> 00:33:32,890 hello world. 682 00:33:32,890 --> 00:33:33,890 Estoy despierto. 683 00:33:33,890 --> 00:33:35,350 ¿Cuál debería ser mi dirección IP? 684 00:33:35,350 --> 00:33:39,550 Este tipo transmisión de mensaje, y si Harvard, Yale, Comcast 685 00:33:39,550 --> 00:33:41,860 o Verizon o donde sea que estemos en el mundo 686 00:33:41,860 --> 00:33:46,720 tiene un servidor DHCP cuyo propósito en la vida es solo escuchar esos hellos, 687 00:33:46,720 --> 00:33:51,490 ese servidor debe responder usando el mismo protocolo con su 688 00:33:51,490 --> 00:33:55,660 dirección IP, y se da cuenta de cuál nos da en función de la gama disponible 689 00:33:55,660 --> 00:33:57,320 de números típicos. 690 00:33:57,320 --> 00:33:59,170 Así es como obtendríamos esto, pero hay 691 00:33:59,170 --> 00:34:00,711 otras cosas en estos paneles de control. 692 00:34:00,711 --> 00:34:03,950 De hecho, si miramos un poco más abajo en Windows, también hay servidores DNS. 693 00:34:03,950 --> 00:34:05,110 Sistema de nombres de dominio, (en inglés Domain Name System). 694 00:34:05,110 --> 00:34:10,906 Otro acrónimo y un poco de trabalenguas, pero también puedes verlo en Mac OS/2 695 00:34:10,906 --> 00:34:13,239 si se hace clic en Advanced y se echa un vistazo. 696 00:34:13,239 --> 00:34:17,690 Aquí, por ejemplo, se menciona algo completamente diferente, un enrutador. 697 00:34:17,690 --> 00:34:20,080 Así que hay muchas direcciones diferentes pasando aquí 698 00:34:20,080 --> 00:34:21,730 y muchos servidores diferentes 699 00:34:21,730 --> 00:34:23,889 Entonces, ¿cómo es que están todas juntas? 700 00:34:23,889 --> 00:34:28,750 Bueno, DNS es interesante porque es 701 00:34:28,750 --> 00:34:34,280 el que traduce los nombres de dominio a direcciones IP, ¿cierto? 702 00:34:34,280 --> 00:34:38,889 Ninguno de nosotros probablemente visite http: // y luego un número, ¿cierto? 703 00:34:38,889 --> 00:34:41,650 Visitamos facebook.com, google.com o similares, 704 00:34:41,650 --> 00:34:46,699 eso se debe a que las computadoras saben cómo traducir una a la otra. 705 00:34:46,699 --> 00:34:51,040 Si hago este comando, nslookup, para buscar el servidor de nombres 706 00:34:51,040 --> 00:34:55,840 y luego escribo algo como google.com, le pregunto a la computadora, 707 00:34:55,840 --> 00:34:58,780 en este caso, el IDE, ¿cuál es la dirección IP de google.com? 708 00:34:58,780 --> 00:35:02,470 Como humano la conozco como google.com, pero Internet la conoce 709 00:35:02,470 --> 00:35:05,840 por su dirección numérica única, y resulta que Google tiene varios, 710 00:35:05,840 --> 00:35:08,680 esto es una mentira piadosa porque tienen miles, 711 00:35:08,680 --> 00:35:11,590 pero los que le dicen a mi computadora que usen 712 00:35:11,590 --> 00:35:15,940 son esta, esta o cualquiera de estas otras direcciones. 713 00:35:15,940 --> 00:35:17,990 A continuación, veré qué sucede aquí. 714 00:35:17,990 --> 00:35:24,430 Si destaco esa dirección y abro un navegador, voy a http: // y esa 715 00:35:24,430 --> 00:35:29,950 dirección IP y presionamos Enter, observamos que pareció funcionar. 716 00:35:29,950 --> 00:35:30,730 Bien, ¿cómo es eso? 717 00:35:30,730 --> 00:35:32,980 Es un poco difícil verlo en Chrome, pero 718 00:35:32,980 --> 00:35:37,900 proseguiremos a abrir la pestaña Inspect tab e iremos a la red al igual que antes. 719 00:35:37,900 --> 00:35:40,407 Haré clic en Conservar registro para que guarde todo aquí, 720 00:35:40,407 --> 00:35:41,490 y podría usar curl. 721 00:35:41,490 --> 00:35:43,198 Curl era la versión más simple. 722 00:35:43,198 --> 00:35:45,430 Ahora estoy usando la versión gráfica más familiar. 723 00:35:45,430 --> 00:35:51,100 A continuación haré eso de nuevo e iré a http: //, esa dirección IP y presionaré 724 00:35:51,100 --> 00:35:52,270 Enter. 725 00:35:52,270 --> 00:35:54,940 Un montón de cosas volaron, incluso para la página de inicio de Google, 726 00:35:54,940 --> 00:35:56,290 noten lo que sucedió. 727 00:35:56,290 --> 00:35:57,670 En ese principio, ups, 728 00:35:57,670 --> 00:36:03,580 si desplazo el cursor sobre ella, veo http: // y luego el número que 729 00:36:03,580 --> 00:36:06,791 ingresé, pero es un 301 porque, ¿cuál fue la respuesta? 730 00:36:06,791 --> 00:36:08,290 Podemos ver estas respuestas. 731 00:36:08,290 --> 00:36:12,250 Haré clic en el código de estado aquí, o en la fila, ir a Encabezados 732 00:36:12,250 --> 00:36:16,780 y noten aquí, si hacemos un acercamiento, veremos que Google 733 00:36:16,780 --> 00:36:19,210 respondió con esta ubicación. 734 00:36:19,210 --> 00:36:21,580 Alguien en Google acaba de decidir, bien. 735 00:36:21,580 --> 00:36:23,350 Descifraron una de nuestras direcciones IP. 736 00:36:23,350 --> 00:36:25,480 Eso es genial, pero no queremos que vean eso en la URL. 737 00:36:25,480 --> 00:36:26,397 Es malo para nuestra marca. 738 00:36:26,397 --> 00:36:28,188 No queremos que marquen como favorita una dirección IP 739 00:36:28,188 --> 00:36:29,660 porque podría cambiar más adelante. 740 00:36:29,660 --> 00:36:31,899 Usamos los mismos mecanismos que antes, 741 00:36:31,899 --> 00:36:34,690 pero así es como podemos hacer la búsqueda y podemos ver lo mismo 742 00:36:34,690 --> 00:36:36,010 para cualquier cantidad de sitios web. 743 00:36:36,010 --> 00:36:40,772 Continuamos con nslookup de harvard.edu y recuperamos solo un par. 744 00:36:40,772 --> 00:36:43,730 Si hago lo mismo en Yale, recuperaré diferentes direcciones IP. 745 00:36:43,730 --> 00:36:45,880 Yale tiene aún más, en este caso, y por lo tanto este 746 00:36:45,880 --> 00:36:48,740 es cómo averigua la computadora hacia dónde se enviarán los datos. 747 00:36:48,740 --> 00:36:51,430 ¿Qué ocurre con este sobre? 748 00:36:51,430 --> 00:36:55,780 no son facebook.com, harvard.edu o yale.edu, 749 00:36:55,780 --> 00:37:01,300 será una dirección como 1.2.3.4 750 00:37:01,300 --> 00:37:04,510 o cualquiera que sea la dirección IP del servidor al que estoy tratando de enviar. 751 00:37:04,510 --> 00:37:06,700 Ahora, desde luego, espero una respuesta del servidor. 752 00:37:06,700 --> 00:37:08,740 Quiero recuperar mi fuente de noticias o quiero 753 00:37:08,740 --> 00:37:10,670 recuperar la página principal de Harvard o Yale. 754 00:37:10,670 --> 00:37:13,570 ¿Qué más debería poner en este sobre virtual, 755 00:37:13,570 --> 00:37:14,860 solo intuitivamente? 756 00:37:14,860 --> 00:37:15,360 Sí. 757 00:37:15,360 --> 00:37:16,800 PÚBLICO: ¿Su propia dirección IP? 758 00:37:16,800 --> 00:37:17,536 DAVID: ¿Qué es eso? 759 00:37:17,536 --> 00:37:17,920 PÚBLICO: Su propia dirección IP. 760 00:37:17,920 --> 00:37:19,250 DAVID: Mi propia dirección IP, sí. 761 00:37:19,250 --> 00:37:21,541 Como en el mundo humano, por si acaso algo 762 00:37:21,541 --> 00:37:26,560 sale mal con la oficina de correos, pondría mi propia dirección, 5.6.7.8, 763 00:37:26,560 --> 00:37:30,790 y podré eso en el sobre, por si algo sale mal o, mejor 764 00:37:30,790 --> 00:37:34,210 si algo va bien y están listos para darme unos 200 OK, 765 00:37:34,210 --> 00:37:37,010 volverían a mí porque saben de qué 766 00:37:37,010 --> 00:37:39,250 de qué dirección vino esta cosa. 767 00:37:39,250 --> 00:37:42,046 ¿Quién es o qué es lo que hace todo este enrutamiento? 768 00:37:42,046 --> 00:37:44,920 Bien, hay servidores en Internet que se denominan 769 00:37:44,920 --> 00:37:48,100 enrutadores, también conocidos como portales, que es un sinónimo, 770 00:37:48,100 --> 00:37:50,620 aquí es como un tipo de pintura artística de puntos 771 00:37:50,620 --> 00:37:54,070 en todo el mundo, y hay cientos, miles, decenas de miles 772 00:37:54,070 --> 00:37:54,880 de enrutadores 773 00:37:54,880 --> 00:37:57,820 Lo más probable es que ustedes mismos en casa, si tuvieran acceso a Internet, 774 00:37:57,820 --> 00:38:00,460 al tener uno de esos enrutadores, y su propósito en la vida, 775 00:38:00,460 --> 00:38:03,930 de nuevo, es tomar datos de su hogar y enviarlos a Internet, 776 00:38:03,930 --> 00:38:05,680 y cualquier respuesta que reciba, regresarla 777 00:38:05,680 --> 00:38:08,560 a la laptop o escritorio o teléfono apropiado 778 00:38:08,560 --> 00:38:13,010 o dispositivo inteligente que resulta estar en tu propia casa. 779 00:38:13,010 --> 00:38:14,650 También podemos verlo. 780 00:38:14,650 --> 00:38:18,630 A continuación, en CS50 IDE, intentaré con otro comando. 781 00:38:18,630 --> 00:38:21,630 Continuaré y haré un rastreo de ruta, 782 00:38:21,630 --> 00:38:25,620 es decir, rastrearé la ruta a yale.edu desde aquí, 783 00:38:25,620 --> 00:38:27,570 o técnicamente desde el IDE. 784 00:38:27,570 --> 00:38:30,872 Si presiono Enter, veremos algunas líneas de salida, 785 00:38:30,872 --> 00:38:32,580 y si intentamos esto en casa, solo nos daremos cuenta 786 00:38:32,580 --> 00:38:36,450 de que configuré, un poco diferente, mi IDE para simplificar la salida. 787 00:38:36,450 --> 00:38:39,420 Al parecer, existen cinco pasos entre Cambridge 788 00:38:39,420 --> 00:38:41,935 y New Haven, o técnicamente entre el IDE y New Haven, 789 00:38:41,935 --> 00:38:43,310 ¿Cuáles son cada uno de estos pasos? 790 00:38:43,310 --> 00:38:47,010 Si continuamos esa versión de la historia, entre Yale y nosotros 791 00:38:47,010 --> 00:38:49,080 al parecer, existen cinco enrutadores. 792 00:38:49,080 --> 00:38:52,860 Hay cinco computadoras que tienen mucha RAM y CPU enormes 793 00:38:52,860 --> 00:38:54,780 que pueden manejar mucho tráfico de Internet, 794 00:38:54,780 --> 00:38:58,620 que descifran cómo obtener mi sobre desde este origen 795 00:38:58,620 --> 00:39:02,840 a este enrutador, a este enrutador, a este enrutador, al enrutador anónimo, 796 00:39:02,840 --> 00:39:03,400 hacia este. 797 00:39:03,400 --> 00:39:06,150 A veces se configura a los enrutadores para no responder estas preguntas 798 00:39:06,150 --> 00:39:07,390 de este programa que hace una ruta. 799 00:39:07,390 --> 00:39:10,530 Ellos están al tanto de sí mismos, y de nosotros 800 00:39:10,530 --> 00:39:13,570 y ven algunos números a la derecha de cada una de estas direcciones IP. 801 00:39:13,570 --> 00:39:19,776 Adivinen, ¿qué representan cada uno de estos números? 802 00:39:19,776 --> 00:39:20,680 ¿Qué es eso? 803 00:39:20,680 --> 00:39:22,040 No, está bien. 804 00:39:22,040 --> 00:39:23,200 PÚBLICO: ¿Milisegundos? 805 00:39:23,200 --> 00:39:24,616 DAVID: Milisegundos, sí. 806 00:39:24,616 --> 00:39:27,390 ¿Qué piensan que miden los milisegundos? 807 00:39:27,390 --> 00:39:32,430 Hora de ir, o hora de alcanzar ese enrutador específico. 808 00:39:32,430 --> 00:39:34,050 Entonces podemos inferir, 809 00:39:34,050 --> 00:39:35,730 y este es el tipo de cosa increíble. 810 00:39:35,730 --> 00:39:38,960 Para llevarme a New Haven toma como dos horas más, 811 00:39:38,960 --> 00:39:42,450 pero para recibir un correo electrónico, para obtener un sobre con un mensaje 812 00:39:42,450 --> 00:39:49,140 toma como 10.597 milisegundos para obtener datos de aquí hasta ahí, 813 00:39:49,140 --> 00:39:51,372 y con suerte de regreso, si es una solicitud de una página. 814 00:39:51,372 --> 00:39:53,080 Hagamos algo un poco más lejos. 815 00:39:53,080 --> 00:39:56,940 Hagamos como stanford.edu, rastreando la ruta aquí, 816 00:39:56,940 --> 00:40:00,419 y ya podemos ver que las cifras son un poco más altas, 817 00:40:00,419 --> 00:40:02,460 y eso tiene sentido intuitivo que Stanford 818 00:40:02,460 --> 00:40:06,120 está un poco más lejos que New Haven y tarda otros 41 milisegundos 819 00:40:06,120 --> 00:40:06,960 para llegar. 820 00:40:06,960 --> 00:40:10,590 Si voy más allá y leo como las noticias de una empresa 821 00:40:10,590 --> 00:40:16,330 como cnn.co.jp, el dominio de nivel superior para muchos servidores en Japón, 822 00:40:16,330 --> 00:40:20,160 podemos ver un repunte de cuántos milisegundos se necesitan, 823 00:40:20,160 --> 00:40:22,320 y de hecho, hay algo curioso aquí. 824 00:40:22,320 --> 00:40:26,850 ¿Por qué toma mucho más tiempo llegar desde el enrutador número tres 825 00:40:26,850 --> 00:40:30,756 al enrutador número cuatro? 826 00:40:30,756 --> 00:40:31,987 PÚBLICO: El océano. 827 00:40:31,987 --> 00:40:33,320 DAVID: El océano, sí. 828 00:40:33,320 --> 00:40:38,790 Hay una gran masa de agua entre la costa oeste de los EE. UU. y la costa 829 00:40:38,790 --> 00:40:43,020 de Japón, lo que probablemente explica por qué no entre tres y cuatro, 830 00:40:43,020 --> 00:40:47,416 y todos los enrutadores posteriores están a muchos milisegundos de distancia. 831 00:40:47,416 --> 00:40:48,540 Entonces estos no son acumulativos. 832 00:40:48,540 --> 00:40:50,559 Medimos de manera constante de aquí para allá, 833 00:40:50,559 --> 00:40:53,100 de aquí a un poco más lejos, de aquí a un poco más lejos. 834 00:40:53,100 --> 00:40:55,410 Tiene sentido que una vez que cruces ese océano, 835 00:40:55,410 --> 00:40:58,920 ese es el tipo de valor total que veremos, 836 00:40:58,920 --> 00:41:00,150 es realmente fascinante. 837 00:41:00,150 --> 00:41:01,858 Quiero decir, en todo el mundo hay 838 00:41:01,858 --> 00:41:06,692 hoy en día no solo existen tecnologías inalámbricas, sino tecnologías de cable 839 00:41:06,692 --> 00:41:08,400 y si tomamos solo unos segundos, podemos 840 00:41:08,400 --> 00:41:13,740 ver esta visualización de tantos de los cables transoceánicos que tienen 841 00:41:13,740 --> 00:41:19,110 fueron descargados por grandes barcos que llevan muchos, muchos bits de una 842 00:41:19,110 --> 00:41:21,090 costa a otra. 843 00:41:21,090 --> 00:41:22,575 [REPRODUCCIÓN DE VIDEO] 844 00:41:22,575 --> 00:41:46,335 845 00:41:46,335 --> 00:41:48,315 [MÚSICA DE FONDO] 846 00:41:48,315 --> 00:42:20,012 847 00:42:20,012 --> 00:42:21,530 [FINALIZA LA REPRODUCCIÓN] 848 00:42:21,530 --> 00:42:26,150 Con todos esos cables capaces de transmitir datos en todo el mundo, 849 00:42:26,150 --> 00:42:28,390 todavía hay un problema más. 850 00:42:28,390 --> 00:42:30,370 Incluso si queremos hacer algo simple como 851 00:42:30,370 --> 00:42:33,490 descargar una imagen de internet de un gato porque hay 852 00:42:33,490 --> 00:42:35,440 diferentes tipos de servidores por ahí. 853 00:42:35,440 --> 00:42:37,660 Aquí está mi computadora como mi laptop, 854 00:42:37,660 --> 00:42:38,949 que ejecuta Mac OS o Windows. 855 00:42:38,949 --> 00:42:40,990 Hay todos esos servidores en el centro de datos de Google, 856 00:42:40,990 --> 00:42:43,310 en sus estantes, en los de Facebook y similares, 857 00:42:43,310 --> 00:42:46,000 y entre todos esos servidores hay muchos enrutadores, 858 00:42:46,000 --> 00:42:49,240 pero esos servidores en esos estantes en Google, 859 00:42:49,240 --> 00:42:51,700 en Facebook, incluso en Harvard y Yale, 860 00:42:51,700 --> 00:42:54,530 son servidores que pueden hacer muchas cosas porque técnicamente, 861 00:42:54,530 --> 00:42:58,360 a pesar de tiende a hablarse de los servidores como dispositivos físicos, 862 00:42:58,360 --> 00:43:01,840 un servidor es, como iniciamos hoy, solo un programa. 863 00:43:01,840 --> 00:43:06,370 Es una pieza de software que alguien escribió que, cuando se ejecuta, 864 00:43:06,370 --> 00:43:09,700 escucha las solicitudes en Internet y responde a ellas, 865 00:43:09,700 --> 00:43:14,110 en general genera información, texto, o ceros y unos, o en algunos casos, 866 00:43:14,110 --> 00:43:14,860 gatos. 867 00:43:14,860 --> 00:43:18,310 Al recibir un sobre, ¿cómo es 868 00:43:18,310 --> 00:43:23,800 que un servidor sabe si es una solicitud de una página web, un correo electrónico, 869 00:43:23,800 --> 00:43:27,610 un mensaje de chat, un mensaje de voz o cualquier cantidad de otras cosas? 870 00:43:27,610 --> 00:43:31,510 Resulta que, necesitamos una pieza más de información, al menos, en este sobre 871 00:43:31,510 --> 00:43:33,700 que en el mundo se ha estandarizado 872 00:43:33,700 --> 00:43:37,900 por medio de otro protocolo llamado TCP, Protocolo de control de transmisión, que 873 00:43:37,900 --> 00:43:40,270 necesitamos, al menos, otra número de estos sobres, 874 00:43:40,270 --> 00:43:42,590 y ese número corresponde al tipo de servicio 875 00:43:42,590 --> 00:43:44,590 al que tratamos de acceder, o al tipo de datos 876 00:43:44,590 --> 00:43:46,570 que tratamos de enviar o recibir. 877 00:43:46,570 --> 00:43:50,052 Por ejemplo, 22 es para algo llamado SSH, Secure Shell. 878 00:43:50,052 --> 00:43:53,260 Casi todos los directores de CS lo usan, pero en el mundo la mayoría de la gente 879 00:43:53,260 --> 00:43:55,430 no porque es completamente una línea de comando 880 00:43:55,430 --> 00:43:57,970 y nos permite conectarnos de manera segura a algún servidor remoto 881 00:43:57,970 --> 00:44:02,440 sin usar algo como un navegador, pero todos en general usamos navegadores 882 00:44:02,440 --> 00:44:07,330 y HTTP todo este tiempo tuvo un número único asociado 883 00:44:07,330 --> 00:44:08,800 con esas solicitudes. 884 00:44:08,800 --> 00:44:12,760 80 es el número y si visitamos alguna URL que inicie con https, 885 00:44:12,760 --> 00:44:15,380 tiene el número especial, 443, 886 00:44:15,380 --> 00:44:19,810 que hace años la gente decidió identificar de manera única codificada en la web 887 00:44:19,810 --> 00:44:21,730 sus solicitudes de tráfico y respuestas. 888 00:44:21,730 --> 00:44:26,900 Para correos se usa 587, o Protocolo simple de transferencia de correo. 889 00:44:26,900 --> 00:44:29,270 Disculpen, 53 se usa para DNS. 890 00:44:29,270 --> 00:44:31,270 Si alguna vez enviamos un mensaje a un servidor que diga 891 00:44:31,270 --> 00:44:33,550 ¿Cuál es la dirección IP de google.com? 892 00:44:33,550 --> 00:44:38,530 Usamos el número 53 para identificar cualquier máquina o software que 893 00:44:38,530 --> 00:44:42,130 responda ese tipo de pregunta, y podemos ver esto. 894 00:44:42,130 --> 00:44:53,980 Si vuelvo a mi IDE y hago curl -I https://www.harvard.edu, 895 00:44:53,980 --> 00:44:56,950 esto, por supuesto, antes funcionó y fue 200 OK, 896 00:44:56,950 --> 00:45:01,540 también funcionará si digo con más precisión esta 897 00:45:01,540 --> 00:45:06,160 solicitud al puerto TCP, o número 80 y, 898 00:45:06,160 --> 00:45:07,510 diablos. 899 00:45:07,510 --> 00:45:12,170 Oh, está mal porque cometí un error pedagógico fascinante. 900 00:45:12,170 --> 00:45:14,732 ¿Qué hice mal? 901 00:45:14,732 --> 00:45:15,676 PÚBLICO: Https. 902 00:45:15,676 --> 00:45:18,259 DAVID: Sí, aquí arruiné mis números. 903 00:45:18,259 --> 00:45:23,320 Les dije https, pero quise decir http porque usé el puerto 80 904 00:45:23,320 --> 00:45:27,790 o, por el contrario, si quiero hablar con el puerto seguro que se conoce, 905 00:45:27,790 --> 00:45:31,390 quiero decir 443, y ese, de hecho, funciona, 906 00:45:31,390 --> 00:45:33,250 puedo hacerlo otra vez incluso en Chrome. 907 00:45:33,250 --> 00:45:41,020 Si en mi navegador escribo a http://yale.edu/80 908 00:45:41,020 --> 00:45:43,520 ocurren las redirecciones, eso también funcionará. 909 00:45:43,520 --> 00:45:46,900 Son navegadores que mantienen nuestras mentes enfocadas en el sitio web que 910 00:45:46,900 --> 00:45:50,050 intentamos visitar y no distraernos en detalles técnicos como: 80 911 00:45:50,050 --> 00:45:53,830 o diagonales, inclusive en http misma, 912 00:45:53,830 --> 00:45:55,450 solo esconde eso de la barra de URL. 913 00:45:55,450 --> 00:45:56,180 Todo está ahí. 914 00:45:56,180 --> 00:45:58,690 Todo sucede, pero los humanos nos sentimos un poco más cómodos 915 00:45:58,690 --> 00:46:01,390 con Internet con el paso de los años, Chrome y otros navegadores 916 00:46:01,390 --> 00:46:05,020 comienzan a ocultar algunos detalles de implementación de bajo nivel. 917 00:46:05,020 --> 00:46:10,060 Eso significa que, cuando quiero enviar una solicitud a un servidor web, 918 00:46:10,060 --> 00:46:14,150 debo escribir: 80 en el sobre 919 00:46:14,150 --> 00:46:16,660 para dejar claro que eso irá a un servidor web que emite 920 00:46:16,660 --> 00:46:19,630 en el puerto 80 o tal vez 443, y luego, ¿saben qué? 921 00:46:19,630 --> 00:46:22,120 Resulta que no nos detendremos demasiado en los detalles, 922 00:46:22,120 --> 00:46:26,850 incluso mi Mac o su PC tienen su número de puerto para todas estas solicitudes, 923 00:46:26,850 --> 00:46:27,350 ¿verdad? 924 00:46:27,350 --> 00:46:31,330 Sería bastante molesto si solo pudiéramos visitar un sitio web a la vez 925 00:46:31,330 --> 00:46:34,360 o que usáramos Gmail o Skype, pero no ambos 926 00:46:34,360 --> 00:46:37,840 al mismo tiempo, o Facebook Messenger o Google Chat, pero solo uno 927 00:46:37,840 --> 00:46:38,624 al mismo tiempo. 928 00:46:38,624 --> 00:46:40,540 Eso sería bastante restrictivo, en especial cuando 929 00:46:40,540 --> 00:46:42,260 tenemos todo este poder computacional. 930 00:46:42,260 --> 00:46:45,210 En el caso de que nuestra propia computadora, 931 00:46:45,210 --> 00:46:47,350 cada vez que envía una solicitud por Internet, 932 00:46:47,350 --> 00:46:51,940 elige un número aleatorio o pseudoaleatorio que identifica de manera única 933 00:46:51,940 --> 00:46:55,510 la pieza de software en nuestra computadora que espera la respuesta. 934 00:46:55,510 --> 00:46:57,010 Puede que este no sea el puerto 80. 935 00:46:57,010 --> 00:47:00,820 Este será un número más grande como 1025, 936 00:47:00,820 --> 00:47:04,690 o algún valor bastante grande, de hasta 65,000 937 00:47:04,690 --> 00:47:08,917 o 32,000, que identifican de manera única el puerto en mi computadora. 938 00:47:08,917 --> 00:47:11,500 Así es como nuestra computadora puede hacer varias cosas a la vez, 939 00:47:11,500 --> 00:47:15,010 una vez que se obtiene la respuesta, estos valores se desocupan, 940 00:47:15,010 --> 00:47:16,330 pero hay una pieza más. 941 00:47:16,330 --> 00:47:20,380 Los gatos pueden ser de muy alta calidad y los videos, sin duda, 942 00:47:20,380 --> 00:47:22,230 ocupan una gran cantidad de datos. 943 00:47:22,230 --> 00:47:24,550 Los videos de Netflix, y cualquier transmisión de video, ocupan 944 00:47:24,550 --> 00:47:26,350 una gran cantidad de información y 945 00:47:26,350 --> 00:47:28,960 sería bastante molesto para nuestros vecinos si alguna vez 946 00:47:28,960 --> 00:47:30,940 viéramos una película en Netflix, y tuviéramos 947 00:47:30,940 --> 00:47:33,970 que hacer, al ver la película, que un vecino 948 00:47:33,970 --> 00:47:38,140 también viera un video en su computadora. 949 00:47:38,140 --> 00:47:44,920 Lo que las computadoras también hacen gracias a IP 950 00:47:44,920 --> 00:47:49,780 y TCP es que, al usarlas en conjunto, ofrecen una función más. 951 00:47:49,780 --> 00:47:52,850 Si quiero descargar una imagen de un gato, 952 00:47:52,850 --> 00:47:55,510 y tenemos una bonita versión impresa aquí, estoy 953 00:47:55,510 --> 00:47:59,170 seguramente no conseguiré el gato completo en un sobre. 954 00:47:59,170 --> 00:48:01,795 Este gato, archivo de video o lo que sea 955 00:48:01,795 --> 00:48:06,310 se dividirá en algunas piezas diferentes. 956 00:48:06,310 --> 00:48:14,290 Y este mensaje podría cortarse o fragmentarse en cuatro partes. 957 00:48:14,290 --> 00:48:18,490 Cada una de esas cuatro piezas, podría ir en cada uno de estos sobres 958 00:48:18,490 --> 00:48:24,130 aquí, aquí, y luego aquí con el tercero y cuarto, 959 00:48:24,130 --> 00:48:26,650 y lo que es agradable acerca de TCPIP es que 960 00:48:26,650 --> 00:48:28,540 nos brinda al menos dos funciones. 961 00:48:28,540 --> 00:48:33,610 Uno, IP garantiza que cada computadora en Internet que hable este protocolo 962 00:48:33,610 --> 00:48:34,390 tenga una dirección. 963 00:48:34,390 --> 00:48:38,120 IP controla la obtención de los datos de algún destino. 964 00:48:38,120 --> 00:48:41,680 TCP, la otra mitad de esto, ofrece la garantía de 965 00:48:41,680 --> 00:48:45,370 entrega de alta probabilidad, y que los datos realmente llegan ahí. 966 00:48:45,370 --> 00:48:48,287 Porque como pudimos deducir, incluso de la animación de todos 967 00:48:48,287 --> 00:48:51,370 los cables transatlánticos y todas las interconexiones entre enrutadores, 968 00:48:51,370 --> 00:48:52,810 las cosas pueden salir mal, ¿cierto? 969 00:48:52,810 --> 00:48:54,650 Los enrutadores pueden sobrecargarse. 970 00:48:54,650 --> 00:48:57,430 Sus búferes pueden desbordarse, de tal manera que 971 00:48:57,430 --> 00:49:00,280 no puede manejar todo el tráfico que entra, y de hecho, 972 00:49:00,280 --> 00:49:03,190 si intentamos ver algún episodio de Game of Thrones en HBO 973 00:49:03,190 --> 00:49:06,490 y no podemos acceder en algún momento o [INAUDIBLE] alguna herramienta como esa. 974 00:49:06,490 --> 00:49:08,450 Si están sobrecargados, ¿qué significa eso? 975 00:49:08,450 --> 00:49:12,280 Significa que el servidor, o los enrutadores entre nosotros y el servidor, 976 00:49:12,280 --> 00:49:15,160 reciben tantos mugrosos sobres que no pueden mantener el ritmo 977 00:49:15,160 --> 00:49:19,120 y no pueden manejarlos todos a la vez, y a veces los paquetes, 978 00:49:19,120 --> 00:49:22,810 por así decirlo, desaparecen, tanto física como digitalmente, 979 00:49:22,810 --> 00:49:24,410 y esto significa que se pierde un paquete. 980 00:49:24,410 --> 00:49:27,820 Lo bueno de Internet es que cuando mi computadora 981 00:49:27,820 --> 00:49:31,240 habla con el enrutador más cercano de Harvard que tendría buenas antenas 982 00:49:31,240 --> 00:49:35,980 en una sala o en un punto de acceso, yo podría enviar un paquete aquí y aquí 983 00:49:35,980 --> 00:49:38,710 y devolveríamos todo esto si pudiéramos 984 00:49:38,710 --> 00:49:41,566 pero estos paquetes, como pueden ver, no necesariamente 985 00:49:41,566 --> 00:49:43,690 necesitan viajar por el mismo [? camino?] porque, ¿cuál 986 00:49:43,690 --> 00:49:45,190 es tu nombre?, en la segunda fila. 987 00:49:45,190 --> 00:49:45,490 PÚBLICO: Monsi. 988 00:49:45,490 --> 00:49:45,850 DAVID: Monsi. 989 00:49:45,850 --> 00:49:47,266 Monsi se está un poco ocupada. 990 00:49:47,266 --> 00:49:49,914 Entonces Kara, si pudieras encaminar a otra persona. 991 00:49:49,914 --> 00:49:52,330 Este es el efecto que ocurre en Internet. 992 00:49:52,330 --> 00:49:54,640 Si un enrutador, como Monsi, está un poco ocupada 993 00:49:54,640 --> 00:49:57,790 y su atención está en otra parte o tiene demasiados paquetes con los que lidiar, 994 00:49:57,790 --> 00:50:00,070 ella ni siquiera desaparecerán, pero tal vez 995 00:50:00,070 --> 00:50:02,650 su camino será redirigido al de ella, 996 00:50:02,650 --> 00:50:06,299 y eso es lo bueno de tener esta red encriptada en Internet. 997 00:50:06,299 --> 00:50:08,590 Desafortunadamente, uno de esos paquetes puede desaparecer 998 00:50:08,590 --> 00:50:10,173 y de hecho este es un ejemplo perfecto. 999 00:50:10,173 --> 00:50:12,900 Si quieren lo soltamos, lo soltamos. 1000 00:50:12,900 --> 00:50:14,760 Oh-oh, ¡un paquete cayó! 1001 00:50:14,760 --> 00:50:17,560 Lo que TCP hace por nosotros es lo siguiente. 1002 00:50:17,560 --> 00:50:22,592 Una vez que esos sobres alcanzan con suerte a una persona específica, 1003 00:50:22,592 --> 00:50:23,800 OK, son los afortunados ganadores. 1004 00:50:23,800 --> 00:50:26,200 Quien quiera, quiere ... ¿cuántos tenemos? 1005 00:50:26,200 --> 00:50:26,730 ¿Dos allí? 1006 00:50:26,730 --> 00:50:28,300 ¿A dónde fue el tercero? 1007 00:50:28,300 --> 00:50:28,980 Está bien. 1008 00:50:28,980 --> 00:50:31,600 TCP puede manejar múltiples paquetes que se pierden. 1009 00:50:31,600 --> 00:50:33,240 PÚBLICO: Está por allí. 1010 00:50:33,240 --> 00:50:36,490 DAVID: Ah, entonces los paquetes a veces tampoco toman el camino más corto 1011 00:50:36,490 --> 00:50:37,730 en el Internet. 1012 00:50:37,730 --> 00:50:38,821 ¿Qué pudo ocurrir? 1013 00:50:38,821 --> 00:50:40,570 Asumamos por el bien de la discusión 1014 00:50:40,570 --> 00:50:44,320 que esos paquetes llegaron a, por lo menos, alguien de nuestro público 1015 00:50:44,320 --> 00:50:44,980 aquí. 1016 00:50:44,980 --> 00:50:46,990 Él o ella, al recibirlos, también 1017 00:50:46,990 --> 00:50:50,620 vieron no solo la dirección de origen y la dirección de destino. 1018 00:50:50,620 --> 00:50:54,040 También habría alguna notación, como una línea de memo en el sobre que dice 1019 00:50:54,040 --> 00:50:58,870 1 de 4, 2 de 4, 3 de 4, 4 de 4, para que el destinatario pueda inferir 1020 00:50:58,870 --> 00:51:03,070 de esa pequeña pista si recibieron o no los 4 o solo, 1021 00:51:03,070 --> 00:51:06,070 como en este caso, un subconjunto de los mismos, y en ese caso, 1022 00:51:06,070 --> 00:51:09,440 suponiendo que la computadora habla TCP, solo diría, 1023 00:51:09,440 --> 00:51:13,280 hola David, reenvíame el paquete número 1 o el paquete número 3 1024 00:51:13,280 --> 00:51:16,480 o cualquiera que se haya perdido. 1025 00:51:16,480 --> 00:51:19,330 Todo esto sucede a velocidades vertiginosas. 1026 00:51:19,330 --> 00:51:22,780 10 milisegundos para hacer todo de ida y vuelta a New Haven, 1027 00:51:22,780 --> 00:51:25,537 incluso así de rápido en el campus, pero esos 1028 00:51:25,537 --> 00:51:27,370 son los principios básicos y los componentes básicos 1029 00:51:27,370 --> 00:51:29,845 que obtienen nuestros datos de un lugar a otro. 1030 00:51:29,845 --> 00:51:31,720 Algo interesante sucede 1031 00:51:31,720 --> 00:51:34,810 cuando profundizamos en este sobre y miramos los contenidos. 1032 00:51:34,810 --> 00:51:38,770 No solo el gato, como en este caso, sino el lenguaje HTML y algo más 1033 00:51:38,770 --> 00:51:40,990 llamado CSS, que usaremos en poco tiempo, pero pensé 1034 00:51:40,990 --> 00:51:43,739 podría ser divertido, especialmente en los talones de nuestra prueba forense, 1035 00:51:43,739 --> 00:51:47,320 echemos un vistazo a qué tipo de Hollywood presuntuoso 1036 00:51:47,320 --> 00:51:50,080 tiende a ser cuando nos presenta humanos con detalles técnicos 1037 00:51:50,080 --> 00:51:53,500 que ahora quizás tengamos un mejor ojo, además 1038 00:51:53,500 --> 00:51:56,514 de la antigua línea de "mejorar". 1039 00:51:56,514 --> 00:51:57,430 [REPRODUCCIÓN DE VIDEO] 1040 00:51:57,430 --> 00:52:00,337 - Es una dirección IPP4 de 32 bits. 1041 00:52:00,337 --> 00:52:01,170 - ¿IP como en internet? 1042 00:52:01,170 --> 00:52:02,160 - Red privada. 1043 00:52:02,160 --> 00:52:03,610 Es red privada. 1044 00:52:03,610 --> 00:52:09,993 1045 00:52:09,993 --> 00:52:11,466 [RISAS DE ESTUDIANTES] 1046 00:52:11,466 --> 00:52:16,376 1047 00:52:16,376 --> 00:52:19,140 - Ella es tan increíble. 1048 00:52:19,140 --> 00:52:20,960 - Oh, Charlie. 1049 00:52:20,960 --> 00:52:22,130 - Es una dirección espejo IPP de bits. 1050 00:52:22,130 --> 00:52:26,527 Podemos ver lo que hace en tiempo real. 1051 00:52:26,527 --> 00:52:27,110 [FINALIZA LA REPRODUCCIÓN] 1052 00:52:27,110 --> 00:52:28,970 DAVID: OK, lo mantendremos en esta pantalla 1053 00:52:28,970 --> 00:52:31,790 porque uno, o algunos de ustedes se rieron cuando vieron el IP falso 1054 00:52:31,790 --> 00:52:33,987 porque el número fue qué? 1055 00:52:33,987 --> 00:52:34,570 PÚBLICO: 275. 1056 00:52:34,570 --> 00:52:36,901 DAVID: 275, es demasiado alto y eso 1057 00:52:36,901 --> 00:52:39,650 podríamos perdonarlo, porque no queremos personas al azar que pausen 1058 00:52:39,650 --> 00:52:42,441 sus videos en Internet y luego intenten hackear u obtener acceso 1059 00:52:42,441 --> 00:52:45,470 a esa URL, aún es más divertido cuando se describe al hacker 1060 00:52:45,470 --> 00:52:47,769 que hace esto en la pantalla, como parte de su ataque. 1061 00:52:47,769 --> 00:52:50,310 Es como el código fuente en un lenguaje llamado Objective-C 1062 00:52:50,310 --> 00:52:52,820 para algún tipo de programa de dibujo, como se sugiere 1063 00:52:52,820 --> 00:52:56,332 mediante el uso de crayones en el código como una variable. 1064 00:52:56,332 --> 00:52:59,540 Hagamos una pausa, y cuando regresemos en cinco minutos, echaremos un vistazo 1065 00:52:59,540 --> 00:53:03,486 al mismo HTML. 1066 00:53:03,486 --> 00:53:08,170 Muy bien, regresamos, estamos a punto de aprender un nuevo lenguaje. 1067 00:53:08,170 --> 00:53:11,030 Aunque, esto podría parecer demasiado en una hora, 1068 00:53:11,030 --> 00:53:12,380 este es un lenguaje de marcado. 1069 00:53:12,380 --> 00:53:14,090 Este no es un lenguaje de programación, lo que 1070 00:53:14,090 --> 00:53:15,770 significa que no veremos bucles, 1071 00:53:15,770 --> 00:53:17,270 no veremos funciones, 1072 00:53:17,270 --> 00:53:20,240 no veremos condiciones, ni ningún tipo de lógica 1073 00:53:20,240 --> 00:53:22,910 que incorporamos en C, y en Scratch y, finalmente en 1074 00:53:22,910 --> 00:53:24,230 Python y JavaScript. 1075 00:53:24,230 --> 00:53:27,290 En cambio, veremos lo que llamamos etiquetas, piezas 1076 00:53:27,290 --> 00:53:30,950 de sintaxis similar al inglés, que solo le dicen al navegador qué hacer 1077 00:53:30,950 --> 00:53:32,510 y qué dejar de hacer. 1078 00:53:32,510 --> 00:53:35,870 Veremos las etiquetas que dicen: inicia haz que este texto se centre. 1079 00:53:35,870 --> 00:53:37,370 Detén haz que este texto se centre. 1080 00:53:37,370 --> 00:53:38,510 Inicia haz que el texto sea negrita. 1081 00:53:38,510 --> 00:53:39,830 Detén haz que este texto sea negrita. 1082 00:53:39,830 --> 00:53:41,750 Este tipo de instrucciones muy deliberadas 1083 00:53:41,750 --> 00:53:44,300 que expresaremos al usar algo parecido a un código, 1084 00:53:44,300 --> 00:53:46,640 pero que no nos da control lógico. 1085 00:53:46,640 --> 00:53:49,430 Como tal, existe un lenguaje bastante pequeño frente a nosotros 1086 00:53:49,430 --> 00:53:52,670 y mucho de lo que haremos cuando aprendamos HTML es solo 1087 00:53:52,670 --> 00:53:55,730 verificar una referencia en línea, o un ejemplo en línea, o mirar el código 1088 00:53:55,730 --> 00:53:59,350 fuente de páginas web reales, para descubrir cómo se hacen estas cosas 1089 00:53:59,350 --> 00:54:01,940 y hoy, nos enfocaremos en los fundamentos. 1090 00:54:01,940 --> 00:54:04,640 Tal vez, esta es una de las páginas web más simples que 1091 00:54:04,640 --> 00:54:06,680 podremos escribir en un lenguaje llamado HTML. 1092 00:54:06,680 --> 00:54:08,120 Es un lenguaje basado en texto. 1093 00:54:08,120 --> 00:54:10,400 Todas las etiquetas se asemejan a algunas palabras en inglés 1094 00:54:10,400 --> 00:54:13,430 y hay un patrón para el tipo de cosas que podremos escribir. 1095 00:54:13,430 --> 00:54:16,280 En primer lugar, si utilizamos la última versión de HTML, que 1096 00:54:16,280 --> 00:54:18,710 da la casualidad que es la versión 5, que ha estado aquí bastante tiempo, 1097 00:54:18,710 --> 00:54:22,800 iniciaremos cada página web con este conjuro misterioso en la parte superior 1098 00:54:22,800 --> 00:54:23,300 aquí. 1099 00:54:23,300 --> 00:54:27,485 [!DOCTYPE html] 1100 00:54:27,485 --> 00:54:28,610 o como se le llaman esas cosas. 1101 00:54:28,610 --> 00:54:31,485 corchetes cuadrados, es posible que no tuvieron muchas ocasiones para escribirlos 1102 00:54:31,485 --> 00:54:33,490 en su teclado, una vez que inicien pronto lo harán. 1103 00:54:33,490 --> 00:54:36,380 Después de eso, inician un patrón. 1104 00:54:36,380 --> 00:54:41,630 Inicia con , recorremos el camino, y al fondo será lo opuesto 1105 00:54:41,630 --> 00:54:42,350 de esa etiqueta. 1106 00:54:42,350 --> 00:54:46,070 Esta es una etiqueta de inicio, esta es una etiqueta final, o esta es de apertura, 1107 00:54:46,070 --> 00:54:50,690 esta es una etiqueta de cierre, que difiere con esta diagonal que está 1108 00:54:50,690 --> 00:54:51,950 dentro de la etiqueta. 1109 00:54:51,950 --> 00:54:54,620 Esto dice, hola navegador, ahí viene una página web. 1110 00:54:54,620 --> 00:54:57,110 Esto dice, hola navegador, eso es todo para la página web. 1111 00:54:57,110 --> 00:54:59,810 De nuevo, este tipo de mentalidad de inicio y fin. 1112 00:54:59,810 --> 00:55:05,030 Mientras tanto, dentro de la página web, se denota por la etiqueta de HTML, 1113 00:55:05,030 --> 00:55:07,910 que existen dos partes, un titular y un cuerpo. 1114 00:55:07,910 --> 00:55:10,300 El titular de una página web tiende a contener muy poco. 1115 00:55:10,300 --> 00:55:12,530 En general, es la barra de título en la pestaña 1116 00:55:12,530 --> 00:55:14,540 que los humanos vemos al visitar un sitio web, 1117 00:55:14,540 --> 00:55:17,720 y el cuerpo que es como el 95% de los contenidos 1118 00:55:17,720 --> 00:55:20,570 de la página, la ventana gráfica o la región rectangular 1119 00:55:20,570 --> 00:55:22,160 que abarca el contenido. 1120 00:55:22,160 --> 00:55:23,330 ¿Cuál es ese elemento? 1121 00:55:23,330 --> 00:55:25,790 En el titular tenemos un título que 1122 00:55:25,790 --> 00:55:28,190 será "hola, título" solo porque sí y luego 1123 00:55:28,190 --> 00:55:30,380 en el cuerpo de la página web, esta página web, 1124 00:55:30,380 --> 00:55:32,550 será "hola, cuerpo", 1125 00:55:32,550 --> 00:55:33,080 eso es todo. 1126 00:55:33,080 --> 00:55:34,040 Eso es HTML. 1127 00:55:34,040 --> 00:55:36,600 Si guardamos este texto en un archivo, y lo abrimos en un navegador, 1128 00:55:36,600 --> 00:55:40,670 veremos una página web patética que dice hello title y hello body, 1129 00:55:40,670 --> 00:55:44,210 pero esa es una página web que usa las denominadas etiquetas de HTML. 1130 00:55:44,210 --> 00:55:46,077 Cualquier cosa dentro de esos corchetes cuadrados son etiquetas. 1131 00:55:46,077 --> 00:55:48,410 Puedo ver esto bastante claro incluso en mi Mac 1132 00:55:48,410 --> 00:55:50,090 y también pueden hacer esto en su PC. 1133 00:55:50,090 --> 00:55:52,730 Abrí TextEdit y lo configuré para que sea más sencillo que 1134 00:55:52,730 --> 00:55:55,410 el predeterminado, sé que hice una pequeña cosa por adelantado, 1135 00:55:55,410 --> 00:55:58,535 podríamos usar notepad en Windows o cualquier otro número de otros programas, 1136 00:55:58,535 --> 00:56:01,730 incluso Microsoft Word, si lo guardamos de la manera correcta, o Google Docs, 1137 00:56:01,730 --> 00:56:06,230 a continuación recrearé esto como , 1138 00:56:06,230 --> 00:56:08,335 , y solo para recordar las cosas que hay que hacer, 1139 00:56:08,335 --> 00:56:11,210 Tendré que continuar con el inicio y el final 1140 00:56:11,210 --> 00:56:13,460 pensar y luego profundizar. 1141 00:56:13,460 --> 00:56:17,750 Proseguiré con
y con aquí, 1142 00:56:17,750 --> 00:56:20,720 hago una sangría y por si acaso, una, dos, tres, cuatro sangrías, 1143 00:56:20,720 --> 00:56:23,300 siempre y cuando seamos consistentes, el navegador 1144 00:56:23,300 --> 00:56:25,760 estará perfectamente feliz, como nosotros. 1145 00:56:25,760 --> 00:56:35,390