TCP/IP: τι είναι, στοίβα πρωτοκόλλων και μετάδοση δεδομένων

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-06 Χρόνος ανάγνωσης: 8 λεπ

Το TCP/IP είναι μια στοίβα πρωτοκόλλων που αποτελεί το θεμέλιο του διαδικτύου και των περισσότερων δικτύων υπολογιστών. Συνδυάζει το πρωτόκολλο TCP, υπεύθυνο για την αξιόπιστη παράδοση δεδομένων, και το IP, που εξασφαλίζει τη δρομολόγηση πακέτων μεταξύ κόμβων. Σύμφωνα με τα δεδομένα του IETF RFC 1180 (2024), η στοίβα TCP/IP επεξεργάζεται πάνω από το 80% της παγκόσμιας κίνησης δικτύου, συμπεριλαμβανομένων των κινητών και διαδικτυακών εφαρμογών. Η στοίβα πρωτοκόλλων καθορίζει πώς τα δεδομένα συσκευάζονται, διευθυνσιοδοτούνται και μεταδίδονται μεταξύ συσκευών στο δίκτυο.

Κύρια σημεία

  • TCP/IP είναι μια στοίβα πρωτοκόλλων που συνδυάζει το TCP (μεταφορά) και το IP (δρομολόγηση) για τη μετάδοση δεδομένων σε δίκτυα
  • Τέσσερα επίπεδα του μοντέλου: εφαρμογής, μεταφοράς, δικτύου και ζεύξης — το καθένα λύνει τη δική του εργασία
  • TCP εγγυάται την παράδοση, τη σειρά πακέτων και τον έλεγχο σφαλμάτων μέσω επιβεβαιώσεων και αναμεταδόσεων
  • IP εξασφαλίζει τη δρομολόγηση — επιλογή της διαδρομής του πακέτου από τον αποστολέα στον παραλήπτη μέσω ενδιάμεσων κόμβων
  • Η κατανόηση του TCP/IP είναι απαραίτητη για την ανάπτυξη εφαρμογών δικτύου, τον εντοπισμό σφαλμάτων συνδέσεων και τη βελτιστοποίηση απόδοσης

Τι είναι το TCP/IP;

TCP/IP (Transmission Control Protocol / Internet Protocol) είναι μια στοίβα πρωτοκόλλων που αναπτύχθηκε τη δεκαετία του 1970 για το ARPANET και έγινε το de facto πρότυπο για το παγκόσμιο δίκτυο διαδικτύου. Καθορίζει πώς τα δεδομένα χωρίζονται σε πακέτα, διευθυνσιοδοτούνται, μεταδίδονται και συναρμολογούνται στην πλευρά του παραλήπτη.

Η αρχιτεκτονική TCP/IP είναι χτισμένη σε πολυεπίπεδη αρχή, όπου κάθε επίπεδο αφαιρεί συγκεκριμένες λειτουργίες. Το επίπεδο εφαρμογής εργάζεται με δεδομένα εφαρμογής, το επίπεδο μεταφοράς παρέχει αξιοπιστία, το επίπεδο δικτύου ασχολείται με τη δρομολόγηση και το επίπεδο ζεύξης με τη μετάδοση μέσω φυσικού μέσου. Η αρθρωτότητα επιτρέπει την αντικατάσταση πρωτοκόλλων εντός ενός επιπέδου χωρίς αλλαγή των γειτονικών επιπέδων.

Στην κινητή ανάπτυξη, το TCP/IP χρησιμοποιείται από κάθε εφαρμογή που εκτελεί αιτήματα δικτύου. Οι βιβλιοθήκες URLSession, OkHttp, AFNetworking και Alamofire λειτουργούν πάνω από αυτή τη στοίβα, κρύβοντας από τον προγραμματιστή τις λεπτομέρειες συσκευασίας και δρομολόγησης πακέτων. Ωστόσο, η κατανόηση του TCP/IP είναι απαραίτητη για τη βελτιστοποίηση απόδοσης: η διαμόρφωση των παραμέτρων TCP μέσω του URLSessionConfiguration επιτρέπει τη διαχείριση χρονικών ορίων, τη διατήρηση HTTP Persistent Connections και τη ρύθμιση διακομιστή μεσολάβησης για εταιρικά περιβάλλοντα.

Η κατανόηση του TCP/IP είναι απαραίτητη για τη διάγνωση προβλημάτων δικτύου: εάν η εφαρμογή δεν μπορεί να συνδεθεί στον διακομιστή, το πρόβλημα μπορεί να βρίσκεται σε οποιοδήποτε επίπεδο της στοίβας — από το φυσικό κανάλι έως το πρωτόκολλο εφαρμογής. Εργαλεία όπως tcpdump, Wireshark και Charles Proxy επιτρέπουν την ανάλυση της κίνησης σε κάθε επίπεδο και τον εντοπισμό σημείων συμφόρησης. Για προγραμματιστές κινητών, το Xcode παρέχει Network Debug Dashboard και το Android Studio παρέχει Network Inspector για ανάλυση συνδέσεων TCP σε πραγματικό χρόνο.

Επίπεδα του μοντέλου TCP/IP

Το μοντέλο TCP/IP περιλαμβάνει τέσσερα επίπεδα, καθένα από τα οποία εκτελεί αυστηρά καθορισμένες λειτουργίες κατά τη μετάδοση δεδομένων. Η κατανόηση αυτής της ιεραρχίας είναι απαραίτητη για τη διάγνωση προβλημάτων δικτύου και τη βελτιστοποίηση εφαρμογών.

Επίπεδο εφαρμογής

Στο επίπεδο εφαρμογής λειτουργούν πρωτόκολλα με τα οποία οι εφαρμογές αλληλεπιδρούν άμεσα: HTTP, HTTPS, FTP, SMTP, DNS, WebSocket. Αυτό το επίπεδο διαμορφώνει τα δεδομένα σε μορφή κατανοητή από την εφαρμογή και τα μεταδίδει στο επίπεδο μεταφοράς. Οι προγραμματιστές κινητών εφαρμογών εργάζονται ακριβώς σε αυτό το επίπεδο μέσω βιβλιοθηκών δικτύου.

Επίπεδο μεταφοράς

Το επίπεδο μεταφοράς εξασφαλίζει τη μετάδοση δεδομένων μεταξύ εφαρμογών σε διαφορετικές συσκευές. Κύρια πρωτόκολλα: TCP (αξιόπιστη μετάδοση με επιβεβαίωση) και UDP (γρήγορη μετάδοση χωρίς εγγυήσεις). TCP προσθέτει στα δεδομένα τη θύρα αποστολέα και παραλήπτη, διαχειρίζεται τη σειρά πακέτων και ελέγχει τη συμφόρηση δικτύου.

Επίπεδο δικτύου και ζεύξης

Το επίπεδο δικτύου υλοποιείται από το πρωτόκολλο IP, το οποίο καθορίζει τη διευθυνσιοδότηση (IPv4, IPv6) και τη δρομολόγηση πακέτων. Κάθε πακέτο περιέχει τη διεύθυνση IP αποστολέα και παραλήπτη, και οι δρομολογητές στη διαδρομή μετάδοσης αποφασίζουν για τον επόμενο κόμβο βάσει πινάκων δρομολόγησης. Το IPv4 χρησιμοποιεί 32-bit διευθύνσεις (περίπου 4,3 δισεκατομμύρια) και το IPv6 χρησιμοποιεί 128-bit διευθύνσεις, λύνοντας το πρόβλημα εξάντλησης διευθύνσεων.

Το επίπεδο ζεύξης εργάζεται με το φυσικό μέσο μετάδοσης: Ethernet, Wi-Fi, Bluetooth. Αυτό το επίπεδο μετατρέπει τα πακέτα σε σήματα και αντίστροφα, διαχειρίζεται την πρόσβαση στο μέσο μετάδοσης μέσω διευθύνσεων MAC και ανιχνεύει σφάλματα φυσικού επιπέδου χρησιμοποιώντας αθροίσματα ελέγχου πλαισίου (FCS).

Στο επίπεδο ζεύξης λειτουργούν πρωτόκολλα όπως το ARP (Address Resolution Protocol), το οποίο μετατρέπει διευθύνσεις IP σε διευθύνσεις MAC συσκευών στο τοπικό δίκτυο, και το PPP (Point-to-Point Protocol), που χρησιμοποιείται σε συνδέσεις VPN και κινητά δίκτυα μετάδοσης δεδομένων.

ΕπίπεδοΠρωτόκολλαΛειτουργία
ΕφαρμογήςHTTP, HTTPS, DNS, FTP, WebSocketΔιαμόρφωση δεδομένων εφαρμογής
ΜεταφοράςTCP, UDPΜετάδοση μεταξύ εφαρμογών, έλεγχος σφαλμάτων
ΔικτύουIP, ICMP, ARPΔρομολόγηση και διευθυνσιοδότηση πακέτων
ΖεύξηςEthernet, Wi-Fi, PPPΜετάδοση μέσω φυσικού μέσου

Πώς λειτουργεί το πρωτόκολλο TCP

TCP (Transmission Control Protocol) είναι ένα από τα κύρια πρωτόκολλα του επιπέδου μεταφοράς. Παρέχει αξιόπιστη, ταξινομημένη και επαληθεύσιμη παράδοση ροής byte μεταξύ εφαρμογών. Πριν από τη μετάδοση δεδομένων, το TCP εγκαθιστά μια σύνδεση μέσω τριπλής χειραψίας.

Η τριπλή χειραψία (three-way handshake) ξεκινά με την αποστολή πακέτου SYN από τον πελάτη. Ο διακομιστής απαντά με πακέτο SYN-ACK, επιβεβαιώνοντας τη λήψη. Ο πελάτης ολοκληρώνει τη χειραψία με πακέτο ACK, μετά το οποίο ξεκινά η μετάδοση δεδομένων. Αυτή η διαδικασία εγγυάται ότι και οι δύο πλευρές είναι έτοιμες για ανταλλαγή και συγχρονισμένες ως προς τους αριθμούς σειράς.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('example.com', 80))
sock.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
response = sock.recv(4096)
print(response.decode())
sock.close()

Στο παράδειγμα, δημιουργείται μια υποδοχή TCP τύπου SOCK_STREAM, η οποία εκτελεί αυτόματα την τριπλή χειραψία κατά την κλήση connect. Η μέθοδος send στέλνει αίτημα HTTP, η recv λαμβάνει την απάντηση. Μετά την ολοκλήρωση, η close στέλνει πακέτο FIN για το σωστό κλείσιμο της σύνδεσης.

Διακομιστής TCP με επεξεργασία πελατών

Ας εξετάσουμε ένα παράδειγμα διακομιστή TCP στην Python που δέχεται πολλούς πελάτες μέσω νημάτων. Κάθε σύνδεση επεξεργάζεται σε ξεχωριστό νήμα, επιτρέποντας την ταυτόχρονη εξυπηρέτηση πολλών πελατών χωρίς μπλοκάρισμα του κύριου βρόχου.

python
import socket
import threading

def handle_client(conn, addr):
    print(f'Ο πελάτης συνδέθηκε: {addr}')
    with conn:
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data.upper())
    print(f'Ο πελάτης {addr} αποσυνδέθηκε')

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 9090))
server.listen(5)
print('Ο διακομιστής TCP ξεκίνησε στη θύρα 9090')

while True:
    conn, addr = server.accept()
    thread = threading.Thread(target=handle_client, args=(conn, addr))
    thread.start()

Ο διακομιστής TCP επεξεργάζεται κάθε σύνδεση σε ξεχωριστό νήμα, καλώντας την accept σε ατέρμονο βρόχο. Η συνάρτηση handle_client λαμβάνει δεδομένα, τα μετατρέπει σε κεφαλαία γράμματα και τα στέλνει πίσω μέσω sendall. Όταν ο βρόχος recv τελειώσει (όταν ο πελάτης κλείσει τη σύνδεση), το νήμα τερματίζεται και η υποδοχή κλείνει αυτόματα. Στις κινητές εφαρμογές, τέτοια εργασία χαμηλού επιπέδου με υποδοχές δεν χρησιμοποιείται άμεσα — οι κινητές βιβλιοθήκες HTTP διαχειρίζονται συνδέσεις μέσω ομάδων νημάτων και επαναχρησιμοποιούν αυτόματα συνδέσεις TCP.

Διαφορές μεταξύ TCP και UDP

Η επιλογή μεταξύ TCP και UDP είναι μία από τις βασικές αποφάσεις στο σχεδιασμό της αλληλεπίδρασης δικτύου. TCP εγγυάται την παράδοση, τη σειρά και την ακεραιότητα δεδομένων με κόστος πρόσθετης καθυστέρησης. UDP θυσιάζει την αξιοπιστία για ελάχιστη καθυστέρηση και μικρότερο φορτίο καναλιού.

ΧαρακτηριστικόTCPUDP
ΣύνδεσηΕγκαθιστά (handshake)Δεν εγκαθιστά
ΑξιοπιστίαΕγγυάται παράδοσηΔεν εγγυάται
Σειρά πακέτωνΤαξινομείΔεν ταξινομεί
ΤαχύτηταΧαμηλότερηΥψηλότερη
ΧρήσηWeb, email, αρχείαΡοή, παιχνίδια, DNS

Για κινητές εφαρμογές, η επιλογή πρωτοκόλλου εξαρτάται από το σενάριο: το REST-API και η λήψη δεδομένων απαιτούν TCP, ενώ οι βιντεοκλήσεις και τα διαδικτυακά παιχνίδια επωφελούνται από την ταχύτητα του UDP. Ορισμένες εφαρμογές συνδυάζουν και τα δύο πρωτόκολλα — TCP για έλεγχο και UDP για ροή πολυμέσων. Το σύγχρονο πρωτόκολλο QUIC, που λειτουργεί πάνω από UDP και χρησιμοποιείται στο HTTP/3, συνδυάζει τα πλεονεκτήματα και των δύο προσεγγίσεων και υποστηρίζεται ήδη σε iOS και Android μέσω URLSession αυτόματα.

Παραδείγματα κώδικα TCP/IP

Ας εξετάσουμε ένα παράδειγμα πελάτη TCP στην Python με διαχείριση σφαλμάτων και χρονικό όριο. Αυτή η προσέγγιση χρησιμοποιείται σε κινητές εφαρμογές για αξιόπιστη σύνδεση με τον διακομιστή.

python
import socket
import sys

def tcp_client(host, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(10)
        sock.connect((host, port))
        print(f'Συνδέθηκε στο {host}:{port}')
        return sock
    except socket.error as err:
        print(f'Σφάλμα σύνδεσης: {err}')
        sys.exit(1)

sock = tcp_client('api.example.com', 443)
sock.close()

Η συνάρτηση tcp_client λαμβάνει host και port, δημιουργεί υποδοχή με χρονικό όριο 10 δευτερολέπτων και προσπαθεί να συνδεθεί. Σε περίπτωση σφάλματος σύνδεσης — για παράδειγμα, μη διαθεσιμότητα διακομιστή ή αποκλεισμός από τείχος προστασίας — εκτοξεύεται εξαίρεση με περιγραφή του προβλήματος. Στις κινητές εφαρμογές, το χρονικό όριο σύνδεσης είναι κρίσιμο: πολύ σύντομο οδηγεί σε ψευδή σφάλματα σε αργά δίκτυα, πολύ μεγάλο οδηγεί σε πάγωμα της διεπαφής. Η συνιστώμενη τιμή για κινητά δίκτυα είναι 10–15 δευτερόλεπτα για timeoutIntervalForRequest και 30–60 δευτερόλεπτα για timeoutIntervalForResource στη διαμόρφωση URLSession.

Συχνές Ερωτήσεις

Ποια είναι η διαφορά μεταξύ TCP και IP;

IP είναι υπεύθυνο για τη δρομολόγηση — παράδοση του πακέτου από τον αποστολέα στον παραλήπτη μέσω ενδιάμεσων κόμβων. Το TCP παρέχει αξιόπιστη συναρμολόγηση δεδομένων: ελέγχει τη σειρά, επαληθεύει την ακεραιότητα και ζητά αναμετάδοση χαμένων πακέτων. Μαζί σχηματίζουν τη στοίβα TCP/IP.

Ποια θύρα χρησιμοποιεί το TCP/IP από προεπιλογή;

Το TCP/IP δεν χρησιμοποιεί σταθερή θύρα — η θύρα ορίζεται από την εφαρμογή. Τυπικές θύρες: 80 (HTTP), 443 (HTTPS), 22 (SSH), 25 (SMTP). Η θύρα 443 είναι η κύρια για ασφαλή διαδικτυακή κίνηση σε κινητές εφαρμογές.

Τι είναι μια σύνδεση TCP;

Μια σύνδεση TCP είναι ένα λογικό κανάλι μεταξύ δύο εφαρμογών, που εγκαθίσταται μέσω τριπλής χειραψίας (SYN, SYN-ACK, ACK). Η σύνδεση προσδιορίζεται από το ζεύγος (διεύθυνση IP, θύρα) αποστολέα και παραλήπτη. Η χειραψία εγγυάται ότι και οι δύο πλευρές είναι έτοιμες για ανταλλαγή δεδομένων.

Μπορεί το TCP/IP να χρησιμοποιηθεί σε κινητές εφαρμογές χωρίς διαδίκτυο;

Ναι, το TCP/IP λειτουργεί σε τοπικά δίκτυα (LAN) χωρίς πρόσβαση στο διαδίκτυο. Οι συσκευές συνδέονται μέσω Wi-Fi Direct, Bluetooth PAN ή Ethernet και ανταλλάσσουν δεδομένα μέσω τοπικών διευθύνσεων IP. Το τοπικό TCP/IP χρησιμοποιείται σε συσκευές IoT και εφαρμογές peer-to-peer.

Γιατί το TCP είναι πιο αργό από το UDP;

TCP είναι πιο αργό λόγω πρόσθετων μηχανισμών: τριπλή χειραψία πριν από τη μετάδοση, επιβεβαίωση κάθε πακέτου, αναμετάδοση χαμένων τμημάτων, έλεγχος συμφόρησης. Το UDP στέλνει δεδομένα χωρίς αυτούς τους ελέγχους, μειώνοντας την καθυστέρηση με κόστος πιθανών απωλειών.

Σύνοψη

  • TCP/IP — η θεμελιώδης στοίβα πρωτοκόλλων που εξασφαλίζει τη μετάδοση δεδομένων στο διαδίκτυο και σε τοπικά δίκτυα
  • Τέσσερα επίπεδα (εφαρμογής, μεταφοράς, δικτύου, ζεύξης) αφαιρούν διαφορετικές πτυχές μετάδοσης
  • TCP εγγυάται αξιόπιστη παράδοση με έλεγχο σφαλμάτων και επιβεβαιώσεις
  • IP είναι υπεύθυνο για τη δρομολόγηση πακέτων και τη διευθυνσιοδότηση κόμβων στο δίκτυο
  • Επιλογή TCP ή UDP εξαρτάται από τις απαιτήσεις: αξιοπιστία έναντι ταχύτητας
  • Κάθε κινητή εφαρμογή που εκτελεί αιτήματα δικτύου χρησιμοποιεί τη στοίβα TCP/IP

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης