Számítógépes Hálózatok

Slides:



Advertisements
Hasonló előadás
A számítógépes hálózatok és az Internet
Advertisements

4. alkalom – Hálózat Kezelés
A hálózat működése 1. A DHCP és az APIPA
Hálózati és Internet ismeretek
HÁLÓZAT SOAP Hagyományos WCF/ASMX webszervizek.
Programozás III HÁLÓZAT.
Hálózati ismeretek 5 Hálózati, szállítási és alkalmazási réteg
Számítógépes hálózatok
Virtuális méréstechnika Hálózati kommunikáció 1 Mingesz Róbert V
Bevezetés a VoIP technológiába
avagy a hálózatok hálózata
TCP/IP protokollverem
Hálózatok.
Alap hálózat összerakása Packet Tracerben
2007 ISP TANFOLYAM ÉSZAKNET, LH COM. USER AUTHENTIKÁCIÓ •MAC – IP •MAC – DHCP •MAC – IP – RADIUS •PPPoE – RADIUS.
SB Eszter SB Application Engine Peter Verhás 2002 április 9.
1. Szállítási (transzport) réteg
Hálózati alapismeretek
Sávszélesség és adatátvitel
Tűzfal beállítása Ubuntuban
Sándor Laki (C) Számítógépes hálózatok I. 1 Számítógépes hálózatok 6.gyakorlat Adatkapcsolati réteg MAC alréteg, ALOHA, CSMA Laki Sándor
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
Fájlkezelés, IO Kivételkezelés Belső osztályok
1 IP alapú hálózatok tervezése és üzemeltetése II. 15/10.
A TCP/IP protokollkészlet és az IP címzés
Hálózatkezelés, java.net Elek Tibor
adminisztrációs feladatok
Számítógépes Hálózatok GY 9. Gyakorlat Bitmap, Binary countdown, Routing, Dijkstra, AIMD Számítógépes hálózatok GY1.
Számítógépes Hálózatok GY
Számítógépes Hálózatok GY
Számítógépes Hálózatok GY
TCP Speed Mérésvezetők: Takács György Tihanyi Attila Előírt Laboratórium I., 2006, PPKE-ITK Készítette: Benyovszky Máté Bohó András.
1 Simple Network Management Protocol, azaz egyszerű hálózatmenedzsment protokoll Takács Béla 2006.
A protokollok határozzák meg a kapcsolattartás módját.
INTERNET.
UDP protokollok User datagram protocol- Felhasználói datagrammprotokoll.
Hálózati architektúrák
Hálózati beállítások és szolgáltatások
A protokoll A protokoll fogalma.
Server, Client. Client-Server Client numPlayers Id ServerMessage ClientMessage Server numPlayers ClientMessages[] ServerMessage Ha a kliens ugyanazt az.
Hálózati alapismeretek
Miért is jók a rétegek?  Ha alkalmazást készítünk, nem akarunk IP csomagok küldésével bajlódni Ethernet keretekkel foglalkozni Implementálni megbízható.
Gyakorlat 3. Számítógép hálózatok I.
Illés Zoltán ELTE Informatikai Kar
Supervizor By Potter’s team SWENG 1Szarka Gábor & Tóth Gergely Béla.
Spring 2002CS 4611 Bevezetés Vázlat: Statisztikus multiplexelés Folyamatok közötti kommunikáció Hálózati architektúra A működés mértékszámai A megvalósítás.
Hálózat menedzsment Óravázlat Készítette: Toldi Miklós.
Rétegmodellek 1 Rendelje az alábbi hálózati fogalmakat a TCP/IP modell négy rétegéhez és a hibrid modell öt rétegéhez! Röviden indokolja döntését. ,
Illés Zoltán ELTE Informatikai Kar
Kapcsolatok ellenőrzése
Mérés és adatgyűjtés laboratóriumi gyakorlat Hálózati kommunikáció 1 Makan Gergely, Mingesz Róbert, Nagy Tamás V
Számítógép- hálózatok
Spring 2000CS 4611 Protokoll Implementáció elelmei Vázlat Szolgáltatási Interfész Folyamat Modell Közös Szubrutinok Példa Protokoll.
Bevezetés az informatikába 11. előadás Internet. Egyetlen nagy egységes elveken működő világhálózat hálózatok összekapcsolása nagy világhálóvá csomagkapcsolt.
Számítógépes Hálózatok 9. gyakorlat. Gyakorlatok Nov 18,20 - Socket Nov 25,27 - Socket Dec 2,4 - ZH Dec 9,11 - pótZH Számítógépes hálózatok GY2 Gombos.
IP alapú hálózatok tervezése és üzemeltetése
Almási Béla - NAT 1 Network Address Translation -NAT.
Óbudai Egyetem Neumann János Informatikai Kar.NET Gadgeteer – Hálózati programozás.
A szállítási réteg az OSI modell 4. rétege. Feladata megbízható adatátvitel megvalósítása két hoszt között. Ezt úgy kell megoldani, hogy az független.
A TCP/IP protokoll. Az ARPANET eredeti protokollja: Network Control Protocol. 1974: Vinton G. Cerf és Robert E. Kahn: új protokollstruktúra fejlesztése.
Hálózatos programok készítése
HTE előadás BME TMIT I. 210 Az internet szolgáltatás mérése az NMHH gyakorlatában – a szolgáltatásminőség EU-s dimenziója Előadók: Torma Zsolt (NMHH)
Számítógépes Hálózatok
Az IP-vel együtt kötelező implementálni.
Hálózatkezelés Java-ban
Internet és kommunikáció
Számítógépes Hálózatok
Válasz a hálózatra, biztonságra, meg mindenre: 7
Előadás másolata:

