Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> Unix

Ποιες είναι οι επιλογές υποδοχής στο UNIX;

Οι επιλογές υποδοχής στο UNIX είναι παράμετροι που ελέγχουν τη συμπεριφορά μιας υποδοχής. Σας επιτρέπουν να συντονίσετε διάφορες πτυχές της επικοινωνίας δικτύου, όπως το επίπεδο ελέγχου σφαλμάτων, τον τρόπο μεταφοράς των δεδομένων και τη συνολική απόδοση της εφαρμογής σας. Αυτές οι επιλογές έχουν οριστεί χρησιμοποιώντας το `setSockopt ()` call system και ανακτήθηκαν χρησιμοποιώντας `getSockOpt ()`.

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

* `sol_socket`: Αυτό το επίπεδο ισχύει για όλους τους τύπους υποδοχής. Οι επιλογές σε αυτό το επίπεδο επηρεάζουν τη γενική συμπεριφορά της υποδοχής. Παραδείγματα περιλαμβάνουν:

* `so_reuseaddr`: Επιτρέπει τη δέσμευση σε μια θύρα που βρίσκεται ήδη στην κατάσταση TIME_WAIT. Χρήσιμο για διακομιστές που πρέπει να επανεκκινήσουν γρήγορα.

* `so_reuseport`: Επιτρέπει σε πολλαπλές διαδικασίες να δεσμεύονται στην ίδια διεύθυνση και θύρα. Χρήσιμο για εξισορρόπηση φορτίου και ομαδοποίηση διακομιστών.

* `so_broadcast`: Επιτρέπει την αποστολή μηνυμάτων εκπομπής.

* `so_keepalive`: Επιτρέπει τους ανιχνευτές διατήρησης-alive για την ανίχνευση σπασμένων συνδέσεων.

* `so_linger`: Ελέγχει τον τρόπο συμπεριφοράς της υποδοχής όταν κλείσει. Επιτρέπει το χαριτωμένο κλείσιμο ή το άμεσο κλείσιμο.

* `so_sndbuf` και` so_rcvbuf`: Ρυθμίστε τα μεγέθη αποστολής και λήψη buffer, αντίστοιχα. Η προσαρμογή αυτών μπορεί να βελτιώσει την απόδοση.

* `so_error`: Ανακτά εκκρεμείς συνθήκες σφάλματος στην υποδοχή.

* `ipproto_ip`: Αυτό το επίπεδο ισχύει για τις υποδοχές IPv4. Οι επιλογές εδώ επηρεάζουν τον τρόπο με τον οποίο το στρώμα IP χειρίζεται τα πακέτα. Παραδείγματα περιλαμβάνουν:

* `ip_tos`: Ορίζει τον τύπο της υπηρεσίας (TOS) bits στην κεφαλίδα IP. Χρησιμοποιείται για τις εκτιμήσεις της ποιότητας των υπηρεσιών (QOS).

* `ip_ttl`: Ορίζει την τιμή που ζει (TTL), η οποία περιορίζει τη διάρκεια ζωής ενός πακέτου.

* `ipproto_ipv6`: Αυτό το επίπεδο είναι παρόμοιο με το `ipproto_ip` αλλά για τις υποδοχές IPv6. Πολλές επιλογές είναι ανάλογες με τους αντίστοιχους IPv4.

* `ipproto_tcp`: Αυτό το επίπεδο ισχύει για τις υποδοχές TCP. Επιλογές εδώ ελέγχουν τις συμπεριφορές ειδικών για TCP. Παραδείγματα περιλαμβάνουν:

* `tcp_nodelay`: Απενεργοποιεί τον αλγόριθμο Nagle, ο οποίος αποθηκεύει τα μικρά πακέτα πριν την αποστολή. Χρήσιμο για διαδραστικές εφαρμογές, αλλά μπορεί να μειώσει την αποτελεσματικότητα των μεταφορών χύδην.

* `ipproto_udp`: Αυτό το επίπεδο ισχύει για τις υποδοχές UDP. Οι επιλογές εδώ είναι σχετικά λίγες σε σύγκριση με το TCP.

Παράδειγμα (c):

Αυτό το παράδειγμα δείχνει πώς να ρυθμίσετε την επιλογή `so_reuseaddr` χρησιμοποιώντας το` setsockopt () `:

`` `c

#include

#include

#include

#include

#include

#include

#include

int main () {

int sockfd;

struct sockaddr_in serv_addr;

int opt =1; // για να ενεργοποιήσετε το SO_REUSEADDR

SOCKFD =υποδοχή (AF_INET, SOCK_STREAM, 0);

αν (sockfd <0) {

Perror ("Υποδοχή ανοίγματος σφάλματος");

έξοδος (1);

}

αν (setSockOpt (sockfd, sol_socket, so_reuseaddr, &opt, sizeof (opt)) <0) {

perror ("setsockopt απέτυχε")?

έξοδος (1);

}

// ... υπόλοιπο του κώδικα υποδοχής σας ...

Κλείσιμο (sockfd);

επιστροφή 0;

}

`` `

Αυτό το απόσπασμα κώδικα δημιουργεί μια υποδοχή TCP και ορίζει την επιλογή `so_reuseaddr`. Ο χειρισμός των σφαλμάτων περιλαμβάνεται για την εμφάνιση βέλτιστων πρακτικών. Θυμηθείτε να συμβουλευτείτε τις χειροκίνητες σελίδες του συστήματός σας (`Man 7 Socket ') για μια πλήρη λίστα διαθέσιμων επιλογών υποδοχής και τη χρήση τους. Η διαθεσιμότητα και η συμπεριφορά συγκεκριμένων επιλογών μπορεί να διαφέρουν ελαφρώς ανάλογα με το λειτουργικό σύστημα και την έκδοση του πυρήνα.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα