# SO - Lista 9 ###### tags: `SO` ## Zadanie 1 ![](https://i.imgur.com/IDZdiq5.png) ### Warstwy: - łącza - Usługi świadczone przez warstwę łącza zależą od określonego protokołu warstwy łącza, który jest używany w łączu. Na przykład niektóre protokoły warstwy łącza zapewniają niezawodne dostarczanie z węzła nadawczego przez jedno łącze do węzła odbiorczego. Należy zauważyć, że ta niezawodna usługa dostarczania różni się od niezawodnej usługi dostarczania protokołu TCP, która zapewnia niezawodne dostarczanie z jednego systemu końcowego do drugiego. Przykłady protokołów warstwy łącza obejmują Ethernet, WiFi i protokół DOCSIS sieci kablowej. - siecowa - Warstwa sieciowa Internetu obejmuje słynny protokół IP, który definiuje sposób, w jaki systemy końcowe i routery działają na tych polach. Warstwa sieciowa Internetu zawiera również protokoły routingu, które określają trasy, jakie pokonują datagramy między źródłami a miejscami docelowymi. - transportowa - Jej głównym zadaniem jest sprawna obsługa komunikacji pomiędzy urządzeniami. W warstwie tej dane dzielone są na mniejsze części, następnie opatrywane są dodatkowymi informacjami pozwalającymi zarówno przydzielić je do właściwej aplikacji na urządzeniu docelowym, jak i pozwalającymi złożyć je na urządzeniu docelowym w odpowiedniej kolejności. Kapsułkowanie - "Jak mamy pakiet to w danych znowu może być jakiś pakiet składający się z nagłówka i danych". ## Zadanie 2 ![](https://i.imgur.com/8upzvw7.png) TCP good control, UDP no control Komunikacja dupleksowa oznacza możliwość równoległego przesyłu danych w obu kierunkach (klient-serwer, serwer-klient) " Jezeli klient zakończy strumień wejściowy to wywołamy close, które skoordynuje zamknięcie połączenia sieciowego, czyli wyśle jakiś specjalny pakiet(dla nas niewidoczny - chyba że odpalimy jakieś specjalne oprogramowanie). Ta informacja ląduje w jądrze po stronie serwera. Jądro informuje proces który przetwarzał dane na deskryptorze, że nastąpiła terminacja strumienia wejściowego i w wyniku tego otrzymamy z reada EOF i zostanie zamknięte połączenie. Możemy teraz przejśc do następnego połączenia" ## Zadanie 3 ![](https://i.imgur.com/go367fq.png) ![](https://i.imgur.com/6nS0r6j.png) Klient używa portów ulotnych Ephemeral port - "Porty >1024, każdy proces może przypisać dany port gniazdu. Wybierane przez procesy użytkownika świadomie(rzadko) lub przydzielane automatycznie przez jądro(zazwyczaj)" Drugi argument listen oznacza liczbe połączeń, które jesteśmy wstanie zakolejkować ## Zadanie 4 ![](https://i.imgur.com/Fowlj7U.png) ![](https://i.imgur.com/VHl3NMh.png) ## Zadanie 5 ![](https://i.imgur.com/Qx1cSaJ.png) Short count - EOF / pełne bufory Read zwraca EINTR, jeśli przyjdzie sygnał, zanim cokolwiek dostaliśmy Write ```-||-``` zanim cokolwiek napisaliśmy