El interés

Con la vuelta a la rutina, la vuelta a las antiguas costumbres es inevitable. Al final, hay cosas que nunca cambian. No es la primera vez que me suceden cosas relacionadas con esto, pero bueno, el cambiar la forma de pensar realmente te hace ver las cosas de distintos puntos de vista.

Es normal tener que convivir con compañeros, más que normal, diría necesario. Entiendes que en este entorno cada uno busca una cosa y que mejor opción que intentar todos conseguir lo que queremos, en resumen, vamos intercambiándonos favores.

¿Y los amigos? No sé, ellos no son amigos, para ser amigos tiene que haber una confianza, una fe en esa persona, cosa que no existe, pues todos, listos de nosotros, pedimos los favores a las personas más capaces de ello. ¿Quieres que te lleven? preguntas a alguien con coche que vive cerca, no al que va en bici.

Por otro lado, la amistad existe fuera de este entorno, supuestamente con sinceridad, confianza, apoyo y un largo etcétera que me ahorro. El problema llega con la palabra supuestamente. Al final, uno poco a poco con el contacto de la gente se da cuenta que al final siempre hay intereses, aunque sean relacionados con la diversión u otra cosa.

En resumen, al final en todo existe un interés, y el llamar a una persona amigo o no solo depende de si de verdad confías en el/ella. ¿Al final a quién vas a llamar amigo? ¿A una persona en la que podrías confiar pero no ves apenas? ¿A tus compañeros que ves más de 11 horas al día aunque no confíes del todo en ellos?

Anuncios

Cómo NO ser un ingeniero

Llevo ya tres años estudiando ingeniería y unos meses trabajando gracias a mis conocimientos en ello y la verdad es que como todo en el mundo, es un juego de luces y sombras.

En primer lugar, mencionar un detalle de mi experiencia, yo soy ingeniero informático y como todo, según la persona y la carrera su experiencia puede diferir bastante. En resumen, esta es mi experiencia personal.

Durante el primer año, todo en general es muy bonito, salvo quizás alguna asignatura, toda ingeniería me temo que peca de ser como toda carrera de ciencias. Con esto me refiero a que el primer año es pura base de materias básicas como física, matemáticas y alguna quizás un poco más específica según la carrera. En mi caso, el primer año es por así decirlo, una base de matemáticas, física, programación y cultura de la informática.

El segundo año es donde realmente, la ingeniería clama su título de carrera difícil. Digamos que el primer curso ha sido como un nivel por debajo del de este curso. Supongo que el escalón de dificultad varía según la carrera, en el caso personal, el salto en ingeniería informática es sustancial.

Primero, se exige pasar de haber tenido que aprenderse un par de slides a leerse libros técnicos de 200-600 hojas (muchas veces explicados de manera bastante dudosa) y entenderlos y aprenderlos cual libros sagrados.

Segundo, otras asignaturas más ligadas a la física pasan de no solo entender conceptos complejos distantes de las clases, a hacerlo además contrarreloj, si normalmente podías tardar 20 minutos en hacer un ejercicio de física complejo, piensa que vas a tener que pensar, plantear, explicar y resolver en ese tiempo al menos dos problemas y bastante complejos. Perfecto y ten cuidado con explicarlo mal o fallar al calcularlo, no hay margen de error.

Tercero, las prácticas que más o menos salvabas entre horas, sin utilizar excesivo tiempo de tu supuesto tiempo libre (a.k.a. vida), de repente, se vuelven algo absorbente, requieren tiempo, precisión, dedicación, motivación… De todo necesitan. Aquí te dejan claro una cosa, el nivel de exigencia es superior, no quieren un documento que cualquier alumno de primero podría hacer, quieren prácticas de profesionales. Las normativas además se imponen cual leyes divinas que imponen con precisión qué debe haber y qué no debe haber en tus prácticas y cómo se te puede penalizar hasta por un título en la fuente incorrecta

Cuarto, esto es de verdad la base del resto de años de carrera, luego ya por fin puedes decir que te estás dedicando a lo que te gusta, suponiendo que sea así.

El segundo año, en mi caso, es conocido como la criba. Se pasan de 3-4 grupos a 2 (mañana y tarde). Es increíble como pierdes a la mitad de tus compañeros de manera tan drástica.

