Κάθε μέρα ανοίγουμε έναν browser, γράφουμε μια διεύθυνση που περιλαμβάνει ένα όνομα χώρου (domain name), για παράδειγμα informix.gr και μέσα σε ένα με δύο δευτερόλεπτα εμφανίζεται η σελίδα. Φαίνεται απλό. Στην πραγματικότητα, όμως, σε αυτό το ελάχιστο χρονικό διάστημα συνεργάζονται δεκάδες τεχνολογίες: δίκτυα, πρωτόκολλα ασφαλείας, servers, βάσεις δεδομένων και ο ίδιος ο browser.
Πώς από την πληκτρολόγηση ενός ονόματος, απεικονίζεται μια ιστοσελίδα; Ας δούμε βήμα-βήμα τι πραγματικά γίνεται, με απλά λόγια.
1. Ο browser πρέπει πρώτα να βρει τον server
Εμείς σκεφτόμαστε σε ονόματα (domain names), όπως informix.gr. Οι υπολογιστές όμως επικοινωνούν μεταξύ τους μέσω IP διευθύνσεων (π.χ. 195.251.72.15). Άρα το πρώτο ερώτημα του υπολογιστή μας είναι: «Ποια IP αντιστοιχεί στο informix.gr;». Την απάντηση τη δίνει το DNS (Domain Name System), που λειτουργεί σαν τηλεφωνικός κατάλογος του Internet.

2. Το DNS δεν είναι ένας μόνο server
Η αναζήτηση συνήθως δεν πάει κατευθείαν σε έναν server. Πρώτα ελέγχεται αν η απάντηση είναι ήδη γνωστή από cache του browser, του λειτουργικού συστήματος, ακόμα και του router μας. Αν όχι, η ερώτηση περνάει σε έναν DNS resolver (συνήθως του παρόχου Internet), ο οποίος μπορεί να ακολουθήσει μια αλυσίδα: root server → server του .gr → server του informix.gr. Όλα αυτά συμβαίνουν συνήθως σε μερικά milliseconds και χάρη στο caching, οι επόμενες επισκέψεις είναι ακόμη πιο γρήγορες.

3. Δημιουργείται η σύνδεση (TCP handshake)
Μόλις μαθευτεί η IP, ο browser πρέπει να «μιλήσει» με τον server. Στις περισσότερες περιπτώσεις αυτό γίνεται μέσω TCP/IP (ή, σε νεότερες υλοποιήσεις, μέσω QUIC/HTTP3, που συνδυάζει σύνδεση και ασφάλεια σε λιγότερα βήματα). Στο κλασικό TCP, οι δύο πλευρές κάνουν έναν μικρό «χαιρετισμό» τριών βημάτων:

Με πολύ απλά λόγια:
- SYN (Synchronise): O πελάτης (πομπός) στέλνει ένα πακέτο με την σήμανση SYN στον server (δέκτης). Δηλ ρωτά “Είσαι εκεί;” Π.χ:
12:00:00.000000 IP 192.168.1.10.52808 > 10.0.0.1.80: Flags [S], seq 123456789, win 64240, length 0- Flags:
[S](SYN μόνο). seq 123456789: Διακριτός ακολουθιακός αριθμός, παραγόμενος απο τον πελάτη.ack: Κενός (not established yet).
- Flags:
- SYN-ACK (Synchronize-Acknowledge): Ο server (δέκτης). απαντά με ένα πακέτο που περιλαμβάνει τις σημάνσεις SYN και ACK. Ενημέρωνει τον πελάτη ότι αναγνώρισε το αίτημα επικοινωνίας και οιράζεται την δική του σήμανση. Δηλ απαντά “Ναι, είμαι. Εσύ με ακούς;”. Π.χ:
12:00:00.000050 IP 10.0.0.1.80 > 192.168.1.10.52808: Flags [S.], seq 87654321, ack 123456790, win 65535, length 0- Flags:
[S.](SYN και ACK ενεργά). seq 87654321: Διακριτός ακολουθιακός αριθμός, παραγόμενος απο τον server.ack 123456790: Ο αριθμός που στάλθηκε απο τον πελάτη +1.
- Flags:
- ACK: Ο πελάτης (πομπός) στέλνει τελικό σήμα αναγνώρισης στον server (δέκτης) και εκκινά η επικοινωνία. Δηλ απαντά “Ναι, ξεκινάμε”. Π.χ:
12:00:00.000080 IP 192.168.1.10.52808 > 10.0.0.1.80: Flags [.], seq 123456790, ack 87654322, win 64240, length 0- Flags:
[.](ACK μόνο). seq 123456790: Ο αριθμός απο τον πελάτη, που απαντήθηκε στο 2ο βήμα.ack 87654322: Ο αριθμός απο τον server +1
- Flags:
4. Το HTTPS εξασφαλίζει ότι μιλάμε με τον σωστό server
Το https:// σημαίνει ότι η επικοινωνία είναι κρυπτογραφημένη μέσω TLS. Ο server παρουσιάζει ένα ψηφιακό πιστοποιητικό και ο browser ελέγχει αν είναι έγκυρο, αν αφορά το συγκεκριμένο domain, αν έχει εκδοθεί από αναγνωρισμένη Αρχή Πιστοποίησης και αν δεν έχει λήξει. Με το σημερινό πρότυπο TLS 1.3 αυτό χρειάζεται μόλις έναν γύρο επικοινωνίας (1-RTT) που είναι πιο γρήγορο από παλιότερες εκδόσεις που χρειάζονταν δύο.

Ο server παρουσιάζει ένα ψηφιακό πιστοποιητικό. Ο browser ελέγχει, μεταξύ άλλων:
- αν το πιστοποιητικό είναι έγκυρο,
- αν αφορά το συγκεκριμένο domain,
- αν έχει εκδοθεί από αναγνωρισμένη Αρχή Πιστοποίησης,
- αν δεν έχει λήξει.
5. Ο browser ζητά την ιστοσελίδα (HTTP Request)
Τώρα ο browser στέλνει ένα αίτημα, το οποίο ουσιαστικά λέει: «Στείλε μου την αρχική σελίδα του informix.gr». Ο web server παραλαμβάνει το αίτημα και αναλαμβάνει να το εξυπηρετήσει.

Το Πρωτόκολλο Μεταφοράς Υπερκειμένου (HyperText Transfer Protocol, HTTP) είναι ένα πρωτόκολλο επικοινωνίας. Αποτελεί το κύριο πρωτόκολλο που χρησιμοποιείται στους φυλλομετρητές του Παγκοσμίου Ιστού για να μεταφέρει δεδομένα ανάμεσα σε έναν διακομιστή (server) και έναν πελάτη (client). Η μέθοδος GET ζητά από το διακομιστή να στείλει τη σελίδα. Η σελίδα κωδικοποιείται κατάλληλα σε μορφή MIME. Η πιο συνήθης μορφή της μεθόδου GET είναι η εξής: GET όνομα_αρχείου HTTP/1.1 όπου το όνομα_αρχείου προσδιορίζει το όνομα του πόρου που πρέπει να προσκομιστεί και το 1.1 είναι η έκδοση του πρωτοκόλλου που χρησιμοποιείται.
6. Ο server ίσως χρειαστεί να εκτελέσει πρόγραμμα
Μια απλή ιστοσελίδα μπορεί να είναι ήδη αποθηκευμένη ως HTML αρχείο. Μια σύγχρονη ιστοσελίδα, όμως, συχνά δημιουργείται δυναμικά: ο web server περνάει το αίτημα σε μια εφαρμογή, η οποία ρωτά μια βάση δεδομένων ποια άρθρα υπάρχουν, ποιο είναι το τελευταίο, ποιες εικόνες αντιστοιχούν στη σελίδα κ.ο.κ. Η απάντηση επιστρέφει πίσω στον browser.

7. Μία σελίδα HTML σημαίνει πολλά αρχεία, πολλές τεχνολογίες
Η αρχική απάντηση περιλαμβάνει HTML, αλλά αυτό από μόνο του δεν αρκεί: χρειάζονται επίσης CSS, JavaScript, εικόνες, γραμματοσειρές και δεδομένα από APIs. Παλαιότερα αυτό σήμαινε ξεχωριστή σύνδεση για κάθε αρχείο. Σήμερα, χάρη στα πρωτόκολλα HTTP/2 και HTTP/3, πολλά από αυτά τα αιτήματα «ταξιδεύουν» παράλληλα πάνω στην ίδια σύνδεση, κάτι που κάνει τη φόρτωση πολύ πιο γρήγορη. Αν κάποια αρχεία εξυπηρετούνται από ένα CDN (Content Delivery Network), έρχονται από τον πλησιέστερο γεωγραφικά κόμβο, όχι απαραίτητα από την Ελλάδα.

8. Ο browser απεικονίζει τη σελίδα (rendering)
Ο browser δεν είναι απλώς ένα πρόγραμμα που «κατεβάζει» ιστοσελίδες. Αναλύει το HTML και φτιάχνει μια εσωτερική αναπαράσταση της σελίδας, διαβάζει το CSS για χρώματα, γραμματοσειρές και θέσεις, εκτελεί το JavaScript και τέλος υπολογίζει πού πηγαίνει κάθε στοιχείο στην οθόνη. Αυτή η διαδικασία λέγεται rendering.

Όλα αυτά, σχεδόν ακαριαία
Συνοπτικά, η αλυσίδα είναι:
DNS → IP → TCP/IP → TLS/HTTPS → Web Server → Application → Database → HTML/CSS/JS → Browser Rendering
Χάρη στα δίκτυα, τα πρωτόκολλα και τους servers, όλη αυτή η αλυσίδα ολοκληρώνεται συνήθως σε λιγότερο από ένα δευτερόλεπτο, χωρίς εμείς να χρειάζεται να γνωρίζουμε τίποτα από όσα συμβαίνουν στο παρασκήνιο. Και ίσως αυτό είναι το πιο ενδιαφέρον σημείο: πίσω από μια ενέργεια τόσο απλή όσο το πάτημα του Enter, συνεργάζονται δεκαετίες μηχανικής σε δίκτυα, ασφάλεια, λειτουργικά συστήματα και προγραμματισμό.
