Ο ιστός διατηρείται ενωμένος μέσω ακριβών συμφωνιών. Ένα πεδίο Content-Length πρέπει να σημαίνει το ίδιο σε κάθε διαδρομή. Μια cache δεν πρέπει να επαναχρησιμοποιεί μια απάντηση που απαιτεί επικύρωση. Μια κακώς μορφοποιημένη ενότητα πεδίων HTTP/3 πρέπει να αποτύχει στο σωστό εύρος. Μια ασφαλής μέθοδος πρέπει να παραμένει ασφαλής αφού περάσει από έναν αντίστροφο διακομιστή μεσολάβησης.
Το Webship 1.3.1 βασίζεται σε έναν κανόνα: η ταχύτητα έχει σημασία μόνο όταν τα bytes διατηρούν το νόημά τους.
Αυτός είναι ο λόγος για τον οποίο περιγράφουμε το Webship ως τον πιο συμβατό με RFC διακομιστή ιστού γενικής χρήσης στον κόσμο. Αυτός είναι ένας ισχυρισμός μηχανικής με ορατό όριο, όχι ένας ισχυρισμός ότι υπάρχει κάθε προαιρετικό χαρακτηριστικό σε κάθε RFC. Ο παρακάτω χάρτης ονομάζει τα 52 RFC που επηρεάζουν την ενεργή συμπεριφορά διακομιστή του Webship ή τα ιδιόκτητα θεμέλια πρωτοκόλλου του. Τα τρέχοντα πρότυπα έρχονται πρώτα. Τα έγγραφα που αντικαθίστανται προσδιορίζονται ως γενεαλογία συμβατότητας. Οι πρόχειρες προδιαγραφές δεν επισημαίνονται εκ νέου ως RFC.
Η συμβατότητα είναι συμπεριφορά, όχι σήμα
Η Webship εφαρμόζει πρότυπα στις περιοχές όπου οι διακομιστές παραγωγής συχνά γίνονται ασαφείς:
- Η διαμόρφωση HTTP/1.1 απορρίπτει αντικρουόμενα μήκη, μη έγκυρους κωδικούς μεταφοράς, υπερμεγέθη αιτήματα στόχους, κακώς διαμορφωμένα κομμάτια και μορφές μεταφοράς αιτήματος-smuggling.
- Το HTTP/2 και το HTTP/3 απορρίπτουν απαγορευμένα πεδία σύνδεσης, επαληθεύουν τα ψευδο-πεδία, περιορίζουν τα συμπιεσμένα τμήματα πεδίων και διατηρούν τα σφάλματα ροής ξεχωριστά από τα σφάλματα σύνδεσης.
- Τα στατικά αρχεία διατηρούν τη σημασιολογία του HEAD, τους επικυρωτές, τη σειρά των προϋποθέσεων, τα εύρη bytes, τις ανακατευθύνσεις και τους τύπους περιεχομένου.
- Ο αντίστροφος διακομιστής μεσολάβησης διατηρεί το framing, την ακύρωση, τα trailers, τις αναβαθμίσεις, τις ασφαλείς επαναλήψεις και την προώθηση ταυτότητας, ενώ αφαιρεί πεδία hop-by-hop.
- Η προσωρινή μνήμη υπολογίζει κανόνες ηλικίας, φρεσκάδας, επαλήθευσης, Vary, ακύρωσης και χρήσης ληγμένου περιεχομένου αντί να αντιμετωπίζει την αποθήκευση ως συντόμευση κλειδιού-τιμής.
- Το TLS, το QUIC, το ACME, τα πρώιμα δεδομένα και το WebTransport χρησιμοποιούν περιορισμένη κατάσταση και ρητή πολιτική αποτυχίας.
Οι ίδιες κανόνες ισχύουν στην ταχεία διαδρομή. Το Webship δεν ορίζει μία «σωστή» διαδρομή και μια διαφορετική διαδρομή αναφοράς.
Σημασιολογία HTTP, πλαισίωση, προσωρινή αποθήκευση και διαμεσολάβηση
- RFC 3986 — Ομοιόμορφος Αναγνωριστής Πόρου (URI): Γενική Σύνταξη. Το Webship κανονικοποιεί τις σχετικές αναφορές Location και Content-Location, συμπεριλαμβανομένων των τμημάτων με τελείες, πριν τις αποφάσεις αχρήστευσης της προσωρινής μνήμης.
- RFC 6455 — Το Πρωτόκολλο WebSocket. Οι αναβαθμίσεις μέσω reverse-proxy επικυρώνουν το κλειδί WebSocket, την αποδεκτή τιμή, το υποπρωτόκολλο, τις επεκτάσεις και τη μετάβαση της σήραγγας.
- RFC 6585 — Πρόσθετοι Κωδικοί Κατάστασης HTTP. Πεδία αιτήματος υπερβολικού μεγέθους χρησιμοποιούν τον καθορισμένο κωδικό 431 όταν μια απάντηση HTTP εξακολουθεί να είναι δυνατή.
- RFC 6797 — HTTP Strict Transport Security. Το Strict-Transport-Security αποστέλλεται μόνο μέσω ασφαλούς μεταφοράς και ποτέ δεν διαρρέει από μια ουδέτερη προς τη μεταφορά καταχώρηση cache σε καθαρό HTTP.
- RFC 7235 — HTTP/1.1 Authentication. Τα tokens του σχήματος αυθεντικοποίησης αναλύονται χωρίς ευαισθησία σε πεζά-κεφαλαία, συμπεριλαμβανομένης της προστατευμένης επιφάνειας ελέγχου MCP. Η γενική σημασιολογία HTTP ζει τώρα στο RFC 9110.
- RFC 7239 — Επέκταση HTTP Forwarded. Οι χειριστές μπορούν να επιλέξουν ένα πεδίο Forwarded βασισμένο σε πρότυπα, παλαιά πεδία X-Forwarded, και τα δύο ή κανένα· τα μη αξιόπιστα εισερχόμενα πεδία ταυτότητας αφαιρούνται πρώτα.
- RFC 7540 — HTTP/2. Αυτό διατηρείται ως γραμμή συμβατότητας με το HTTP/2· η ενεργή σύμβαση HTTP/2 είναι ο διάδοχός της, RFC 9113.
- RFC 7541 — HPACK: Συμπίεση κεφαλίδων για HTTP/2. Το στοίβα HTTP/2 της Webship περιορίζει την κατάσταση του αποκωδικοποιητή και τους πίνακες του κωδικοποιητή διατηρώντας ταυτόχρονα τη μορφή καλωδίου HPACK και την κωδικοποίηση Huffman.
- RFC 7838 — Εναλλακτικές Υπηρεσίες HTTP. Το Alt-Svc διαφημίζει ένα endpoint HTTP/3 χωρίς να αλλάζει την προέλευση που αντιπροσωπεύεται από το URL.
- RFC 8441 — Εκκίνηση των WebSockets με HTTP/2. Το Webship υποστηρίζει το θεμέλιο διαπραγμάτευσης extended-CONNECT downstream. Δεν προσποιείται ότι ένα upstream HTTP/1.1 υλοποιεί extended CONNECT του HTTP/2· οι μη υποστηριζόμενοι συνδυασμοί upstream αποτυγχάνουν ρητά.
- RFC 8470 — Χρήση Πρόωρων Δεδομένων στο HTTP. Οι πρόωρες αιτήσεις που η Webship δεν θα επεξεργαστεί λαμβάνουν 425 Too Early αντί να διεκπεραιώνονται με επικίνδυνες υποθέσεις επανάληψης.
- RFC 8941 — Δομημένες Τιμές Πεδίων για HTTP. Οι τιμές προτεραιότητας HTTP χρησιμοποιούν ανάλυση λεξικού δομημένων πεδίων· τα σφάλματα στα προαιρετικά πεδία αγνοούνται στο σύνολό τους.
- RFC 9110 — Ορολογία HTTP. Μέθοδοι, κωδικοί κατάστασης, πεδία, επικυρωτές, προϋποθέσεις, ανακατευθύνσεις, μεταδεδομένα περιεχομένου, HEAD, CONNECT, OPTIONS και ορολογία εύρους μοιράζονται ένα τρέχον συμβόλαιο μεταξύ των εκδόσεων του πρωτοκόλλου.
- RFC 9111 — HTTP Caching. Το Webship υλοποιεί διορθωμένη ηλικία, ρητή φρεσκάδα, Vary, only-if-cached, must-revalidate, proxy-revalidate, ασφαλή χρήση ληγμένων δεδομένων και ακύρωση αποτελεσματικών και σχετικών URIs.
- RFC 9112 — HTTP/1.1. Οι κανόνες για τη γραμμή αιτήματος, το πεδίο, το μήκος σώματος, την κωδικοποίηση μεταφοράς, το κομμάτι δεδομένων, το επίλογο, τη διατήρηση και το κλείσιμο επιβάλλονται πριν από την αποστολή στην εφαρμογή.
- RFC 9113 — HTTP/2. Η σειρά των ψευδο-πεδίων, η εξουσιοδότηση, τα απαγορευμένα πεδία σύνδεσης, οι περιορισμοί TE, ο κύκλος ζωής του ρεύματος, ο έλεγχος ροής, το GOAWAY και το πεδίο σφαλμάτων διαχειρίζονται από τη διαδρομή H2 που ανήκει στο Webship.
- RFC 9114 — HTTP/3. Η Webship κατέχει τα μονοπάτια request, control-stream, SETTINGS, critical-stream, ακύρωσης και stream-versus-connection σφαλμάτων που χρησιμοποιούνται από τον HTTP/3 server της.
- RFC 9204 — QPACK: Συμπίεση πεδίων για HTTP/3. Η χωρητικότητα του δυναμικού πίνακα περιορίζεται από το δηλωμένο όριο, οι ροές εντολών παραμένουν ανιχνεύσιμες σε μηδενική χωρητικότητα, και η άκυρη κατάσταση γίνεται το απαιτούμενο σφάλμα QPACK.
- RFC 9218 — Επεκτάσιμο Σχέδιο Ιεράρχησης για HTTP. Ο οδηγός επείγοντος και βαθμιαίας παράδοσης κατευθύνει τον προγραμματισμό του HTTP/3 ενώ οι άγνωστες παράμετροι προτεραιότητας παραμένουν επεκτάσιμες.
- RFC 9220 — Εκκίνηση WebSockets με HTTP/3. Το Webship υλοποιεί το θεμέλιο HTTP/3 extended-CONNECT SETTINGS που χρησιμοποιείται από τα σύγχρονα πρωτόκολλα σε τούνελ· αυτό δεν υποδηλώνει ότι γίνεται αποδοχή κάθε πιθανού πρωτοκόλλου CONNECT.
- RFC 9297 — HTTP Δεδομένα και το Πρωτόκολλο Κάψουλας. Οι συνεδρίες WebTransport χρησιμοποιούν περιορισμένη αποκωδικοποίηση κάψουλας και σύνδεση HTTP Datagram, με άγνωστες κάψουλες να αντιμετωπίζονται ως σημεία επέκτασης αντί για σφάλματα ανάλυσης.
- RFC 9421 — Υπογραφές Μηνυμάτων HTTP. Προαιρετική επαλήθευση προέλευσης ανταπόκρισης Ed25519 μπορεί να καλύψει την ταυτότητα έκδοσης και διαμόρφωσης του Webship χωρίς να αντικαθιστά το TLS ή την αυθεντικοποίηση εφαρμογής.
- RFC 10008 — Η μέθοδος HTTP QUERY. Το Webship θεωρεί το QUERY ασφαλές και αμετάβλητο, διατηρεί το σώμα του κατά τη διέλευση μέσω διαμεσολαβητή, περιλαμβάνει τα μεταδεδομένα σώματος και αναπαράστασης στην ταυτότητα της μνήμης cache, απαγορεύει την εικονική φρεσκάδα, υποστηρίζει προαιρετική και περιορισμένη συμπεριφορά, και ποτέ δεν ακυρώνει μια μνήμη cache απλώς επειδή χρησιμοποιήθηκε το QUERY.
Μέσο μεταφοράς QUIC και έλεγχος συμφόρησης
- RFC 3465 — Έλεγχος Συμφόρησης TCP με Κατάλληλη Καταμέτρηση Bytes. Η λογική καταμέτρησης κατάλληλων bytes αποτελεί μέρος της γραμμής ελέγχου συμφόρησης NewReno που χρησιμοποιείται στην υλοποίηση QUIC της Webship.
- RFC 4303 — IP Encapsulating Security Payload. Η Webship δεν υλοποιεί το IPsec ESP· ο αποδιπλασιαστής πακέτων QUIC της χρησιμοποιεί την τεχνική κατά της επαναλήψεως με κινητό παράθυρο του RFC μόνο ως γραμμή υλοποίησης.
- RFC 5681 — Έλεγχος συμφόρησης TCP. Οι κατώφλιοι απώλειας και επαναταξινόμησης κληρονομούν καθιερωμένους περιορισμούς ελέγχου συμφόρησης όπου το QUIC βασίζεται στην πρακτική του TCP.
- RFC 6298 — Υπολογισμός του Χρονομέτρου Επανεκπομπής του TCP. Οι υπολογισμοί εξομαλυσμένου χρόνου γύρου και μεταβλητότητας συμβάλλουν στο μοντέλο αποκατάστασης του QUIC.
- RFC 8312 — CUBIC για γρήγορα δίκτυα μεγάλης απόστασης. Αυτή είναι η προηγούμενη προδιαγραφή CUBIC που διατηρείται ως γενεαλογία αλγορίθμου· το RFC 9438 είναι το τρέχον πρότυπο.
- RFC 8899 — Ανακάλυψη MTU Επιπέδου Πακέτου για Μεταφορές Datagram. Το παραμετροποιήσιμο DPLPMTUD ανακαλύπτει το χρησιμοποιήσιμο μέγεθος datagram QUIC χωρίς να εξαρτάται από ευάλωτα σήματα επιπέδου δικτύου.
- RFC 8999 — Ανεξάρτητες από την έκδοση ιδιότητες του QUIC. Τα μεγάλα headers, τα IDs σύνδεσης, η διαπραγμάτευση έκδοσης και η αμετάβλητη ανάλυση παραμένουν ασφαλή πριν εκτελεστεί ένας αποκωδικοποιητής συγκεκριμένης έκδοσης.
- RFC 9000 — QUIC: Μεταγωγή και Ασφαλής Μεταφορά Βασισμένη σε UDP. Τα Αναγνωριστικά Σύνδεσης, τα stream, ο έλεγχος ροής, η μετανάστευση, η επικύρωση διευθύνσεων, το Retry, η επαναφορά χωρίς κατάσταση, οι παράμετροι μεταφοράς και η συμπεριφορά κλεισίματος σχηματίζουν τη βάση μεταφοράς HTTP/3 του Webship.
- RFC 9001 — Χρήση TLS για την Ασφάλεια του QUIC. Τα αρχικά μυστικά, η προστασία πακέτων, η προστασία κεφαλίδας, η ακεραιότητα επαναπροσπάθειας, οι φάσεις κλειδιών και η ενσωμάτωση TLS ακολουθούν τους κανόνες QUIC-TLS.
- RFC 9002 — Ανίχνευση Απωλειών και Έλεγχος Συμφόρησης QUIC. Οι χώροι αριθμών πακέτων, οι επιβεβαιώσεις, το PTO, η ανίχνευση απωλειών, η ανάκαμψη και η λογιστική συμφόρησης καθορίζουν την αξιοπιστία της μεταφοράς.
- RFC 9221 — Μια Αξιόπιστη Επέκταση Datagram για το QUIC. Οι διαπραγματευόμενες καρέ DATAGRAM του QUIC μεταφέρουν μη αξιόπιστη κίνηση WebTransport χωρίς να την μετατρέπουν σε περιεχόμενο ροής.
- RFC 9287 — Λίπανση του QUIC Bit. Η λίπανση του QUIC-bit μειώνει την ακαμψία ενώ διατηρεί την ασφάλεια της διαπραγμάτευσης.
- RFC 9308 — Εφαρμοσιμότητα του Πρωτοκόλλου Μεταφοράς QUIC. Οι λειτουργικές προεπιλογές, όπως ο περιορισμένος χρόνος αδράνειας και οι οδηγίες ανάπτυξης, ενημερώνουν την πολιτική μεταφοράς παραγωγής της Webship.
- RFC 9369 — Έκδοση QUIC 2. Οι τύποι πακέτων της έκδοσης 2, τα αρχικά κλειδιά, η ακεραιότητα επανελέγχου, οι ενημερώσεις κλειδιών και η διαπραγμάτευση έκδοσης εφαρμόζονται παράλληλα με το QUIC v1.
- RFC 9438 — CUBIC για Γρήγορα και Μεγάλης Απόστασης Δίκτυα. Το τρέχον πρότυπο CUBIC διέπει τον ελεγκτή συμφόρησης CUBIC του Webship· οι BBR και NewReno παραμένουν επιλέξιμοι όταν το φόρτο εργασίας το απαιτεί.
TLS, πιστοποιητικά και αυτόματη διαχείριση πιστοποιητικών
- RFC 3339 — Ημερομηνία και Ώρα στο Διαδίκτυο: Χρονικές Σφραγίδες. Τα παράθυρα ανανέωσης της ACME χρησιμοποιούν διαλειτουργικές χρονικές σφραγίδες Internet.
- RFC 4648 — Base16, Base32 και Base64 Κωδικοποιήσεις Δεδομένων. Οι τιμές ACME JOSE και το υλικό χειραψίας WebSocket χρησιμοποιούν τα απαιτούμενα αλφάβητα και τους κανόνες συμπλήρωσης Base64 και Base64url.
- RFC 5280 — Πιστοποιητικό Internet X.509 PKI και Προφίλ CRL. Η ανάλυση πιστοποιητικών και τα παραγόμενα πιστοποιητικά πρόκλησης χρησιμοποιούν σωστές μορφές subjectAltName για DNS και δυαδική IP.
- RFC 5869 — HMAC-based Extract-and-Expand Key Derivation Function. Η παραγόμενη από HKDF-SHA-256 και HKDF-SHA-384, συμπεριλαμβανομένων των ορίων εξόδου, υποστηρίζει τα κλειδιά TLS και QUIC.
- RFC 6066 — Επεκτάσεις TLS. Το SNI επιλέγει ταυτοτήτες DNS, ενώ οι κυριολεκτικές διευθύνσεις IP εξαιρούνται σωστά από τη συνήθη μορφή HostName.
- RFC 7301 — Διαπραγμάτευση Πρωτοκόλλου Εφαρμογής TLS. Το ALPN επιλέγει HTTP/1.1, HTTP/2, HTTP/3 και το απομονωμένο πρωτόκολλο πρόκλησης ACME στο όριο TLS.
- RFC 7638 — Δακτυλικό αποτύπωμα JSON Web Key. Τα δακτυλικά αποτυπώματα κλειδιών λογαριασμού ACME προκύπτουν στη κανονική μορφή JWK.
- RFC 7807 — Λεπτομέρειες Προβλημάτων για HTTP APIs. Το Webship χρησιμοποιεί το φορμάτ εγγράφου προβλήματος που απαιτείται από τους RFC 8555 ACME servers. Η νέα προδιαγραφή Λεπτομερειών Προβλημάτων το αντικαθιστά για νέες APIs γενικής χρήσης, αλλά η κανονιστική εξάρτηση του ACME παραμένει ρητή.
- RFC 8446 — TLS 1.3. Το Webship χρησιμοποιεί TLS 1.3 για δημόσιο TLS, συμπεριλαμβανομένων εισιτηρίων συνεδρίας, ενημερώσεων κλειδιών, ειδοποιήσεων, πολιτικής πρώιμων δεδομένων και παραγωγής κλειδιών QUIC.
- RFC 8555 — Αυτόματο Περιβάλλον Διαχείρισης Πιστοποιητικών. Οι ροές λογαριασμού, παραγγελίας, εξουσιοδότησης, προκλήσεων, ολοκλήρωσης, λήψης πιστοποιητικού και ανανέωσης αυτοματοποιούνται με χειρισμό περιορισμένων εισόδων.
- RFC 8737 — Πρόκληση ACME TLS-ALPN-01. Μια διαδρομή TLS μόνο για πρόκληση διαπραγματεύεται μόνο το acme-tls/1 και παρέχει την απαιτούμενη κρίσιμη επέκταση πιστοποιητικού acmeIdentifier.
- RFC 8738 — Επέκταση Επαλήθευσης Αναγνωριστικού IP ACME. Το Webship υποστηρίζει παραγγελίες πιστοποιητικών IPv4 και IPv6, δυαδικά IP SANs και αναστροφή διεύθυνσης SNI για επαλήθευση IP TLS-ALPN-01.
- RFC 9525 — Ταυτότητα Υπηρεσίας στο TLS. Τα ονόματα DNS και οι ταυτότητες IP αντιστοιχίζονται σύμφωνα με τους ισχύοντες κανόνες ταυτότητας υπηρεσίας, χωρίς συντομεύσεις με γενικό χαρακτήρα ή κοινό όνομα για τις διευθύνσεις IP.
- RFC 9773 — Επέκταση Πληροφοριών Ανανέωσης ACME. Τα παράθυρα ανανέωσης μπορούν να προέρχονται από την CA, επιτρέποντας στο Webship να κατανείμει με ασφάλεια τις ανανεώσεις αντί να χρησιμοποιεί ένα αυστηρό τοπικό πρόγραμμα.
WebTransport: ακριβές σχετικά με το τι είναι τυποποιημένο
Το WebTransport μέσω HTTP/3 δεν θεωρείται ως πεντηκοστό τρίτο RFC. Από την έκδοση Webship 1.3.1, η χαρτογράφηση του στα δεδομένα παραμένει στο draft-ietf-webtrans-http3-16. Το Webship υλοποιεί αυτό το προσχέδιο πάνω από το τυποποιημένο HTTP/3, επεκταμένο CONNECT, QUIC DATAGRAM, HTTP Datagram και τα στρώματα Capsule που αναφέρονται παραπάνω. Υλοποιεί επίσης την επεκτάση RESET_STREAM_AT που έχει συμφωνηθεί και απαιτείται για τη διατήρηση ενός αξιόπιστου προθέματος αναγνώρισης συνεδρίας όταν ένας ροή WebTransport επαναρυθμίζεται.
Αυτή η διάκριση έχει σημασία. Η συμβατότητα με τα πρότυπα δεν βελτιώνεται με το να ονομάσουμε ένα σχέδιο RFC. Βελτιώνεται με την ρητή παρακολούθηση του σχεδίου, την απομόνωσή του από τα κανονικά μονοπάτια HTTP, την διαπραγμάτευση κάθε επέκτασης, τον περιορισμό κάθε πόρου συνεδρίας και τη δοκιμή της συμπεριφοράς ακύρωσης και αποτυχίας.
Γιατί έχει σημασία αυτή η έκταση στην παραγωγή
Ένα σφάλμα στα πρότυπα σπάνια είναι απομονωμένο. Η λανθασμένη διαχείριση HSTS μπορεί να διασχίσει ένα όριο προσωρινής μνήμης. Μια κακώς μορφοποιημένη εντολή QPACK μπορεί να τερματίσει άσχετα αιτήματα. Μια μη ασφαλής υπόθεση για δεδομένα πρώιμου σταδίου μπορεί να επαναλάβει μια λειτουργία. Ένα κλειδί προσωρινής μνήμης QUERY που παραλείπει το σώμα του αιτήματος μπορεί να επιστρέψει το αποτέλεσμα ενός διαφορετικού ερωτήματος. Ένα διακομιστής μεσολάβησης που αφαιρεί επεκτάσεις ή χειρίζεται λανθασμένα την ακύρωση μπορεί να αλλάξει αθόρυβα ένα πρωτόκολλο εφαρμογής.
Η αρχιτεκτονική του Webship αντιμετωπίζει αυτά ως συνδεδεμένα ζητήματα. Τα όρια του parser, ο έλεγχος ασφαλείας, η προσωρινή αποθήκευση, η αντιστροφή αντιπροσωπείας, η κατάσταση μεταφοράς και η εργαλειοποίηση μοιράζονται ρητές συμφωνίες. Το αποτέλεσμα είναι ένας διακομιστής που μπορεί να μετακινηθεί μεταξύ HTTP/1.1, HTTP/2, HTTP/3, στατικής παράδοσης, αντιστροφής αντιπροσωπείας, ροής και WebTransport χωρίς να δίνει σε κάθε λειτουργία διαφορετικό ορισμό ορθότητας.
Επαλήθευσε τον ισχυρισμό
Μην παίρνετε ένα υπερθετικό στην εμπιστοσύνη. Διαβάστε την [τεκμηρίωση Webship 1.3.1](/docs/1.3.1), ελέγξτε τις ρυθμίσεις και τα όρια του πρωτοκόλλου και αναπαράγετε τη δημοσιευμένη συμπεριφορά. Έπειτα, [κατεβάστε το Webship](/downloads) και δοκιμάστε τις ακραίες περιπτώσεις που είναι σημαντικές για το σύστημά σας.