Siguiendo por el tercer año, la criba tiene su efecto y es que ya los grupos no se reducen hasta el último año. Este año da una base a los temas más intrincados de toda la carrera, da pie a lo que el último año pretende. Una vez acabado esto, podrías decir que eres un ingeniero salvo trámites. Las materias son incluso peores en dificultad o carga de trabajo, pero ya la adaptación (no solo la selección natural del curso previo, también la de los supervivientes a ser torturados) amortigua la dificultad.

El último año, al menos lo que conozco, es más relajado y básicamente es elegir lo que te gusta (más bien es descartar lo que no te gusta) y realizar asignaturas de ello. Este año si tiene alguna característica particular es el TFG. Si realmente te llevas bien con un profesor, negocia con el un TFG. Por mi conocimiento, rara vez aquí hay desastres, este año es de trabajo y si sigues el ritmo del año anterior, no hay más problema. Por los informe que dispongo por mis tareas administrativas, si llegas aquí hay más de un 90% de probabilidad de terminar.

Añadido a esto, lo más normal el último año es empezar las prácticas (en una empresa o en investigación, según preferencias y aptitudes), y es aquí donde de verdad te van a explicar la verdadera diferencia entre un ingeniero y otra persona con similares capacidades. Hablaré sobre el caso concreto mío, pues cada uno vive de manera muy distinta esto.

Hablando con mi tutor (una persona muy simpática por cierto, la verdad es que el tener una persona que te ayuda y te apoya es algo que quizás no valoras pues lo das por supuesto, pero sin él, todo hubiera sido muy distinto) y un doctorando (los compañeros, las personas que ayudas y que te van a ayudar sin dudarlo, el buen ambiente desde luego es clave), salió el tema de una chica de master que se fue a la semana de empezar a trabajar en el laboratorio pues se veía sobrepasada por todo.

La verdad es que en el fondo lo entiendo, esa sensación de incapacidad te puede llevar a un nivel de ansiedad increíble. Pero el tema del que hablábamos  era un poco distinto: decían ambos, que se habían dedicado a la docencia,  que es natural que mucha gente no sea capaz de sobrellevar esto. Principalmente, el problema es que la carrera no preparaba gente capaz de ser un ingeniero, y muchas veces salía gente que no puede llevar un proyecto a cabo. Según ellos, estas actitudes venían de actitudes como ‘a mí me ha funcionado una vez’, ‘parece que funciona’, ‘acabo y me voy’, ‘con que funcione en el caso común, vale, nadie lo va a probar más’; y todas estas resultan de las prácticas, que te dan un guión, unas pruebas que ha de cumplir y que es lo que se puntúa, pero la realidad es muy distinta, la realidad es que tienes que crear un sistema de cero, sin más que el hecho o la idea de satisfacer la necesidad de algo.

‘Haz un API REST para el acceso al sistema de login y distribución de tokens’, esto es lo real, no te van a dar un guión para ello o una página de ayuda. Tú tienes que buscar si ya está hecho o no. (Este caso expuesto podría ser algo normal para gente que trabaja en redes sociales, Twitter utiliza este tipo de sistemas)

Un ingeniero no es una persona que sabe lo común, lo básico, es una persona que sabe coger un proyecto, desarrollarlo, probarlo y documentarlo correctamente, la vida real no tiene prácticas ni guiones. Si quieres encontrar algo, tienes que saber dónde buscar y cómo hacerlo y ser consciente de qué debe y qué no debe hacer tu sistema. Según ellos, programar sabe mucha gente, pero en general el valor diferencial de un ingeniero lo da la capacidad de análisis, no de dar un programa solo, de dar la mejor solución y una justificación de porque es una gran solución.

Siguiendo la conversación, en general, la sensación de todos nosotros es que esta actitud estaba muy extendida actualmente, y se creía que esta ingeniería va de programar cuando realmente, eso se aprende en un año, no en cuatro. Esto es lo que está haciendo mal la universidad, está generando robots capaces de hacer prácticas, lo que mi amigo doctorando calificó como ‘carne de consultoría’.

¿Cuál es mi conclusión de todo esto? Ser un ingeniero es difícil, en general se cree que un ingeniero es saber hacer programas, puentes, barcos, centrales nucleares/eólicas, ordenadores, motores, etc. pero esto queda muy lejos de la realidad, ser ingeniero es ser crítico, coger una idea o un concepto y transformarlo en un proyecto en el cual, tomar la decisión correcta no es una opción, es una obligación. Y eso que muchas veces no hay decisiones correctas o incorrectas. En conclusión, el valor diferencial de la ingeniería viene del análisis, diseño de proyectos, el espíritu crítico para argumentar el porque esta es la solución al problema.

