Note de la programatorul http în java


Note de la programatorul http în java
Cadrele moderne sunt bine abstracte de la detaliile de nivel scăzut ale implementării proprii. Pe de o parte, acest lucru este bun - ne simplifică viața, dar pe de altă parte nu ne dă un motiv inutil să învățăm lucrurile fundamentale. Acest lucru este valabil și pentru un număr mare de probleme și domenii ale tehnologiei informației, dar în această serie, ne vom concentra pe protocolul HTTP (de multe ori ascunse în spatele JSP, JSF, etc), și cum să-l folosească în Java.







Http - protocol de interacțiune între două programe, client și server, care pot fi lansate pe mașini complet diferite și foarte îndepărtate. Clientul se referă la o aplicație care utilizează un serviciu furnizat de o altă aplicație - Serverul, de obicei pe un computer la distanță. Aproape întotdeauna clientul începe conexiunile de ieșire, iar serverul așteaptă conexiunile primite (de la clienți), deși există excepții.

Primul lucru de înțeles este modul în care clientul și serverul interacționează. Cum se găsesc reciproc și cum să facă schimb de date. Pentru a face acest lucru, să ne amintim cursurile junior ale universității și să ne reînnoim cunoștințele despre protocoalele de rețea. Dacă abrevierile OSI și TCP / IP nu vă duc într-un punct mort, derulați cu îndrăzneală în continuare. Pentru cei care încearcă să nu-și împrăștie capul cu detalii, în mod corect, bazându-se pe disponibilitatea lor pe Internet, îmi amintesc:

Modelul OSI a fost propus de Organizația Internațională de Standarde ISO (Organizația Internațională pentru Standarde) în 1984. Toate funcțiile rețelei din model sunt împărțite în 7 nivele:

Distribuția protocoalelor pe niveluri ale modelului OSI


În același timp, nivelurile mai ridicate îndeplinesc sarcini mai complexe, globale, pentru care nivelurile inferioare sunt utilizate în scopuri proprii. și, de asemenea, să le gestioneze. Scopul nivelului inferior este de a oferi servicii la un nivel mai înalt. iar detaliile performanței acestor servicii nu sunt importante pentru nivelul superior. Nivelurile subordonate îndeplinesc funcții mai simple și mai specifice. În mod ideal, fiecare nivel interacționează numai cu cele care se află în apropiere (deasupra și dedesubt). Nivelul superior corespunde sarcinii aplicației care rulează în prezent pe aplicație, cea mai mică corespunde transmisiei directe a semnalelor pe canalul de comunicație.







Până în prezent, stack-ul principal al protocolului este TCP / IP. Această proiecție de protocoale a apărut înaintea OSI și a reușit să câștige popularitate.

Distribuirea protocoalelor pe nivele ale modelului TCP / IP

aplicat
«7 nivel»

de ex. TCP. UDP. SCTP. DCCP
(protocoalele de rutare precum OSPF care funcționează în partea de sus a IP-ului fac parte din stratul de rețea)

Pentru TCP / IP, acesta este IP (IP)
(Protocoale de suport, cum ar fi ICMP si IGMP rula pe partea de sus a PA, dar, de asemenea, fac parte din stratul de rețea;. Protocolul ARP este un protocol de filială independentă care rulează pe partea de sus a stratului fizic)

de ex. mediul fizic și principiile de codificare a informației, T1. E1


În ambele modele, http este la nivelul aplicației și utilizează protocoale de nivel inferior pentru implementarea proprie. Luați în considerare toate nivelurile - o sarcină cu mult peste sfera unui articol. Prin urmare, aici mă voi limita la o scurtă descriere a unuia dintre protocoalele stratului de transport, și anume TCP, care se bazează direct pe http.

Serverul la pornire informează sistemul de operare că ar dori să "ia" un anumit port (sau mai multe porturi). După aceea, toate pachetele care vin pe computer spre acest port, sistemul de operare se va transfera pe acest server. Se spune că serverul "ascultă" acest port.

Clientul, pornind de la conexiune, solicită de la sistemul său de operare un port neocupat pentru utilizare temporară și îl indică în pachetele trimise ca port sursă. Apoi, în acest port va primi pachete de răspuns de la server.

Ei bine, este timpul sa incercam sa folosim cunostintele si sa trecem de la cuvinte la jazz =)

Clasele cheie pentru interacțiunea programelor de implementare prin TCP sunt java.net.Socket și java.net.ServerSocket.

Mai jos sunt codurile celui mai simplu server TCP și client. Serverul transmite la consola tot ce vine de la client.


Codurile serverului și ale clienților sunt destul de simple și sunt puțin probabil să provoace probleme. Principalul lucru pe care este necesar pentru ei înșiși să înțeleagă că prize permit să creeze o conexiune transparentă între cele două aplicații la distanță, după care transferul de date nu între ele se realizează citire mai complexă / scriere flux comun.

În opinia mea, înțelegerea TCP este baza minimă pentru înțelegerea HTTP. În următoarea parte voi încerca să ofer o idee minimă direct despre protocolul Http și API standard în Java pentru implementarea sa.







Trimiteți-le prietenilor: