Hemos mencionado dos órdenes NNTP que son clave en cuanto a cómo los artículos de noticias se impulsan o seleccionan entre servidores. Ahora, le echaremos un vistazo a todo esto en una sesión NNTP real para mostrarle cuán sencillo es el protocolo. Para ilustrar nuestros propósitos, usaremos un sencillo cliente telnet para conectar con un servidor de noticias basado en INN de la Cervecera Virtual llamado news.vbrew.com. El servidor está corriendo una configuración mínima para que los ejemplos sean cortos. Ya veremos cómo completar la configuración de este servidor en Capítulo 23. En nuestras pruebas pondremos especial cuidado en generar artículos sólo en el grupo de noticias es.pruebas para evitar molestar a nadie.
$ telnet news.vbrew.com nntp Trying 172.16.1.1... Connected to localhost. Escape character is '^]'. 200 news.vbrew.com InterNetNews server INN 1.7.2 08-Dec-1997 ready help 100 Legal commands authinfo help ihave check takethis list mode xmode quit head stat xbatch xpath xreplic For more information, contact "usenet" at this machine. . |
ihave <123456@gw.vk2ktj.ampr.org> 335 From: terry@gw.vk2ktj.ampr.org Subject: mensaje de prueba enviado con ihave Newsgroups: es.pruebas Distribution: mundo Path: gw.vk2ktj.ampr.org Date: 26 Abril 1999 Message-ID: <123456@gw.vk2ktj.ampr.org> Body: Esto es un mensaje de prueba enviado usando la orden NNTP IHAVE. . 235 |
mode reader 200 news.vbrew.com InterNetNews NNRP server INN 1.7.2 08-Dec-1997 ready/ (posting ok). help 100 Legal commands authinfo user Name|pass Password|generic <prog> <args> article [MessageID|Number] body [MessageID|Number] date group newsgroup head [MessageID|Number] help ihave last list [active|active.times|newsgroups|distributions|distrib.pats|/ overview.fmt|subscriptions] listgroup newsgroup mode reader newgroups yymmdd hhmmss ["GMT"] [<distributions>] newnews newsgroups yymmddhhmmss ["GMT"] [<distributions>] next post slave stat [MessageID|Number] xgtitle [group_pattern] xhdr header [range|MessageID] xover [range] xpat header range|MessageID pat [morepat...] xpath MessageID Report problems to <usenet@vlager.vbrew.com> . |
list newgroups 215 Descriptions in form "group description". control News server internal group junk News server internal group local.general General local stuff local.test Local test group . |
list active muestra cada grupos soportado y ofrece información sobre ellos. Los dos números de cada línea de la salida son las marcas de agua alta y baja—es decir, el artículo numerado más alto y el artículo numerado más bajo en cada grupo. El lector de noticias es capaz de hacerse una idea del número de artículos del grupo a partir de éstos. Hablaremos un poco más sobre estos números en un momento. El último campo de la salida muestra variables que controlan si se permite publicar en el grupo, si el grupo está moderado y si los artículos publicados tienen o no que guardarse. Estas variables se describen con detalle en Capítulo 23. Éste es el aspecto de un ejemplo:
list active 215 Newsgroups in form "group high low flags". control 0000000000 0000000001 y junk 0000000003 0000000001 y alt.test 0000000000 0000000001 y . |
post 340 Ok From: terry@richard.geek.org.au Subject: mensaje de prueba número 1 Newsgroups: es.pruebas Body: Esto es un mensaje de prueba, ignórelo libremente. . 240 Article posted |
newnews junk 990101 000000 230 New news follows <7g2o5r$aa$6@news.vbrew.com> <7g5bhm$8f$2@news.vbrew.com> <7g5bk5$8f$3@news.vbrew.com> . |
group es.pruebas 211 3 1 3 es.pruebas |
listgroup es.pruebas 211 Article list follows 1 2 3 . |
head 2 221 2 <7g5bhm$8f$2@news.vbrew.com> head Path: news.vbrew.com!not-for-mail From: terry@richard.geek.org.au Newsgroups: es.pruebas Subject: mensaje de prueba número 2 Date: 27 Apr 1999 21:51:50 GMT Organization: La Cervecera Virtual Lines: 2 Message-ID: <7g5bhm$8f$2@news.vbrew.com> NNTP-Posting-Host: localhost X-Server-Date: 27 Apr 1999 21:51:50 GMT Body: Xref: news.vbrew.com es.pruebas:2 . |
body 2 222 2 <7g5bhm$8f$2@news.vbrew.com> body Esto es otro mensaje de prueba, ignórelo también libremente. . |
Aunque normalmente es más eficiente transferir las cabeceras y los cuerpos de manera separada, hay ocasiones en las que puede resultarnos mejor descargar el artículo completo. Un buen ejemplo de esto es en aplicaciones a través de las que queramos transferir todos los artículos de un grupo sin ningún tipo de preselección, como cuando usamos un programa con caché NNTP tipo leafnode.[1]
Naturalmente, NNTP nos ofrece una forma de hacer esto, y de manera ya poco sorprendente, funciona de manera casi idéntica a como lo hace la orden head. La orden article también acepta un número de artículo o un ID de mensaje como variable, pero devuelve el artículo completo incluyendo su cabecera:
article 1 220 1 <7g2o5r$aa$6@news.vbrew.com> article Path: news.vbrew.com!not-for-mail From: terry@richard.geek.org.au Newsgroups: es.pruebas Subject: mensaje de prueba número 1 Date: 26 Apr 1999 22:08:59 GMT Organization: La Cerveceraa Virtual Lines: 2 Message-ID: <7g2o5r$aa$6@news.vbrew.com> NNTP-Posting-Host: localhost X-Server-Date: 26 Apr 1999 22:08:59 GMT Body: Xref: news.vbrew.com es.pruebas:1 Esto es un mensaje de prueba, ignórelo libremente. . |
Si intenta descargar un artículo desconocido el servidor le devolverá un mensaje con un código de respuestas apropiado y quizá un mensaje de texto legible:
article 4 423 Bad article number |
En esta sección hemos descrito cómo se usan las órdenes NNTP más importantes. Si está interesado en desarrollar software que implemente el protocolo NNTP, debería acudir a los documentos RFC relevantes; ellos le proporcionarán información al detalle que aquí no podemos incluir.
Veamos ahora a NNTP en acción mediante el servidor nntpd.
[1] | leafnode se encuentra disponible por FTP anónimo en wpxx02.toxi.uni-wuerzburg.de en el directorio /pub/. |