Számítógépes Hálózatok 8. gyakorlat

Házi feladat megbeszélése Tekintsünk 16 allomást, melyek adaptív fabejárás protokollal visznek át csomagokat. Az állomások azonosítói 0,...,15. Szimulálja a protokoll működését, ha az állomások 0,3,9,11,14 egy időben akarnak csomagot átvinni! (Adja meg a verseny slotokat ettől az időpillanattól addig, amíg a protokoll feloldja a kollúziót.) 0,3,9,11,14 0,3 3  9,11,14 9,11 9 11 14 Gombos Gergő Szám.háló

Házi feladat megbeszélése Tekintsünk egy 1 Gbps-os Ethernet hálózatot, ahol a minimális keretméret 512 byte. Mekkora lehet két eszköz között a maximális kábelhossz? Sávszél (H) : 1 Gbps = 109 bps Min keret (Dmin): 512 byte = 4096 bit Dmin = 2TH => T Tgen = min keret / 2*sávszél = 4096 / 2 * 109 = 2,048 * 10-9s Tgen = lmax / cterj cterj = 2 * 108 m/s lmax = Tgen * cterj lmax = 2048 * 10-9 * 2 * 108 lmax = 409,6 m Gombos Gergő Szám.háló

Hátralevő órák ma – Socket alapok TCP ápr 3 – UDP, SELECT ápr 10 – nem vagyok ápr 17 – tavaszi szünet ápr 24 – feladatok máj 1 – ünnep nap máj 8 – neumann nap máj 15 - ZH Gombos Gergő Szám.háló

Api hozzávétele a programhoz Gombos Gergő Szám.háló

Miért is jók a rétegek? Ha alkalmazást készítünk, nem akarunk IP csomagok küldésével bajlódni Ethernet keretekkel foglalkozni Implementálni megbízható TCP protokollt Az adatunkat rábízzuk az alsóbb rétegre SOCKET: egy API a szállítási réteghez! Gombos Gergő Szám.háló GY

Szállítás Honnan tudja kinek kell kézbesíteni? Az alsóbb rétegnek szüksége van bizonyos információkra címzés: Hová küldjem? Multiplexálás: Ha megérkezett az adat, akkor melyik processnek továbbítsam??? Gombos Gergő Szám.háló GY

Connection socket pair Cél azonosítása Címzés IP cím Hostname (IP cím feloldása a DNS segítségével) Multiplexálás Port alapján (UDP és TCP) Server socket address 208.216.181.15:80 Client socket address 128.2.194.242:3479 FTP Server (port 21) Client HTTP Server (port 80) Connection socket pair (128.2.194.242:3479, 208.216.181.15:80) Client host address 128.2.194.242 Server host address 208.216.181.15 Gombos Gergő Szám.háló GY 8

