Sieci Komputerowe, Wykład10, Inicjalizacja Winsock


DNS, NetBIOS, WINS.

W sieciach TCP/IP komputer jest rozpoznawany na podstawie numeru IP (w Ipv4 jest to 32 bitowa liczba). Oprócz numeru IP komputer ma przyporządkowaną nazwę. Istnieje kilka konwencji nazywania komputerów, najczęściej spotykane to nazwy hosta, nazwy DNS oraz nazwy NetBIOS. Istnieją mechanizmy tłumaczące nazwy na numery IP (i odwrotnie). W kolejnych punktach przedstawione będą sposoby tłumaczenia.

DNS (Domain Name System).

Nazwa hosta. W czasach gdy istniała sieć ARPAnet każdy komputer miał przydzieloną własną unikalną nazwę. Nazwy wszystkich komputerów były przechowywane w pliku Hosts.txt. Plik ten musiał być ręcznie aktualizowany i centralnie zarządzany oraz rozsyłany z centrum do lokalnych komputerów (zarządzaniem zajmował się Stanford Research Institute - Network Information Center).

DNS. W miarę rozwoju sieci powyższe rozwiązanie stało się nieakceptowalne. Powstał Domain Name System - system nazw domen, który jest rozproszonym systemem bazy danych przechowującym informacje o nazwach komputerów i ich numerach IP. System ten zawiera mechanizmy tłumaczenia nazw.

Baza danych DNS w Internecie rozłożona jest na tysiące serwerów, jest to baza rozproszona. Każdy serwer DNS jest odpowiedzialny za swój fragment systemu i udostępnia swoje dane innym serwerom. (Można spotkać określenie serwer nazw, należy jednak pamiętać, że serwery DNS nie są jedynymi serwerami nazw, o innych będzie mowa w dalszej części wykładu).

DNS zapewnia protokół, który pozwala klientom i serwerom komunikować się ze sobą.

Dostęp do serwera jest realizowany przez mechanizm określany czasem jako resolver (ta nazwa oznacza również plik konfiguracyjny np. /etc/resolv.conf). Resolver w Unix dostępny jest przez dwie funkcje biblioteczne - gethostbbyname oraz gethostbyaddr. Funkcje te były wykorzystywane w programach klient-serwer prezentowanych na poprzednich wykładach.

Przestrzeń nazw DNS jest hierarchiczna i może być przedstawiana jako drzewo z korzeniem bez nazwy. Od korzenia „odchodzą” gałęzie prowadzące do węzłów odpowiadających domenom górnego (najwyższego) poziomu (TLD - Top Level Domains). Od tych węzłów odchodzą gałęzie prowadzące do domen niższych poziomów.

Słowo domena określa część przestrzeni nazw DNS od wybranego węzła w dół hierarchii. Różne domeny zarządzane są przez różne instytucje/organizacje.

Ciałem nadzorującym od strony technicznej różne działania związane z uzyskiwaniem (rejestrowaniem) nazw domen, numerów Ip, numerów portów jest ICANN - Internet Corporation for Assigned Names and Numbers (http://www.icann.org/).

Oto fragment strony www.icann.org:

The Internet Corporation for Assigned Names and Numbers (ICANN) is a technical coordination body for the Internet. Created in October 1998 by a broad coalition of the Internet's business, technical, academic, and user communities, ICANN is assuming responsibility for a set of technical functions previously performed under U.S. government contract by IANA and other groups.

Specifically, ICANN coordinates the assignment of the following identifiers that must be globally unique for the Internet to function:

In addition, ICANN coordinates the stable operation of the Internet's root server system.

As a non-profit, private-sector corporation, ICANN is dedicated to preserving the operational stability of the Internet; to promoting competition; to achieving broad representation of global Internet communities; and to developing policy through private-sector, bottom-up, consensus-based means. ICANN welcomes the participation of any interested Internet user, business, or organization.

ICANN utrzymuje internetowy serwis informacyjny (InterNIC), poprzez który jest możliwa rejestracja domen (http://www.internic.net).

Domeny górnego poziomu (http://www.internic.net):

1) arpa specjalna, wykorzystywana do odwzorowania adresów w nazwy.

2) Domeny podstawowe (organizacyjne):

com organizacje komercyjne

edu instytucje edukacyjne

gov organizacje rządowe w USA

mil wojsko USA

int organizacje międzynarodowe

net sieci

org inne organizacje

Nowe domeny podstawowe (www.internic.net), nie wszystkie działają:

aero przemysł lotniczy (http://www.sita.com/aero/info/compinfo.asp)

biz biznes (już działa) (http://www.nic.biz/)

info dowolne zastosowanie (już działa) (http://www.nic.info/)

museum muzea (http://www.nic.museum/)

name użytkownicy indywidualni (na razie test. )

pro zawody (professions) (http://www.registrypro.com)

coop cooperatives (http://www.cooperative.org/)

3) Domeny krajowe (geograficzne), np.:

pl Polska

uk Zjednoczone Królestwo

at Austria

de Niemcy

us USA

Kiedyś domeny takie jak com, edu były zarezerwowane tylko dla USA, obecnie tak nie jest, np. wiele organizacji i firm spoza USA rejestruje się w domenie com.

Domeny drugiego poziomu - w wielu krajach domeny drugiego poziomu odzwierciedlają domeny organizacyjne pierwszego poziomu, ale ujmowane na swoim terytorium. Przykłady:

edu.pl, edu.com.

W niektórych krajach domeny drugiego poziomu określane są przez dwa znaki, nie trzy, np.:

co.uk (zamiast com.uk), ac.uk (instytucje akademickie).

W DNS (np. w plikach konfiguracyjnych) występują często tzw. absolutne nazwy domeny, inaczej zwane w pełni określonymi nazwami domeny (FQDN - Fully Qualified domain name). FQDN jest to nazwa domeny zakończona kropką (np. wsb-nlu.edu.pl. ). Jeśli nazwa nie jest zakończona kropką, to jest jakoś uzupełniana (przykład na podstawie analizy plików konfiguracyjnych).

Obszar, inaczej strefa (zone) jest częścią DNS, która jest oddzielnie administrowana. Domeny drugiego poziomu dzielone są na mniejsze strefy (zones). Z kolei strefy mogą być dalej dzielone. Występuje tu delegowanie zarządzania w dół struktury drzewa. Jednostka odpowiedzialna za zarządzanie daną strefą decyduje ile serwerów DNS będzie w strefie, rejestruje i udostępnia nazwy i numery IP nowych komputerów zainstalowanych w strefie.

Typy serwerów DNS:

W każdej strefie musi być uruchomiony podstawowy serwer DNS oraz pewna liczba serwerów drugoplanowych, zapewniających usługi w razie awarii serwera podstawowego. Serwer podstawowy pobiera dane z pliku, natomiast serwery drugoplanowe uzyskują dane od serwera podstawowego na drodze tzw. transferu strefy (zone transfer). Serwery drugoplanowe odpytują serwer podstawowy o dane w sposób regularny, zwykle co kilka godzin. Oprócz dwóch wymienionych rodzajów serwerów są jeszcze serwery podręczne (lokalne), których zadaniem jest zapamiętanie na pewien czas w pamięci podręcznej danych uzyskanych od innych serwerów tak, aby kolejne zapytania klientów mogły być obsłużone lokalnie.

Serwery DNS działają na portach 53 UDP oraz 53 TCP. Na ogół używany jest UDP. Wyjątkiem jest m.in. transmisja danych z serwera podstawowego do drugoplanowego (większe porcje danych) oraz komunikaty w sieciach WAN. Również kiedy w odpowiedzi od serwera (przez UDP) ustawiony jest bit TC (patrz niżej) ponawiane jest zapytanie z wykorzystaniem TCP.

W DNS są trzy typy poszukiwań:

Przeszukiwanie rekurencyjne - klient oczekuje od serwera żądanej informacji. W przypadku, gdy serwer nie przechowuje żądanej informacji, sam znajduje ją na drodze wymiany komunikatów z innymi serwerami.

Przeszukiwanie iteracyjne - występuje między lokalnym serwerem DNS a innymi serwerami DNS. Jeśli odpytywany serwer nie zna adresu szukanego IP, odsyła pytającego do innych serwerów (odpowiedzialnych za daną domenę).

Przeszukiwanie odwrotne - klient zna adres IP i chce uzyskać nazwę domenową (zapytanie wskazujące).

Komunikacja klienta z serwerem DNS.

Aplikacja, wykorzystująca nazwę domenową najpierw sprawdza, czy nie jest to nazwa hosta lokalnego, następnie sprawdza plik hosts - o ile istnieje - (np. /etc/hosts, C:\Windows\hosts). Jeśli tam nie znajdzie odpowiedniego wpisu, to wysyłane jest zapytanie do pierwszego serwera DNS, którego adres znajduje się w pliku konfiguracyjnym (np. /etc/resolv.conf, w Windows adresy serwerów DNS wpisujemy w ustawieniach TCP/IP).

Przykładowy plik /etc/resolv.conf

nameserver 149.156.78.3

nameserver 149.156.78.95

domain xyz.edu.pl

Podstawowe wpisy to - po słowie nameserver - numery IP kolejnych serwerów DNS, które mają być odpytywane w przypadku braku odpowiedzi od poprzedniego. Maksymalnie można wpisać trzy nazwy.

Linia ze słowem domain oznacza domyślną domenę (tzn. co ma być „doklejone” do nazwy w przypadku użycia nazw hosta, np. ftp gandalf).

Może się pojawić linia podobna do domain, ze słowem search, po którym jest maks. 6 nazw domen. Oznacza, że poszukiwania mają być prowadzone dla nazw z „doklejonymi” kolejno nazwami podanych domen.

Plik konfiguracyjny serwera /etc/named.boot (/etc/named.conf).

Omówienie na wykładzie:

Przykładowy plik /etc/named.boot

;

directory /var/named

cache . root.cache

primary xx.yy.edu.pl pl.edu.yy.xx

primary abc.yy.edu.pl pl.edu.yy.abc

primary 0.0.127.in-addr.arpa localhost.rev

primary 78.156.139.in-addr.arpa 139.156.78

;

; secondary servers

;

secondary pl 148.81.16.51 148.81.4.16

secondary edu.pl 148.81.16.51 148.81.4.16

Przykładowy plik pl.edu.yy.xx (pokazany na wykładzie).

Przykładowy plik 78.156.139.in-addr.arpa (pokazany na wykładzie).

Rekordy zasobów.

2001261106 ; Serial

86400 ; Refresh 24 hours

7200 ; Retry 2 hours

2592000 ; Expire 30 days

86400 ; Minimum 24 hours

)

lub:

@ SOA gandalf.xx.yy.edu.pl. root.gandalf.xx.yy.edu.pl. (

2001261104 ; Serial

86400 ; Refresh 24 hours

7200 ; Retry 2 hours

2592000 ; Expire 30 days

86400 ; Minimum 24 hours

)

lub:

xx.yy.edu.pl SOA gandalf.xx.yy.edu.pl. root.gandalf.xx.yy.edu.pl. (

2001261104 ; Serial

86400 ; Refresh 24 hours

7200 ; Retry 2 hours

2592000 ; Expire 30 days

86400 ; Minimum 24 hours

)

10 PTR virgo.xx.yy.edu.pl.

lambda A 139.156.78.29

HINFO "Sun IPX" "SunOS 4.1.4"

wsb-nlu.edu.pl MX sigma.wsb.nlu.edu.pl.

NS gandalf.xx.yy.edu.pl.

Serwery DNS używają pamięci podręcznej cache.

Omówienie przeszukiwania odwrotnego - na wykładzie (wykorzystanie domeny arpa.inaddr).

Format komunikatu DNS.

Zarówno do zapytania jak i odpowiedzi format jest jednakowy. Na początku jest 12-bajtowy nagłówek, po którym następują pola zapytań i odpowiedzi o różnej długości.

Bity:

0 15 16 31

Identyfikacja

- ustawiane przez klienta, zwracane przez serwer, pozwala zidentyfikować odpowiedź.

Znaczniki

(omówione niżej)

Liczba zapytań

Liczba odpowiedzi (rekordów zasobów)

Liczba autorytatywnych odpowiedzi

Liczba dodatkowych rekordów

Zapytania

Odpowiedzi

Autorytatywne

Informacje dodatkowe

Znaczniki (kolejno wg adresów):

Pole zapytania.

Tu klient umieszcza nazwę, o którą pyta. Nazwa składa się z jednej lub kilku etykiet, z których każda poprzedzona jest bajtem określającym rozmiar etykiety (w znakach). Maksymalny rozmiar jednej etykiety wynosi 63 znaki. Za nazwą w polu zapytania określa się typ zapytania (16 bitów) oraz klasa zapytania (16 bitów). Klasa zapytania ustawiana jest w Internecie na 1.

Przykład przesyłanej nazwy (bajty oddzielone są przecinkami):

5,s,i,g,m,a,7,w,s,b,-,n,l,u,3,e,d,u,2,p,l

Przykładowe typy zapytań:

Typ wartość liczbowa opis

A 1 adres IP

NS 2 serwer nazw

CNAME 5 nazwa kanoniczna

PTR 12 rekord wskazujący

HINFO 13 informacje o hoście

MX 15 rekord wymiany poczty

AXFR 252 zapytanie o transfer obszaru

ANY 255 zapytanie o wszystkie rekordy

Typy odpowiedzi są takie jak powyżej, z wyjątkiem dwóch ostatnich (występują tylko w zapytaniach).

Najczęściej używany typ to A - zapytanie o adres IP hosta, którego nazwa jest przesłana w zapytaniu.

Obszar komunikatu DNS zawierający odpowiedź.

Trzy ostatnie pola komunikatu DNS mają jednakową strukturę. Struktura ta określana jest mianem rekordu zasobów.

Rekord zasobów:

Programy host, nslookup.

NetBIOS.

NetBIOS (Network Basic Input/Output System) jest interfejsem programowania aplikacji (API) zaprojektowanym dla IBM w 1983 roku. Zawiera mechanizmy komunikacji sieciowej. W NetBIOS nie zdefiniowano jednak pełnego stosu protokołów. W 1985 opracowany został NetBIOS Extended User Interface NetBEUI, stanowiący pełny zestaw protokołów.

NetBIOS oferuje komunikację połączeniową i bezpołączeniową, umożliwia pisanie aplikacji klient-serwer.

NetBIOS odpowiada warstwom sesji (kontrola łączy komunikacyjnych pomiędzy hostami, otwarcie, zamknięcie) i transportu w modelu OSI.

Aby uzyskać pełną komunikację NetBIOS współpracuje z NetBEUI, ale może współpracować również z TCP/IP oraz IPX/SPX (Novell). Standardowo implementacje NetBEUI oraz TCP/IP firmy Microsoft oferują interfejs NetBIOS. Zawiera go również NWLink (IPX/SPX/NetBIOS w implementacji Microsoftu).

NetBEUI jest protokołem nietrasowalnym!

Aplikacje klient serwer uruchomione na komputerach rozdzielonych ruterami nie będą się komunikować.

Numery LANA

Kluczem do zrozumienia NetBIOSu są numery LANA (LAN Adapter numbers). Pierwotnie numery te były przydzielane kartom sieciowym.

Obecnie numery LANA określają niepowtarzalne połączenie numeru karty sieciowej oraz protokołu transportowego. Numery te mieszczą się w zakresie 0 .. 9.

Przykład:

W komputerze są dwie karty sieciowe i skonfigurowane zostały dwa protokoły transportowe z obsługą NetBIOSu: TCP/IP oraz NetBEUI. Odpowiadać temu będą cztery numery LANA:

0 - TCP/IP z kartą sieciową 1

1 - NetBEUI z kartą sieciową 1

2 - TCP/IP z kartą sieciową 2

3 - NetBEUI z kartą sieciową 2

Numer 0 ma specjalne znaczenie - oznacza „domyślny” numer LANA (w starszych aplikacjach tylko ten numer był używany).

Ze względu na to, że nie ma gwarancji przypisania konkretnego numeru LANA do protokołu (i karty) aplikacje klient-serwer pisane z użyciem NetBIOS powinny umieć nasłuchwać na wszystkich numerach LANA (serwer) i próbować łączyć się ze wszystkimi numerami na komputerze odległym (aplikacja klienta).

Nazwy NetBIOS.

Proces musi zarejestrować nazwę dla każdego numeru LANA, z którym chce się połączyć.

Nazwy NetBIOS mają długość 16 znaków + 16 na cele specjalne. Z kolei maksymalna liczba nazw, jakie można przypisać jednemu numerowi LANA wynosi 254 (w instalacji systemu operacyjnego zwykle maksymalna liczba jest mniejsza).

W zasadzie nazwa „przyjazna dla użytkownika” wykorzystuje tylko 15 znaków. Szesnasty znak (bajt) służy do rozróżnienia większości usług sieciowych Microsoft.

Na przykład bajt 00h oznacza NetBIOS'ową nazwę komputera.

Są dwa typ nazw NetBIOS - unikatowe i grupowe.

Pod nazwą unikatową może być zarejestrowany tylko jeden proces lub obiekt w sieci. W przypadku, gdy nazwa jest już wykorzystywana w innym komputerze w sieci, wystąpi błąd nazw.

Nazwy grupowe służą do przekazywania danych do wielu odbiorców.

Proste (jednowyrazowe) nazwy komputerów w sieciach Windows są nazwami NetBIOS. Jednak obecnie Microsoft opiera działanie sieci w Windows 2000 i Windows XP na TCP/IP, a nie jak w poprzednich wersjach na NetBIOS/NetBEUI.

Polecenie nbtstat (instalowane z TCP/IP) umożliwia oglądnięcie tablic nazw NetBIOS przechowywanych w komputerach w sieci.

WINS (Windows Internet Name Service).

WINS jest nazwą implementacji Microsoftu serwera nazw NetBIOS, czyli NNBS (NetBIOS Name Server).

Serwery WINS utrzymują bazę danych zarejestrowanych nazw NetBIOS dla różnych obiektów, np. użytkowników, komputerów, usług uruchomionych na komputerach. Zaletą bazy jest dynamiczna aktualizacja. Inaczej jak w przypadku DNS, komputery klienckie rejestrują dynamicznie swoje nazwy na serwerze.

Komputer po uruchomieniu rejestruje swoją nazwę w WINS. Serwer WINS generuje błąd, jeśli nazwa jest już w sieci wykorzystana.

Serwer WINS przechowuje też informacje związane z protokołem. Na przykład dla sieci opartych na TCP/IP przechowuje on pary: nazwa NetBIOS, numer IP przydzielony do danej nazwy. Jest to pewien odpowiednik serwera DNS.

W sieciach skonfigurowanych bez serwera WINS komputery sprawdzają dublowanie nazw poprzez rozgłaszanie w sieci. Jeśli żaden komputer nie zakwestionuje przydziału nazwy, sieć „przyzwala” na jej wykorzystanie.

(Dokładnie rozróżnia się tzw. komputery m-węzłów, które najpierw tłumaczą nazwy za pomocą komunikatów rozgłoszeniowych do wszystkich, a jeśli zakończy się to niepowodzeniem, wówczas zapytanie kierowane jest do serwera WINS. Komputery h-węzłów najpierw kierują komunikat do WINS, potem rozgłaszają.)

Krótkie scharakteryzowanie programowania NetBIOS.

Interfejs NetBIOS zawiera tylko jedną funkcję:

UCHAR Netbios (PNCB pNCB);

pNCM jest wskaźnikiem do struktury NCB (Network Control Block). NCB zawiera wszystkie informacje potrzebne do wykonania polecenia NetBIOS - zawiera m.in. pola

UCHAR ncb_command; (polecenie NetBIOS, np. NCBLISTEN, NCBRECV)

UCHAR ncb_retcode;

PUCHAR ncb_buffer; (bufor danych)

UCHAR ncb_callname[NCBNAMSZ] (określenie nazwy odległej aplikacji)

UCHAR ncb_lana_num; (określenie numeru LANA, dla którego zostanie wykonane polecenie)

Ew. przykłady programów na wykładzie.

Sieci komputerowe wykład 10.

1



Wyszukiwarka