Wyk éad III

background image

2001 © Sławomir Jeżewski Katedra Informatyki Stosowanej
PŁ.

Programowanie sieciowe

Wykład III a

Protokoły warstwy

Transportowej

background image

Połączeniowość protokołu

TCP

3-etapowe nawiązanie połączenia

Wymiana pakietów danych za potwierdzeniem

4-etapowe zamknięcie połączenia

background image

Format segmentów TCP

Port Odbiorcy

Port Nadawcy

Numer porządkowy pakietu

Numer potwierdzenia

Dl. Ng.

Zarezer..

BK

Okno

Wskaźnik danych

pilnych

Suma kontrolna

Uzupełnien

ie

Opcje

Dane

......

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

16

31

0

0 (URG)
1 ( ACK )
2 ( PSH )
3 ( RST )
4 ( SYN )
5 ( FIN )

background image

Nawiązanie połączenia

Klient

Serwer

connect

accept

SYN J

SYN K, ACK J+1

ACK K+1

Accept zwraca

wynik

connect zwraca

wynik

background image

Zamknięcie połączenia

Klient

Serwer

close/closesocke

t

FIN M

read =0

ACK M+1

Koniec funkcji close

FIN N

close/closesocke

t

ACK N+1

Koniec funkcji close

background image

Przesyłanie danych

Klient

Serwer

write

Segment danych

M

ACK M

ACK M+1

Segment danych

M+1

Segment danych

M+2

Segment

danych + ACK

M+2

background image

Okno TCP

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Okno wysyłania

background image

Okna i kontrola przepływu

i przeciążenia

Zmienny rozmiar okna

Okno o zerowej wielkości wstrzymuje transmisję

background image

Przekroczenia czasu

Zagubiony segment

Segment opóźniony

RTT=(x*Stare_RTT)+((1-x)*Nowa_Próbka_Czasu

background image

2001 © Sławomir Jeżewski Katedra Informatyki Stosowanej
PŁ.

Programowanie sieciowe

Wykład III b

Serwer echo - przykład prostego

serwera sieciowego

background image

Typologia serwerów

serwer jednowątkowy

serwer wielowątkowy

serwer pozornie - wielowątkowy

Utworzenie nowego

procesu

Oczekiwanie

background image

serwer wielowątkowy

Utworzenie nowego

procesu

Oczekiwanie

Wątek główny

Typologia serwerów

Obsługa

klienta

Koniec

Począte

k

Wątek

potomny

Obsługa

klienta

Koniec

Począte

k

Wątek

potomny

background image

serwer pozornie wielowątkowy

Typologia serwerów

E.O. klienta 1

Sprawdzenie

E.O. klienta 2

....

E.O. klienta n

Dołączenie nowego

klienta

background image

Typologia serwerów

serwery przechowujące stan interakcji ( stanowe
)

serwer nie przechowujący stanu interakcji (bez-
stanowy)

background image

Szkielet programu

sieciowego

Poinformuj

użytkownika

o błędzie

Send

recv

closesocket

•Start

•Stop

WSAStartup

WSACleanup

socket

bind

listen

closesocket

accept

background image

Zestawienie funkcji

interfejsu gniazd Berkeley

Opis funkcji

Typ funkcji

Nazwa

funkcji

Opis funkcji

Przydzielanie zasobów

socket

Tworzy gniazdo komunikacyjne i zwraca jego

deskryptor

closesocket

Zamyka połączenie i likwiduje gniazdo komunikacyjne

Zwalnianie zasobów i

zamykanie połączenia

shutdown

Zamyka połączenie w jednym lub obydwu kierunkach

connect

Inicjuje połączenie

bind

Związuje gniazdo z określonym portem i numerem IP

listen

Wprowadza lokalny port w bierny tryb pracy

Nawiązywanie

połączenia

accept

przyjmuje zgłoszone połączenie

send

wysyła datagram

sendto

wysyła datagram pod wskazany adres docelowy

sendmsg

wysyła datagram

Wysyłanie danych

write

wysyła dane przez połączenie

read

odczytuje dane z połączenia

recv

pobiera kolejny datagram

recvfrom

odbiera datagram i zapamiętuje adres adawcy

Odbieranie danych

recvmsg

pobiera kolejny datagram

getpeername

podaje adres komputera zdalnego z którym nawiązano

połączenie

getsockopt

Funkcje informacyjne i

konfiguracyjne

setsockopt

Pobranie i ustawienie opcji gniazda

bind

listen

accept

background image

Funkcja

bind

Definic

ja

int bind ( SOCKET s, const struct sockaddr FAR*name, int namelen
);

s

- deskryptor gniazda

name

- struktura adresowa zawierająca adres i

numer portu
namelen

- długość struktury adresowej.

Paramet

ry

Funkcji bind używamy przed użyciem funkcji connect lub listen , by
powiązać dane gniazdo z numerem portu lub/i adresem sieciowym. Adres
sieciowy równy stałej ADDR_ANY powoduje wybranie adresu interfejsu
sieciowego przez niższe warstwy protokołu.
Numer portu 0 powoduje przydzielenie portu z zakresu 1024  5000 przez

system operacyjny

Opis

Zero w przypadku sukcesu , inaczej wartość INVALID_SOCKET

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

connect, getsockname, listen,

setsockopt, socket,

WSACancelBlockingCall

Patrz także

Informacja

skrótowa

struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};

16

struct in_addr {
union {
struct { u_char s_b1,s_b2;
u_char s_b3,s_b4;
} S_un_b;
struct { u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;
} S_un;
}

background image

Funkcja

listen

Definic

ja

int listen ( SOCKET s, int backlog );

s

- deskryptor gniazda

backlog - maksymalny rozmiar kolejki zawierającej zgłoszone
połączenia

Paramet

ry

Funkcja stawia podane gniazdo w tryb pasywny, w którym oczekuje ono na
nadchodzące połączenia. Zgłoszone połączenia zestawiane są w wewnętrznej
kolejce. Jeśli ilość zgłoszonych, lecz nie nawiązanych połączeń przekroczy
głębokość kolejki. Kolejne połączenia będą odrzucane

Opis

Zero w przypadku sukcesu , inaczej wartość INVALID_SOCKET

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

accept, connect, socket

Patrz także

Informacja

skrótowa

background image

Funkcja

accept

Definic

ja

SOCKET accept (SOCKET s, struct sockaddr
FAR*
addr, int FAR* addrlen );

s

- deskryptor gniazda nasłuchującego ( biernego )

addr

- wskaźnik do bufora w pamięci odbierającego adres stacji nawiązującej

połączenie
addrlen - wskaźnik na zmienną do której zostanie wpisana długość struktury
adresowej.

Paramet

ry

Funkcja pobiera pierwsze połączenie z kolejki połączeń oczekujących na
obsługę i zwraca deskryptor gniazda identyfikujący to połączenie.

Opis

Deskryptor gniazda w przypadku sukcesu , inaczej wartość
INVALID_SOCKET

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

bind, connect, listen,

select, socket,

WSAAsyncSelect, WSAAccept

Patrz także

Informacja

skrótowa

background image

Funkcja

shutdown

Definic

ja

Paramet

ry

Opis

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

bind, connect, listen,

select, socket,

WSAAsyncSelect, WSAAccept

Patrz także

Informacja

skrótowa

int shutdown (SOCKET s, int how );

int namelen );

s

- deskryptor gniazda

how

- tryb zamknięcia gniazda.

Nawiązuje połączenie ze wskazanym komputerem

0:

jeśli wykonanie funkcji było

bezbłędne
SOCKET_ERROR

w przypadku błędu

Wartość stałej how Opis
SHUT_RD

( SD_RECEIVE )

Zamknięcie gniazda dla

operacji odczytu

SHUT_WR

( SD_SEND )

Zamknięcie gniazda dla

operacji zapisu

SHUT_RDWR

( SD_BOTH )

Zamknięcie gniazda w

obydwu kierunkach -

podobnie jak close (

closesocket )

background image

Funkcja

gethostbyaddr

Definic

ja

Paramet

ry

Opis

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

gethostbyname, HOSTENT,

WSAAsyncGetHostByAddr

Patrz także

Informacja

skrótowa

HOSTENT FAR * gethostbyaddr ( const char FAR * addr, int len, int type );

addr

- Wskaźnik do adresu podanego w sieciowym porządku bajtów.

len

- długość adresu

namelen

- Typ adresu ( stałe AF_**** )

Funkcja zwraca strukturę HOSTENT opisującą stację o podanym adresie sieciowym - addr

0:

jeśli wykonanie funkcji było

bezbłędne
SOCKET_ERROR

w przypadku błędu

struct hostent {
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
};

Wskaźnik 1

Wskaźnik 2

NULL

...

...

...

Nazwa 1

Nazwa 2

wskaźnik 1

wskaźnik 2

NULL

...

...

...

adres IP Nazwa domenowa

adres IP Nazwa domenowa

background image

Funkcja

gethostbyname

Definic

ja

Paramet

ry

Opis

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

gethostbyaddr,

WSAAsyncGetHostByName

Patrz także

Informacja

skrótowa

struct hostent FAR * gethostbyname (const char FAR * name);

name

- wskaźnik do łańcucha znaków zawierających nazwę domenową stacji.

Funkcja zwraca strukturę HOSTENT opisującą stację o podanej nazwie

adres:

jeśli wykonanie funkcji było

bezbłędne
NULL

w przypadku błędu

background image

Funkcja

getsockopt

Definic

ja

Paramet

ry

Opis

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

setsockopt, socket, WSAAsyncSelect,

WSAConnect, WSAGetLastError,

WSASetLastError

Patrz także

Informacja

skrótowa

int getsockopt ( SOCKET s, int level, int optname,
char FAR*
optval, int FAR* optlen );

s

- Deskryptor gniazda.

level

- Rodzaj oprogramowania systemowego obsługującego daną

opcję
optname

- Identyfikator opcji do ustawienia lub odczytu

optval - Wskaźnik do zmiennej w której funkcja getsockopt
zapisuje wartość opcji.
optlen

- Rozmiar bufora danych/zmiennej.

Funkcja pobiera wartość opcji identyfikowanej parametrami level i optlen.
Zmienne optval i optlen zawierają odpowiednio liczbę lub strukturę opisującą opcję oraz jej długość

0:

jeśli wykonanie funkcji było

bezbłędne
SOCKET_ERROR

w przypadku błędu

SOL_SOCKET
IPPROTO_IP

background image

Funkcja

getsockopt

Definic

ja

Paramet

ry

Opis

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

setsockopt, socket, WSAAsyncSelect,

WSAConnect, WSAGetLastError,

WSASetLastError

Patrz także

Informacja

skrótowa

int getsockopt ( SOCKET s, int level, int optname,
char FAR*
optval, int FAR* optlen );

s

- Deskryptor gniazda.

level

- Rodzaj oprogramowania systemowego obsługującego daną

opcję
optname

- Identyfikator opcji do ustawienia lub odczytu

optval - Wskaźnik do zmiennej w której funkcja getsockopt
zapisuje wartość opcji.
optlen

- Rozmiar bufora danych/zmiennej.

Funkcja pobiera wartość opcji identyfikowanej parametrami level i optlen.
Zmienne optval i optlen zawierają odpowiednio liczbę lub strukturę opisującą opcję oraz jej długość

0:

jeśli wykonanie funkcji było

bezbłędne
SOCKET_ERROR

w przypadku błędu

Wartość

Znaczenie

SO_ACCEPTCONN

Sprawdza czy dane gniazdo jest w trybie biernym

SO_BROADCAST

Gniazdo ma zezwolenie na wysyłanie pakietów z adresem

rozgłoszeniowym

SO_DEBUG

Opcja DEBUG włączona/wyłączona

SO_DONTLINGER

1 jeśli opcja SO_LINGER jest zablokowana

SO_DONTROUTE

Przeglądanie tabeli tras wyłączone

SO_ERROR

Pobranie nie obsłużonego błędu.

SO_GROUP_ID

Identyfikator grupy do której należy gniazdo.

SO_GROUP_PRIORIT

Y

Relatywny priorytet dlag gniazd króre są częścią grupy gniazd.

SO_KEEPALIVE

Periodyczne testowanie połączenia

SO_LINGER

Zwraca aktualną wartość opcji LINGER

SO_MAX_MSG_SIZE

Maksymalny rozmiar wiadomości dla protokołów datagramowych

( SOCK_DGRAM). Dla protokołów i gniazd strumieniowych bez

znaczenia.

SO_OOBINLINE

Dane pilne ( dane pozapasmowe ) są zwracane w strumieniu

normalnych danych

SO_PROTOCOL_INFO Opis protokołu skojarzonego z danym gniazdem
SO_RCVBUF

Rozmiar bufora na dane odebrane

SO_REUSEADDR

Gniazdo może współdzielić adres i port z innym gniazdem

zarządzanym przez inny proces

SO_SNDBUF

Rozmiar bufora danych na wysłane dane

SO_TYPE

Typ gniazda ( np. SOCK_STREAM, SOCK_DGRAM.

PVD_CONFIG

SOL_SOCK

ET

background image

Funkcja

getsockopt

Definic

ja

Paramet

ry

Opis

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

setsockopt, socket, WSAAsyncSelect,

WSAConnect, WSAGetLastError,

WSASetLastError

Patrz także

Informacja

skrótowa

int getsockopt ( SOCKET s, int level, int optname,
char FAR*
optval, int FAR* optlen );

s

- Deskryptor gniazda.

level

- Rodzaj oprogramowania systemowego obsługującego daną

opcję
optname

- Identyfikator opcji do ustawienia lub odczytu

optval - Wskaźnik do zmiennej w której funkcja getsockopt
zapisuje wartość opcji.
optlen

- Rozmiar bufora danych/zmiennej.

Funkcja pobiera wartość opcji identyfikowanej parametrami level i optlen.
Zmienne optval i optlen zawierają odpowiednio liczbę lub strukturę opisującą opcję oraz jej długość

0:

jeśli wykonanie funkcji było

bezbłędne
SOCKET_ERROR

w przypadku błędu

IPPROTO_IP

TCP_NODELAY

BOOL

Blokowanie algorytmue Nagle'a.

Value

Type

Meaning

SO_RCVLOWAT

int

Zgłoszenie wypełnienia bufora danych

nadawanych

SO_RCVTIMEO

int

Time-out przy odbiorze

SO_SNDLOWAT

int

Send low water mark

SO_SNDTIMEO

int

Tme-out przy nadawaniu

TCP_MAXSEG

int

Maksymalny rozmiar segmentu TCP

background image

Funkcja setsockopt

Definic

ja

Paramet

ry

Opis

Wartość zwrotna

Windows NT: Tak
Windows: Tak
Windows CE: W wersji 1.0 i późniejszych.
Nagłówek: Zadeklarowana w winsock2.h.
Biblioteka importowa: ws2_32.lib.

setsockopt, socket, WSAAsyncSelect,

WSAConnect, WSAGetLastError,

WSASetLastError

Patrz także

Informacja

skrótowa

int setsockopt ( SOCKET s, int level, int optname,
char FAR*
optval, int optlen );

s

- Deskryptor gniazda.

level

- Rodzaj oprogramowania systemowego obsługującego daną opcję

optname

- Identyfikator opcji do ustawienia

optval - Wskaźnik do zmiennej na podstawie której funkcja setsockopt ustawia opcję.
optlen

- Rozmiar zmiennej wskazywanej przez optval

Funkcja pobiera wartość opcji identyfikowanej parametrami level i optlen.

Zmienne optval i optlen zawierają odpowiednio liczbę lub strukturę opisującą
opcję oraz jej długość

Jeśli sukces

: zwraca ilość bajtów do

wysłania
Jeśli błąd

: SOCKET_ERROR


Document Outline


Wyszukiwarka

Podobne podstrony:
Rachunkowość ubezpieczeniowa, Wyk ad III- bilans, Rachunkowość ubezpieczeniowa
Kinezyterapia  10 2010 wyk ad III
Wyk ad III Budzet i Skarb 5 marca
Wyk ad III, EKONOMIA ROZWOJU - Salamaga
GENETYKA wyk éad III  03
wyk ad III, nadkrwistości, czerwienica, białaczki
mikroekonomia wyk ad iii ma y www.przeklej.pl, ZIiP, Semestr 1, MIKROEKONOMIA, WYKŁADY
Metody probalistyczne prawdobie˝stwo wyk ad III
Wyk+éad III - Poj¦Öcie,
EIE wyk ad III
Wyk ad III Budzet i Skarb 5 marca
Zielarstwo - wyk-ad 6 - 16.11.2010, OGRODNICTWO UP LUBLIN (buka), Semestr III, ZIELARSTWO
wyk+éad z dnia 21.05.2004, WSAP Ostrołęka, III semestr, Nauka administracji
Kompetencje mened erów III wyk ad ZKZawodow (1)
Zielarstwo - wyk-ad 4 - 26.10.2010, OGRODNICTWO UP LUBLIN (buka), Semestr III, ZIELARSTWO
Zielarstwo - wyk-ad 5 - 09.11.2010, OGRODNICTWO UP LUBLIN (buka), Semestr III, ZIELARSTWO
Zielarstwo - wyk-ad 3 - 19.10.2010, OGRODNICTWO UP LUBLIN (buka), Semestr III, ZIELARSTWO

więcej podobnych podstron