Socketek Socketek használata Socket felkonfigurálása Adatküldés Mi a cél gép? (IP cím, hostname) Mely alkalmazásnak szól az üzenet? (port) Adatküldés Hasonlóan a UNIX fájl írás-olvasáshoz send -- write recv -- read Socket lezárása Gombos Gergő Szám.háló GY

Áttekintés Client Server Connection request Client / Server Session socket socket bind listen Connection request connect accept read close EOF read write Client / Server Session Gombos Gergő Szám.háló GY

1 – Socket leíró beállítása Mind a kliens, mind a szerver oldalon int socket(int domain, int type, int protocol); domain AF_INET -- IPv4 (AF_INET6 -- IPv6) type SOCK_STREAM -- TCP SOCK_DGRAM -- UDP protocol TCP példa: int sock = socket(AF_INET, SOCK_STREAM, 0); Gombos Gergő Szám.háló GY 11

2 - Bindolás addrlen : A my_addr mérete (sizeof valami) Csak a SZERVERnél kell elvégezni!!! int bind(int sock, const struct sockaddr *my_addr, socklen_t addrlen); sock A fájl leíró, amit a socket() parancs visszaadott my_addr struct sockaddr_in használatos IPv4 esetén, amit castolunk (struct sockaddr*)-ra addrlen : A my_addr mérete (sizeof valami) struct sockaddr_in { short sin_family; // e.g. AF_INET unsigned short sin_port; // e.g. htons(3490) struct in_addr sin_addr; // see struct in_addr, below char sin_zero[8]; // zero this if you want to }; struct in_addr { unsigned long s_addr; // load with inet_aton() Gombos Gergő Szám.háló GY

Példa kód | eddig egy szerver: struct sockaddr_in saddr; int sock; unsigned short port = 80; if ( (sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { // Ha hiba történt perror(“Error creating socket”); ... } memset(&saddr, '\0', sizeof(saddr)); // kinullázza a struktúrát saddr.sin_family = AF_INET; // ua. mint a socket()-nél saddr.sin_addr.s_addr = htonl(INADDR_ANY); // helyi cím, amin figyel saddr.sin_port = htons(port); // a port, amin figyel if ( bind(sock, (struct sockaddr *) &saddr, sizeof(saddr)) < 0) { // Ha hiba perror(“Error binding\n”); Gombos Gergő Szám.háló GY

Mi az a htonl() és htons()? Bájt sorrend (byte order) A hálózati bájt sorrend big-endian Host esetén bármi lehet: big- vagy little-endian x86 - little-endian SPARC - big-endian Konverzió a sorrendek között: htons(), htonl(): host -> hálózati short/long ntohs(), ntohl(): hálózati -> host short/long Mi az, amit konvertálni KELL? címek portok Gombos Gergő Szám.háló GY 14

Példa Gombos Gergő Szám.háló GY 15

3 (Szerver) - Listen Eztán a szerver mindent tud ahhoz, hogy figyelje a socketet int listen(int sock, int backlog); sock Socket leíró, amit a socket() adott vissza backlog ennyi kapcsolódási igény várakozhat a sorban Példa: listen(sock, 5); Gombos Gergő Szám.háló GY

4 (Szerver) - Accept A szerver elfogadhatja a kezdeményezett kapcsolatokat int accept(int sock, struct sockaddr *addr, socklen_t *addrlen) sock Mint korábban addr pointer egy kliens címzési struktúrára (struct sockaddr_in *). Ezt castoljuk (struct sockaddr *)-ra. Ebbe kerülnek a kapcsolódó kliens adatai(cím, port…) addrlen Pointer az addr struktúra méretét tartalmazó objektumra. Az értékének meg kell egyezni a sizeof(*addr)-vel!!! Pl: int isock=accept(sock, (struct sockaddr_in *) &caddr, &clen); Gombos Gergő Szám.háló GY

Rakjuk össze a szervert int sock, clen, isock; unsigned short port = 80; if ( (sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ... } memset(&saddr, '\0', sizeof(saddr)); saddr.sin_family = AF_INET; saddr.sin_addr.s_addr = htonl(INADDR_ANY); saddr.sin_port = htons(port); if ( bind(sock, (struct sockaddr *) &saddr, sizeof(saddr)) < 0) { if (listen(sockfd, 5) < 0) {// operációs rendszer utasítása a socket figyelésére… clen = sizeof(caddr); // egy bejövő kapcsolat elfogadása: if ( (isock = accept(sock, (struct sockaddr *) &caddr, &clen)) < 0) { perror(“Error accepting\n”); Gombos Gergő Szám.háló GY

Mi a helyzet a klienssel? A kliensnél nincsen bind(), listen() és accept() Ehelyett konnektálnia kell! int connect(int sock, const struct sockaddr *saddr, socklen_t addrlen); Pl. connect(sock, (struct sockaddr *) &saddr, sizeof(saddr)); Gombos Gergő Szám.háló GY

Domain Name System (DNS) Küldjünk adatot a www.valami.org-ra? Megoldás a DNS: Hostname és IP összerendelések adatbázisa (Azért ennél több!!!) hostname -> IP cím struct hostent *gethostbyname(const char *name); IP cím -> hostname struct hostent *gethostbyaddr(const char *addr, int len, int type); struct hostent { char *h_name; // hivatalos hostname char **h_aliases; // alternatív nevek vektora int h_addrtype; // címzési típus, pl. AF_INET int h_length; // cím hossza bájtokban, pl. IPv4 esetén 4 bájt char **h_addr_list; // Címek vektora char *h_addr; // első(dleges) cím, lényegében a h_addr_list[0] }; Gombos Gergő Szám.háló GY

Egy kliens példa struct sockaddr_in saddr; struct hostent *h; int sock, connfd; unsigned short port = 80; if ( (sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ... } if ( (h = gethostbyname(“www.valami.org”)) == NULL) { // Lookup the hostname perror(“Unknown host\n”); memset(&saddr, '\0', sizeof(saddr)); // zero structure out saddr.sin_family = AF_INET; // match the socket() call memcpy((char *) &saddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); // copy the address saddr.sin_port = htons(port); // specify port to connect to if ( (connfd = connect(sock, (struct sockaddr *) &saddr, sizeof(saddr)) < 0) { // connect! perror(“Cannot connect\n”); Gombos Gergő Szám.háló GY

Ezzel csatlakoztunk A szerver elfogadta a kapcsolatot, és a kliens konektált. Adat küldése és fogadása ssize_t read(int fd, void *buf, size_t len); ssize_t write(int fd, const void *buf, size_t len); Példa: read(connsockfd, buffer, sizeof(buffer)); write(connsockfd, “hey\n”, strlen(“hey\n”)); Gombos Gergő Szám.háló GY

TCP Szegmentálás A TCP nem garantálja, hogy az adatokat olyan darabokban továbbítja, ahogy mi azt elküldjük! Meg kell nézni, hogy mit kaptunk a read() végén Az egyik fél elküldi a “Hello\n” sztringet A másik 2 üzenetet kap “He”, “llo\n” Ergo 1 write, 2 read művelet ebben a példában Abban az esetben ha nem egyben kapjuk meg az üzenetet használjunk buffert a read()-hez Gombos Gergő Szám.háló GY

Client Server Connection request socket socket bind listen Connection request connect accept read close EOF read write Client / Server Session Gombos Gergő Szám.háló GY

Socket lezárása Sose felejts el lezárni a socketet!!! Olyan fontos, mint a fájloknál!!! int close(int sock); Eztán a szerver új kapcsolatot fogadhat el Gombos Gergő Szám.háló GY

Gombos Gergő Szám.háló GY 26

Gombos Gergő Szám.háló GY 27

Gombos Gergő Szám.háló GY 28

Feladat Készítsünk egy ‘hello socket’ TCP-t Kliens küldje a servernek ‘hello Server’ Server valaszoljon ‘Hello kliens’ Gombos Gergő Szám.háló GY

Vége