Σάββατο 11 Νοεμβρίου 2017

Τι είναι το πρωτόκολλο μεταφοράς HTTP (Hyper Text Transfer Protocol) για αρχάριους...

Όλες οι επικοινωνίες ιστού χρησιμοποιούν το ίδιο πρωτόκολλο HTTP. Η τελευταία έκδοση του HTTP είναι 1.1 κυκλοφόρησε το 1999. Μια επικοινωνία HTTP αποτελείται από δύο φάσεις: ένα αίτημα (από πελάτη σε διακομιστή) και μια απάντηση (από διακομιστή σε πελάτη). Σε αμφότερες τις φάσεις αίτησης και απόκρισης, η μονάδα επικοινωνίας περιέχει δύο μέρη: το ένα είναι η κεφαλίδα και το άλλο είναι το τμήμα του σώματος


Η μορφή ενός αιτήματος HTTP εμφανίζεται παρακάτω:

Διαδικασία HTTP-request-method Διαδρομή-διαδρομή HTTP-έκδοση

"Πεδία επικεφαλίδας

Κενή γραμμή

Σώμα του αιτήματος"



   Σύμφωνα με το HTTP 1.1 υπάρχουν διάφορες μέθοδοι αιτήσεων, μεταξύ των οποίων μερικές σημαντικές μέθοδοι παρατίθενται παρακάτω:

Μέθοδος
Περιγραφή
GET
Ζητά δεδομένα από συγκεκριμένο πόρο
POST
Υποβολή δεδομένων προς επεξεργασία σε συγκεκριμένο πόρο
HEAD
Ιδιο με GET αλλά επιστρέφει μόνο HTTP κεφαλίδες και κανένα σώμα εγγράφου
PUT
Μεταφέρει μια αναπαράσταση του καθορισμένου URI
DELETE
Διαγράφει τον καθορισμένο πόρο
OPTIONS
Επιστρέφει τις μεθόδους HTTP που υποστηρίζει ο διακομιστής
CONNECT
Μετατρέπει τη σύνδεση αιτήματος σε σήραγγα TCP / IP

   Μεταξύ των μεθόδων αίτησης HTTP που αναφέρονται παραπάνω, οι μέθοδοι GET και POST είναι οι μέθοδοι που χρησιμοποιούνται πιο συχνά. Μετά την πρώτη γραμμή, το μήνυμα αίτησης περιέχει κεφαλίδα αιτήματος, η οποία περιέχει διαφορετικά πεδία γνωστά ως πεδία κεφαλίδας. Κάθε πεδίο κεφαλίδας είναι ένα ζεύγος κλειδιού-τιμής. Η μορφή ενός πεδίου επικεφαλίδας είναι το όνομα πεδίου κεφαλίδας που ακολουθείται από ένα παχύ έντερο και μια τιμή.

   Ορισμένα από τα συχνά χρησιμοποιούμενα πεδία κεφαλίδων είναι: Αποδοχή (που καθορίζει τους τύπους MIME που υποστηρίζονται από το πρόγραμμα περιήγησης), Host (ο οποίος προσδιορίζει το όνομα του κεντρικού υπολογιστή), το μήκος περιεχομένου (το οποίο προσδιορίζει τον αριθμό χαρακτήρων στο σώμα του μηνύματος αίτησης ).

Ακολουθεί ένα παράδειγμα που δείχνει ένα ζωντανό παράδειγμα μηνύματος αίτησης HTTP και μηνυμάτων απόκρισης HTTP:


Η γενική μορφή μιας απόκρισης HTTP φαίνεται παρακάτω:

"Γραμμή κατάστασης

Πεδία επικεφαλίδας

Κενή γραμμή

Σώμα της απάντησης"


   Η γραμμή κατάστασης περιέχει πληροφορίες όπως την έκδοση HTTP, τον κωδικό κατάστασης και το σύντομο μήνυμα που αντιστοιχεί στον κωδικό κατάστασης. Οι γνωστοί κωδικοί κατάστασης και τα αντίστοιχα μηνύματα κατάστασης είναι 200 (επιτυχία), 301 (ανακατεύθυνση), 404 (Σελίδα δεν βρέθηκε) και 500 (Εσωτερικό σφάλμα διακομιστή).

   Μετά την πρώτη γραμμή (γραμμή κατάστασης), ένα μήνυμα απόκρισης περιέχει ένα σύνολο πεδίων που είναι γνωστό ως κεφαλίδα απόκρισης. Συχνά χρησιμοποιούμενα πεδία στην κεφαλίδα απόκρισης είναι: Server (ο οποίος καθορίζει πληροφορίες για τον διακομιστή ιστού), Last-modified (που καθορίζει την ημερομηνία κατά την οποία τροποποιήθηκε για τελευταία φορά ο ζητούμενος πόρος), το μήκος περιεχομένου (το οποίο καθορίζει τη διάρκεια του περιεχομένου το σώμα του μηνύματος απόκρισης) και Τύπος περιεχομένου (ο οποίος προσδιορίζει τον τύπο MIME του περιεχομένου στο τμήμα του σώματος του μηνύματος απόκρισης).

Διαφορά μεταξύ του HTTP GET και του POST:

    Παρόλο που τα HTTP και GET και POST μπορούν να χρησιμοποιηθούν για την αποστολή αιτημάτων (δεδομένων) σε ένα διακομιστή ιστού, υπάρχουν κάποιες λεπτές αλλά σημαντικές διαφορές μεταξύ τους οι οποίες καθορίζονται παρακάτω:

    1.    Τα δεδομένα που αποστέλλονται μέσω του αιτήματος GET μπορούν να προβληθούν από το χρήστη στη γραμμή διευθύνσεων του προγράμματος περιήγησης, καθώς τα δεδομένα θα σταλούν ως συμβολοσειρά ερωτήσεων. Σε ένα αίτημα POST, τα δεδομένα που αποστέλλονται από τον χρήστη είναι κρυμμένα.

    2.    Το HTTP GET είναι λιγότερο ασφαλές (ανατρέξτε στην πρώτη διαφορά) σε σύγκριση με το HTTP POST.

    3.   Οι διακομιστές Web θα έχουν περιορισμένο μέγεθος προσωρινής μνήμης (συνήθως 512 byte) για τη λήψη της συμβολοσειράς ερωτήματος που αποστέλλεται από τον χρήστη χρησιμοποιώντας το HTTP GET. Εάν τα δεδομένα που αποστέλλονται από τον χρήστη υπερβαίνουν το μέγεθος του buffer, τα δεδομένα ενδέχεται να είναι περικομμένα ή ο διακομιστής ενδέχεται να καταρρεύσει ή ενδέχεται να οδηγήσει τον διακομιστή να εκτελέσει κάποιο κρυφό κώδικα ως μέρος των δεδομένων συμβολοσειράς ερωτήματος. Η τελευταία περίπτωση είναι το λεγόμενο πρόβλημα υπερχείλισης buffer, ένας κοινός τρόπος που χρησιμοποιούν οι χάκερ για να πάρουν τον έλεγχο των διακομιστών και να διαδώσουν τον ιό και τα σκουλήκια. Δεν υπάρχουν περιορισμοί σχετικά με το ποσό των δεδομένων που μπορούν να αποσταλούν χρησιμοποιώντας το HTTP POST.

ΠΗΓΗ : codingsec.net