Curs 3 - Posta electronica si World Wide Web

Posta electronica

Posta electronica este o aplicatie in retea destinata livrarii de mesaje. In principal, mesajele sunt generate si destinate utilizatorilor umani; ocazional expeditorul sau destinatarul este un sistem automat.

Expeditorul si destinatarul sunt identificati prin adresa electronica, numita si casuta postala (mailbox address).

Scenariul de folosire a postei electronice este urmatorul:

  1. Expeditorul scrie si trimite mesajul, folosind un program numit generic mail user agent (MUA)
  2. MUA contacteaza un server numit generic mail transfer agent(MTA). Pe majoritatea sistemelor de tip Unix, MTA-ul ruleaza pe masina locala (deci pe fiecare sistem Unix).
  3. MTA-ul initial contacteaza eventual alt MTA, si mesajul se transmite din aproape in aproape pana la calculatorul pe care este stocata efectiv "casuta postala" a destinatarului
  4. aici este invocat un asa-numit local delivery agent (tot un MTA) care scrie efectiv in "casuta postala"
  5. Destinatarul isi consulta casuta postala folosind tot un program de tip MUA. Aceasta consultare se face fie direct, ca fisier (daca user agent-ul ruleaza pe aceeasi masina cu cea care stocheaza casuta postala), fie prin retea prin intermediul unui protocol de citire a postei electronice.

Structura mesajelor

Vezi RFC-822

Un mesaj este format dintr-un antet si un continut. Antetul cuprinde campuri de forma nume:valoare, aflate pe linii distincte. Antetul este separat de corpul mesajului printr-o linie goala. Campurile din antet ofera, intr-un format standard, informatii pentru transmiterea mesajelor.

Intreg mesajul trebuie sa fie text ASCII (prin urmare nu pot fi trimisi octeti care reprezinta coduri de control).

Antetul cuprinde mai multe campuri, din care cele mai importante sunt urmatoarele:

  1. Destinatarul mesajului:
  2. Sursa mesajului:
  3. Identificarea mesajului
  4. Stampilele de livrare: Pentru a identifica probleme legate de livrarea mesajului, fiecare MTA plaseaza un camp Received in fata mesajului (astfel incat campurile Received se gasesc intotdeauna in ordine inver cronologica). Acest camp contine identificarea agentului receptor, agentului expeditor, data, destinatarul solicitat, si alte informatii. In plus, MTA-ul final adauga un camp Return-path care contine adresa la care ar fi returnat mesajul in caz de probleme. Valoarea acestui camp este un rezumat al campurilor Received

Extensiile MIME

MIME vine de la Multipurpose Internet Mail Extension si este un standard pentru extinderea mesajelor electronice in modul urmator:

Mecanismele de baza:

Livrarea mesajelor in Internet

Vezi RFC-821

Pentru transferul mesajelor intre MTA-uri, precum si intre MUA-ul initial si primul MTA, se foloseste protocolul SMTP (Simple Mail Transfer Protocol). Acest protocol a fost creat pentru a putea functiona peste infrastructuri variate, nu neaparat conexiuni TCP/IP: de exemplu, prin linie telefonica obisnuita. Singurul lucru cerut este un canal bidirectional pe care sa se poata transmite caractere de 7 biti (aceasta din urma cerinta face ca mesajele RFC-822 sa fie restrictionate la texte ASCII).

Protocolul este de tip cerere-raspuns, unul din parteneri actionand ca si client si emitand cereri, celalalt actionand ca server. Cererile sunt cuvinte, case-insensitive, cate o cerere pe rand. Raspunsurile sunt tot de exact un rand, incep cu un cod numeric si continua cu un text explicativ. Codul este suficient pentru client pentru a determina rezultatul cererii; explicatia textuala va fi inclusa in eventuale mesaje de diagnostic.

Pentru controlul sesiunii exista urmatoarele comenzi:

Comunicatia propriu-zisa este o secventa de tranzactii, pentru cate un mesaj. Tranzactia consta din: o comanda MAIL, specificand originea mailului, una sau mai multe comenzi RCPT specificand destinatarii, o comanda DATA anuntand inceperea transmiterii corpului mesajului, si in final corpul mesajului terminat cu un punct singur pe o linie.

De notat urmatoarele:

In sistemele UNIX, MTA-urile cele mai folosite sunt: sendmail, qmail, postfix

Livrarea locala a mesajelor

MTA-ul de pe masina destinatie poate fi in general configurat sa faca anumite actiuni speciale. Configurarea respectiva poate fi facuta de catre administrator sau de catre utilizatorul destinatar. Aceste prelucrari locale pot consta in:

A se vedea comanda UNIX procmail.

Implicit, pe un sistem UNIX, mesajul se stocheaza in fisierul /var/spool/mail/username

Mesajele se stocheaza intr-un fisier astfel: fiecare mesaj este prefixat cu o linie de forma
From adresa
dupa care mesajele se aseaza unul dupa altul separate prin linii vide.

Consultarea mesajelor de la distanta

MUA-ul final poate rula pe masina ce stocheaza efectiv casuta postala, sau pe un alt calculator. In primul caz, MUA va citi direct fisierul asociat casutei postale (se va asigura blocarea fisierului pentru a nu permite modificarea simultana a fisierului de catre MUA si MTA). In al doilea caz, este necesar un sistem client-server in care MUA este client, si exista un server pe masina care stocheaza casuta postala.

Exista doua protocoale mai raspandite pentru citirea de la distanta a postei:

Ambele protocoale sunt autentificate, pentru a nu permite citirea postei altui utilizator (de remarcat ca la SMTP nu este necesar pentru ca un client SMTP trimite mesaje, nu solicita serverului obtinerea unui mesaj).

Considerente de securitate

La citirea postei prin retea, este necesara autentificarea pentru a nu permite citirea postei de catre persoane neautorizate. Secretul parolei si confidentialitatea mesajelor pot fi compromise de lipsa criptarii in cazul protocolului POP3.

Prin deturnarea adreselor IP este posibila interceptarea mesajelor (intrusul poate determina un client SMTP sa creada ca el e serverul caruia trebuie sa-i trimita niste mesaje).

Transmiterea postei prin SMTP sufera insa de doua deficiente majore:

  1. Nu e posibila autentificarea expeditorului unui mesaj. Este posibila examinarea antetelor Received adaugate de serverele SMTP prin care a trecut mesajul, in vederea incercarii de-a identifica autorul, insa acestea trebuie corelate cu fisierele jurnal de pe serverle SMTP pentru a avea sanse reale de identificare.
  2. Oricine poate trimite mesaje oricui, si in plus poate sa-si ascunda in anumite limite propria identitate. Unii abuzeaza de acest fapt pentru a trimite mesaje, de obicei publicitare, in ideea ca daca 1 din 1000000 dintre cei ce primesc mesajul (e destul de fraier ca sa) cumpara produsul, firma castiga bani cu o cheltuiala infima. Astfel de mesaje se numesc SPAM-uri, si in ultimii ani reprezinta o problema foarte mare: sunt utilizatori care primesc zilnic sute sau mii de SPAM-uri.

    Lupta impotriva SPAM-urilor se face pe urmatoarele cai:

    Din pacate, aceste metode (mai ales ultimele doua) impiedica mesajele indreptatite sa fie livrate.

World Wide Web

Serviciul WWW

Ideea WWW este de a avea o metoda unitara de a publica documente accesibile intregii comunitati a Internetului. Inainte de WWW, existau servere ftp publice - adica servere ftp avand configurat un utilizator, ftp, caruia nu i se cere parola (obiceiul este de-a da pe post de parola adresa de posta electronica a utilizatorului; dar "parola" nu este verificata).

Conceptele de baza ale WWW sunt:

De notat ca un browser web accepta, in general, URL-uri incomplete; de exemplu, www.cs.ubbcluj.ro in loc de URL-ul corect http://www.cs.ubbcluj.ro/ (de notat ca slash-ul este obligatoriu).

Protocolul de baza

In continuare este descris protocolul HTTP.

Clientul deschide conexiunea catre server (daca nu se specifica portul, clientul incearca pe rand porturile 80, 8000, 8080). Dupa deschiderea conexiunii, clientul da o comanda, text pe o singura linie, de forma: comanda nume protocol. Comanda este:

Partea nume din cerere este partea de dupa numele masinii (server), inclusiv slash-ul initial.

Dupa prima linie, clientul trimite (optional) linii (similare cu antetul unui mesaj e-mail) de forma nume:valoare. Cele mai importante sunt:

Dupa ultima linie de antet, clientul trimite o linie vida, urmata apoi, in cazul comenzii POST, de continutul de trimis. Acest continut poate fi binar (oarecare), si trebuie sa aiba exact content-length octeti.

Raspunsul serverului urmeaza, si este in acelasi stil: o linie ce descrie rezultatul (OK/eroare), linii antet, o linie vida, si apoi obiectul propriu-zis. Campul Content-type arata clientului cum sa afiseze obiectul.

Serverul

Clientul

Alte considerente legate de HTTP


Retele de calculatoare
19 Oct 2003
Radu-Lucian LUPSA