Mi sensación personal es que gran parte de estos años de carrera ha sido un entrenamiento para hacer prácticas cual robot pero que si no fuera por excepciones que se salen de estos guiones y normativas, que te enseñan lo que realmente es ‘divertido’ o ‘interesante’ de esto, no sería tan capaz como soy a día de hoy.

¿Cuál es la experiencia en otras ingenierías? ¿y fuera de las ingenierías y las ciencias experimentales?  ¿La universidad de verdad prepara para el mundo laboral o la investigación?

 

Dependencia, correlación y causalidad

En primer lugar, aquí van las definiciones de estos términos

  1. X e Y se denominan variables independientes si y solo si para cuales quiera a y b, F_{X,Y}(a,b) = F_X(a)F_Y(b). Dicho en otras palabras, si X e Y fueran sucesos, estos son independientes si y solo si P(X\cap Y) = P(X) P(Y)
  2. X e Y se denominan variables incorreladas si y solo si Cov(X, Y)=0. Recordando que la covarianza es E|X-EX||Y-EY|
  3. Se dice X causa de Y si el suceso X implica el suceso Y. Esto NO es una relación entre variables sino entre sucesos, fenómenos.

Leyendo comentarios sobre el reciente juego de ‘Pokemon Go’ es lo que me ha motivado el ver estos conceptos detalladamente.

Más concretamente, me hizo cierta gracia un comentario que leí que decía refiriéndose a un encuentro de este juego ‘Míralos todos mantenidos. Viven de los padres’. No es que personalmente fuera al encuentro (no me gustan estos tipos de cosas), ni que realmente vea problema en esta opinión, pero seguí leyendo y perlas variadas en las cuales se parece que se asociaba los videojuegos con el desempleo, la falta de estudios, la compra compulsiva o la falta de independencia económica. Nota: las buenas palabras de este párrafo no hacen honor a las tonterías que uno podía leer.

Pondré un ejemplo:

El argumento decía que ya que una gran parte de los conocidos del hablante son ‘ninis’ y juegan a videojuegos, esto le hacía ver que la causa de que haya tanto ‘nini’ son los videojuegos.

Esto es lo que se llama una falacia (y con todos sus letras). En primer lugar, se puede observar en una muestra (medición en un subconjunto de la población) que esto es verdad, es decir, que se presentan ambos factores juntos, sin embargo, también se puede ver que mucha gente que juega a videojuegos no es un ‘nini’. Es decir, si la causa (videojuegos) no siempre provoca ‘ninis’, entonces se concluye que no existe una relación causal, al menos no de manera absoluta, en otras palabras, puede ser un factor que influya pero no es la causa del suceso ni mucho menos.

En cuanto a una relación de dependencia, es difícil de determinar sin más detalles de los fenómenos. En general, sin introducirse en estadística un poco más avanzada (tests \chi^2 por ejemplo) no se puede afirmar una dependencia o independencia.

En el caso de la correlación quizás sí se podría observar ese comportamiento dependiendo del fenómeno, pero poco más, es decir, se puede afirmar que ambos fenómenos se dan juntos con frecuencia y dependiendo otros resultados (justo los que mencionaba arriba), se podría afirmar esta relación.

En general, aunque en ciencias a veces se abusa de esta falacia, si dos sucesos A y B o variables aleatorias X e Y son dependientes, es decir, observamos en las muestras una relación bastante  fuerte, no podemos afirmar causalidad. Ambos sucesos podrían ser causados por un mismo detonante.

Un ejemplo de esto podría ser una detonación. Se observan dos fenómenos: (A) la luz intensa del estallido, (B) un sonido fuerte y repentino incluyendo una vibración en todo medio cercano. En general, estas dos cosas se suelen dar juntas (simplificando un poco muchas cosas), pero no se puede afirmar que (A) sea la causa de (B) o que (B) sea la causa de (A) y de hecho, en este ejemplo, es más probable que una bomba sea la causa de ambos fenómenos.

La relación de causalidad es algo muy fuerte y complicado de demostrar en estudios empíricos, pues realmente requiere ver que es de verdad una causa y no solo un factor que ayuda o perjudica al suceso que se estudia, de ahí que realmente muchos estudios que a veces afirman que algo es una causa de un fenómeno, a los meses sean desmentidos dando estudios en los que la supuesta causa no origina el fenómeno.

¿Qué quería decir con todo esto? En general, la estadística es una herramienta muy potente de análisis de datos y creación de potentes modelos; sin embargo, no todo lo que leemos o afirmamos suele ser ‘estadística’ y no por un tamaño muestral pequeño, sino porque en general se tiende mucho a hacer muchos razonamientos erróneos o muy prematuros, normalmente la vida tiende a poner los datos influenciados con cientos de factores, no es tan sencillo encontrar la causa de las cosas.

El algoritmo de Shor y la seguridad de las redes de comunicaciones

Actualmente, más del 80% de la seguridad de Internet se rige según el protocolo TLS (Transport Layer Security). ¿Cómo funciona esencialmente este protocolo?

(Ya que las siguientes partes son muy técnicas, para algo más sencillo se puede saltar hasta la parte de Shor)

TLS o SSL, la seguridad de la red

Ssl_handshake_with_two_way_authentication_with_certificates.png

Propiedades de las claves públicas y privadas:

  • K^+ es la clave pública. No supone ningún problema de seguridad que todo el mundo la conozca, ya que la clave privada no se puede averiguar a través de la pública.
  • K^- es la clave privada. Con la clave privada se puede generar la clave pública, luego no se debe compartir.
  • Siendo m un mensaje cualquiera, K^+(m)=s y K^-(m)=s' con s \neq s' o al menos P(s \neq s') \rightarrow 0
  • K^+(K^-(m)) = m y K^-(K^+(m)) = m.
    • Esta propiedad permite que si encriptas algo con la clave pública de alguien (K^+(m)) solo la persona que dispone de la clave privada lo pueda leer. Esta propiedad se denomina confidencialidad.
    • Por otro lado, si el que dispone de la clave privada envía un mensaje, todos los lo pueden ver (todo el mundo conoce la clave pública), sin embargo, esto da una forma de garantizar que el mensaje ha sido enviado por el único que tiene la clave privada. Esta propiedad se llama autenticidad.
    • Hay una tercera propiedad de toda conexión segura y es la integridad, esta viene dada por la garantía de que el mensaje no ha sido alterado (en cualquier sentido). Esto se garantiza enviando un checksum (un código que básicamente garantiza que el mensaje es ese, normalmente suele ser algo como sumar cada byte y el checksum podría ser algo así como k, tal que k + \sum bytes = 0 mod 2048. Hay muchos mecanismos para esto. Para evitar que también el atacante cambie el checksum, se envía encriptado, de tal manera que cualquier mensaje que llega se desencripta, se calcula el checksum, se desencripta el checksum del mensaje y si no coinciden, el mensaje se descarta pues puede haber sido manipulado.

Resumen:

  1. Se generan dos numeros aleatorios (uno en el cliente y otro en el servidor, RNc y RNs respectivamente). Estos se intercambian
  2. El servidor envía su certificado (clave pública) y el cliente comprueba la validez de este certificado en la CA (Certification Authority), que es una fuente confiable que garantiza que el certificado pertenece a quién dice. Por así decirlo, un certificado es una clave pública (un número, K^+_s ) y información de referencia (nombre de la entidad, sitio web, validez, etc.). Esto último es opcional, solo la clave pública es necesaria.
  3. El cliente envía al servidor su certificado encriptado con su clave privada (K^-_c(K^+_c)) y el mismo sin encriptar por su clave privada (K^+_c). Esto es para garantizar que el cliente dispone de la clave pública y privada y no está robando la clave pública de otro usuario. Una vez esto, con todas las claves públicas compartidas, el cliente genera el Pre Master Secret (una clave) y se envía encriptada con la clave pública del servidor (K^+_s(PMS)).
  4. Por último, con el PMS se genera el Master Secret, una clave simétrica (K_M), tal que es la misma para el cliente y el servidor pero solo ellos dos la utilizaran en la comunicación. Se utilizan claves simétricas porque los algoritmos de clave pública y privada requieren mucho cálculo, mientras que los simétricos son rápidos e igual de seguros si la clave simétrica es suficientemente larga.

Es decir, en pocas palabras, es un complicado mecanismo para que el cliente y el servidor construyan una clave simétrica y que nadie la sepa.

¿En dónde entra el algoritmo de Shor?

El algoritmo de Shor permite a través de una clave pública sacar la clave privada (en el sistema RSA basado en números primos) pero en tiempo polinómico.

Siendo más concretos, el “no poder” sacar las claves privadas de las públicas en el esquema RSA se basa en que la clave pública es el producto de dos primos muy grandes. La clave privada es un número que se calcula a partir de cada uno de esos números primos, luego si conoces los primos, sabes la clave privada.

El factorizar un número en factores primos es un proceso de fuerza bruta, es decir, mucho más que ir probando no se puede hacer. Esto hace que el algoritmo tienda a ser exponencial (su coste se multiplica por un factor cuanto el número crece un poco, ejemplo 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048…) o al menos muy costoso llegado un cierto punto, pues los primos grandes son un terreno muy desconocido.

El algoritmo de Shor provee un mecanismo de factorizar un número en tiempo polinómico (en vez de multiplicar, se suma un factor, 2, 6, 10, 14, 18, 22, 26), haciendo viable el factorizar un numero grande. Sin embargo, el algoritmo de Shor asume una pequeña suposición, encontrar el periodo de una función en concreto es fácil. Es decir, encontrar el número r tal que f(x) = f(x+r). Esto es cierto para la función f(x) = a^x \; mod\; m y si dispones de un computador cuántico, pero no para un computador tradicional.

Esto día a día se va volviendo una realidad, ya que los computadores cuánticos poco a poco van naciendo y realmente para muchos expertos en seguridad esto supone un grave problema para la sociedad.

Más información

http://arxiv.org/abs/quant-ph/9508027

 

La igualdad para hincar la rodilla

En un momento de insomnio típico de la noche anterior me dio por pensar sobre un tema:

¿Se debe declarar siempre el chico?

La verdad es que en los tiempos actuales, la respuesta está clara, NO.

Todo el mundo se llena la boca con la palabra igualdad para combatir el sexismo, pero en el fondo me temo que la sociedad ha avanzado hasta un cierto punto y para ciertas cosas se espera que sea el hombre el que realice está acción. Esto viene derivado de un concepto más general, algo relativamente social, que es el concepto de caballero. Hay muchas rutinas que muchas personas esperan de los hombres por lo que llaman caballerosidad. Esto dista mucho de la educación, es incluso a veces un poco absurdo. Ejemplos de estas son:

  • El hombre invita a la mujer. Esto es una de las más absurdas, como si no tuviésemos dinero ambos como para invitarnos alternadamente o pagar cada uno lo suyo.
  • El hombre lleva flores. Me ahorro el comentario, dejad a las plantas en su hábitat. Hay mejores regalos que se pueden hacer y da igual quién haga el regalo a quién, es una forma de tener un detalle con alguien.
  • El hombre protege a la mujer. Bueno, esto es relativo, diría que ambos se protegen mutuamente, ¿no? Dependerá de cada uno… Más bien yo esto lo llevaría hacia la ayuda mutua.

En mi opinión la igualdad es una idea por ahora no realizada. Se entiende que el hombre y la mujer son iguales en derechos, sin embargo, la sociedad siempre los ve de manera distinta en muchos sentidos. En parte puede ser porque existen diferencias (físicas mismamente) o porque sencillamente no se ha alcanzado este desarrollo aún. ¿Será posible alcanzarlo?

Sinceramente, el miedo al rechazo es algo normal, a todos nos pasa. Tú cuando ves a una persona que te gusta, cuando la miras a los ojos, lo que esperas es que nunca te deje de mirar con ese brillo en los ojos, pase lo que pase y sea cual sea la correspondencia con esa persona.

¿Quién quiere perder a una persona así? No es necesario responder a esta pregunta.

En conclusión, ¿hasta qué punto ser un caballero es lo correcto? ¿Es este el futuro de la sociedad?

Regretful

En general, no soy muy fan de los melodramas, o de las historias tristes en sí. Puede ser que como a todo el mundo alguna vez de vez en cuando acepte la existencia de la tragedia dentro de la vida, pero creo que siempre hay que tener puesto un pie en el presente para ser consciente de todo lo que tienes a tu alrededor y otro pie en el futuro, para mostrar tu actitud ante lo que viene, tus ganas y tu motivación por lo que haces o lo que quieras hacer. Consecuentemente, no me gusta quedarme en el pasado, supongo que en parte, nadie quiere ni un profesor ni un investigador desfasado tampoco.

Sin embargo, lo de estos días es un poco distinto, y no lo definiría como quedarse en el pasado, más bien sería quedarse en ‘standby’. ¿Alguna vez no os ha pasado de sentiros como que no avanzáis? Es un sentimiento bastante frustrante, que no tengo muy claro como llenar. La cosa es que uno normalmente enfoca las cosas con un futuro en mente o con una pretensión, es decir, ‘Yo hago A para B’, pero hay veces que te da por pensar dos cosas:

  • ¿Es este el camino que debería haber tomado? El arrepentimiento de no haber elegido mejor antes, de no haber evadido a alguien así mucho antes y de haber ‘elegido’ a otra persona.
  • ¿Tengo la capacidad de seguir? En tal caso, ¿hacia donde estoy yendo? Los cambios son parte de la vida, pero el sobrellevarlos es parte de nuestra actividad humana.

Después de casi cuatro años ya, de haber sido engañado en tres ocasiones, de incontables discusiones y reconciliaciones, ya habría que darse cuenta de que era un error. Pero esto no es el problema, y ya me da igual lo que suceda alrededor de esta persona, el hecho de que yo aun no haya rehecho mi vida es lo que me molesta de todo y esto me lleva a dos conclusiones: o no quiero o no puedo… Y en este momento, es cuando uno se arrepiente de todo esto. Vivir en el pasado no es bueno, y en el arrepentimiento mucho menos.

A top-down approach to the networks: the application layer

How does internet (or in general, a computer network) work?  The answer to this question is pretty complicated. Just to have a vague idea of what is behind this, just to send a simple message from computer A to computer B, the computers will use about six protocols, one per communication layer, two auxiliary ones and the application protocol itself.

Instead of describing how these layers works, initially we will focus on identifying and describing the necessities of a communication of several computers.

For example, the web browsing protocol, HTTP (Hypertext Transfer Protocol, RFC 2616, RFC 7540).

When connecting to webpage (e.g. http://www.google.com), your browser just send this message ‘GET http://www.google.com\r\nHTTP/1.1’ to the direction of google.com (216.58.208.195, how to get this magic number is using the DNS (Domain Name System), it consists on just asking for ‘google.com’ to DNS Servers, first to the closest one, later to the far ones until someone answers this magical number).

To sum up, whenever you access http://www.google.com, this message is sent to 216.58.208.195:80/TCP ‘GET http://www.google.com […] ‘ and the server sent a response (to the sending direction) with the data of ‘www.google.com’

Here it is easy to find the first element of importance, a connection is described by 5 elements (only 3 appeared yet):

  • Source IP address: Your IP address
  • Destination IP address: The IP address of the destination connection, here 216.58.208.195
  • Transportation protocol: TCP or UDP (normally TCP, but I will explained detailed in other entry)
  • Source port: Your port
  • Destination port: The port of the destination connection, in this case, 80 (http default port)

Usually, the source data is not important, the IP is given by your ISP (Internet Service Provider) and usually the port is chosen by the Operating System (random and unused above 10000).

Basically, this is the only fact to know in the application layer. You need this five elements, some of them are given, and the other ones are essential to the communication.

How to choose the protocol?

  1. TCP: usually used in client-server model, so the client establish a connection to the server. For example, web browsing, mail, twitter, Facebook, etc.
  2. UDP: used in Peer-To-Peer (P2P) model, where clients send data without a server or using a server just to know the clients (IP,PORT). For example, Skype (the video is directly sent from A to B without being sent previously to a server), BitTorrent.

But what is a server? what a client?

  • Server: usually offers data. Its IP and PORT to establish connection are public data and necessary when connecting to the server.
  • Client: usually pulls data. Its IP and PORT are given by the ISP and the OS.

2000px-client-server-model-svg

Client-Server Model.

20081010_677622_image001_617700_57_0

Traditional (client-server) vs P2P. Resource server is also sometimes called logging server or registration server.

In client-server model, the roles are clear, but what happens in P2P? Each peer is both a server (offering data) and a client (pulling data), so each peer has to publish in a server the (IP, PORT) to give another peers the possibility of connecting to you. This is more or less how BitTorrent (eMule, ares…) works.

Of course, P2P is usually faster than C-S, but usually is more complex, more insecure and also in many networks is banned (blocked). About the 80% of traffic normally is C-S under TCP, because the simplicity, security and the possibility of having huge bandwidth capabilities anywhere (4G in mobile networks, FTH (Fiber to the home)).