Wykład 6 - Interfejs gniazd #
Zakres wykładu #
- Gniazda a system plików UNIXa: deskryptory gniazd/plików, read/write/close, obsługa błędów, API gniazd częscią interfejsu jądra.
- Modele prostej komunikacji klient-serwer w realizacji połączeniowej i datagramowej
- Tworzenie gniazd:
socket(), rodziny: protokołów i adresów, opcje gniazd i - Struktury adresowe gniazd: ogólna
sockaddr, domeny inetsockaddr_in, domeny Unixsockaddr_un. - Porządek sieciowy bajtów i funkcje do zmiany porządku bajtów:
htons(),htonl(),ntohs(),ntohl() - Funkcje do konwersji adresów:
inet_addr(),inet_ntoa(),inet_aton(),inet_ntop(),inet_pton() - Korzystanie z nazw stacji: struktura
hostenti funkcjegethostbyname(),gethostbyaddr(); strukturaaddrinfoi funkcje:getaddrinfo(),freeaddrinfo(),gai_strerror(),getnameinfo() - Adresowanie gniazda TCP: jawne (
bind()), niejawne (connect()) - Otwieranie połączenia: strona bierna (
listen(),accept), strona aktywna (connect) - Przesyłanie danych przez połączenie TCP:
read(),recv(),readv(),recvmsg,write(),send(),writev(),sendmsg, sygnałSIGPIPE. - Zamykanie połączenia: uporządkowane (
shutdown()) i nieuporządkowane (close()). Zwlekanie (linger). - Komunikacja UDP: adresowanie (nadawca, odbiorca), podstawowe funkcje komunikacji:
recvfrom(),sendto() - Połączone gniazda UDP: jak i dlaczego. Asynchroniczny błąd komunikacji UDP.
Uwaga #
Kolokwia wykładowe oczekują od studenta znajomości ogólnych koncepcji budowy i podstawowych własności interfejsu gniazd, a także zasad wykorzystania podstawowych funkcji interfejsu gniazd do realizacji komunikacji połączeniowej i bezpołączeniowej. Nie jest wymagane pamiętanie takich szczegółów interfejsu, jak np. argumentów funkcji.
Materiały #
- Slajdy: Inet_2.pdf
- Dokumentacja The GNU C library: rozdz. 16: Sockets, rozdz. 13.6 Fast Scatter-Gather I/O
- Literatura uzupełniająca: W.R. Stevens, Unix programowanie usług sieciowych, t. 1, wyd. 2: API: gniazda i XTI