„Informatika 2 - Socket kezelés labor” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
|||
| (9 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva) | |||
| 1. sor: | 1. sor: | ||
{{Vissza|Informatika 2}} | {{Vissza|Informatika 2}} | ||
Ez az oldal az [[Informatika 2]] című tárgy - Socket kezelés labor beugrókérdéseinek kidolgozását tartalmazza. | Ez az oldal az [[Informatika 2]] című tárgy - '''Socket kezelés labor''' beugrókérdéseinek kidolgozását tartalmazza.<br>Az aktuális segédlet az aktuális (ajánlott) beugrókérdésekkel bejelentkezés után megtalálható a tanszéki honlapon a [https://www.aut.bme.hu/Upload/Course/VIAUA203/hallgatoi_segedletek/TCP-HTTP-hallgatoi.pdf 1. gyakorlat segédlet címen] (2013 tavasz). | ||
Jelenleg még elég hiányos a kidolgozás, továbbá évről évre kismértékben változhatnak beugrókérdések. A tanszéki honlapról mindig elérhető az aktuális mérési útmutató, mely az aktuális beugrókérdéseket tartalmazza. | Jelenleg még elég hiányos a kidolgozás, továbbá évről évre kismértékben változhatnak beugrókérdések. A tanszéki honlapról mindig elérhető az aktuális mérési útmutató, mely az aktuális beugrókérdéseket tartalmazza. | ||
'''''FONTOS: Ezektől eltérő kérdések is előfordulhatnak a beugrókban! Ezek csak irányadó kérdések, így ajánlott a segédlet alapos áttanulmányozása is.''''' | |||
'''Kérlek szerkesszétek, aktualizáljátok!''' | '''Kérlek szerkesszétek, aktualizáljátok!''' | ||
| 19. sor: | 21. sor: | ||
== A cím összeállításánál miért szükséges a számokat konvertálni? == | == A cím összeállításánál miért szükséges a számokat konvertálni? == | ||
Több bájtos adatstruktúrák írják le a címek különböző részeit (címrész, portszám), és ezek ábrázolása lehet ''big endian'' vagy ''little endian'' bájtsorrendű, amikor a magasabb illetve az alacsonyabb helyiértékű bájtok vannak előbb. (Pl. az x86 architektúra little endian, a SUN Sparc | Több bájtos adatstruktúrák írják le a címek különböző részeit (címrész, portszám), és ezek ábrázolása lehet ''big endian'' vagy ''little endian'' bájtsorrendű, amikor a magasabb illetve az alacsonyabb helyiértékű bájtok vannak előbb. (Pl.: az x86 architektúra little endian, a SUN Sparc pedig big endian) A hálózati bájtsorrend mindig valamilyen megegyezés szerint szabványos, minden címnek abban a formátumban kell lennie. | ||
Hogy ne kelljen külön kódot írni attól függően, hogy a gépünk éppen milyen architektúrájú, ezért használjuk a koncerziós függvényeket, amik minden számot a gép ("hoszt") bájtsorrendjéről a hálózat bájtsorrendjére alakítanak. | Hogy ne kelljen külön kódot írni attól függően, hogy a gépünk éppen milyen architektúrájú, ezért használjuk a koncerziós függvényeket, amik minden számot a gép ("hoszt") bájtsorrendjéről a hálózat bájtsorrendjére alakítanak. | ||
| 93. sor: | 95. sor: | ||
x=strcmp(str1, str2); | x=strcmp(str1, str2); | ||
if (x==0) printf("a két string azonos\n"); | if (x==0) printf("a két string azonos\n"); | ||
else printf("a két string | else printf("a két string különböző\n"); | ||
== C-kód: Megvizsgálja, hogy az str1 nevű karakter tömb tartalmazza-e az str2 nevű karakter tömb értékét! == | == C-kód: Megvizsgálja, hogy az str1 nevű karakter tömb tartalmazza-e az str2 nevű karakter tömb értékét! == | ||
<code>[http://www.cplusplus.com/reference/cstring/strstr/ char* strstr(char*, const char*)]</code> függvény dokumentációja | |||
char str1[]="qwerty"; | char str1[]="qwerty"; | ||
| 102. sor: | 106. sor: | ||
temp=strstr(str1, str2); | temp=strstr(str1, str2); | ||
if (temp!=NULL) printf("az | if (temp!=NULL) printf("az első string tartalmazza a másodikat\n"); | ||
else printf("az | else printf("az első string nem tartalmazza a másodikat\n"); | ||
== Egy HTTP kommunikációban milyen felek vesznek részt és mi a feladatuk? == | == Egy HTTP kommunikációban milyen felek vesznek részt és mi a feladatuk? == | ||
#Kliens (böngésző): | #Kliens (böngésző): | ||
#*A beírt | #*A beírt internetcím alapján megállapítja a szerver IP-címét (lekérdezi egy [http://hu.wikipedia.org/wiki/Domain_Name_System DNS-szervertől (link: Wikipédia)] egy külön kapcsolaton keresztül) | ||
#*TCP/IP-kapcsolatot hoz létre a szerver felé | #*TCP/IP-kapcsolatot hoz létre a szerver felé | ||
#*HTTP-kéréseket küld a szerver felé | #*HTTP-kéréseket küld a szerver felé | ||
#Szerver: | #Szerver: | ||
#*HTTP-válaszokat küld a kliens kéréseire ( | #*Nyilvánosan elérhető socketeken keresztül várja a kliensek kapcsolódási kérelmeit | ||
#* | #*HTTP-válaszokat küld a kliens kéréseire (normális esetben például a kért oldalt szolgálja ki, egyéb esetben hibaüzenettel válaszol) | ||
#*A válasz végén | #*Kliensek kéréseire egyéb módon is reagálhat a szerveren (előre meghatározott programot lefuttathat, adatbázist módosíthat, stb.) | ||
#*A válasz végén lebonthatja a kapcsolatot | |||
== A HTTP protokollban a kliens hogyan jelzi a kérés fejlécének végét? == | == A HTTP protokollban a kliens hogyan jelzi a kérés fejlécének végét? == | ||
Egy <code><CR><LF><CR><LF></code> sorozattal (<code>0x0D 0x0A 0x0D 0x0A</code> bájtok). Ez magyarul két sortörést (entert) jelent (egy sortörés egy CR-LF). Ha úgy tetszik, akkor egy üres fejléc beszúrásával (mintha a két sortörés között lenne egy üres fejléc). | |||
== A HTTP GET kérés hogyan közli a lekérendő dokumentum nevét és elérhetőségét? == | == A HTTP GET kérés hogyan közli a lekérendő dokumentum nevét és elérhetőségét? == | ||
A küldött parancs (pl. GET) után egy szóközzel elválasztva következik a dokumentum helye a szerver gyökérkönyvtárához képest. Pl. a www.google.com szervernek küldött GET / HTTP/1.0 | A küldött parancs (pl. <code>GET</code>) után egy szóközzel elválasztva következik a dokumentum helye a szerver gyökérkönyvtárához képest. Pl. a www.google.com szervernek küldött <code>GET / HTTP/1.0</code> kérés magát a gyökérkönyvtárat kéri le (ezt jelöli a perjel). | ||
== A web szerver hogyan jelzi, ha hiba történt a dokumentum lekérése során? == | == A web szerver hogyan jelzi, ha hiba történt a dokumentum lekérése során? == | ||
A válasz tartalmaz egy státuszkódot (hibakódot). | A válasz tartalmaz egy státuszkódot (hibakódot). A 200-as státuszkódok a megfelelő választ jelentik (pl. 200 OK), a 300-asok az átirányítást (pl. 302 Found), a 400-asok a kliens-oldali hibából adódóan nem teljesíthető kérést (pl. 404 Not Found, 403 Forbidden), az 500-asok a szerver-oldali hibából adódóan nem teljesíthető kérést (pl. 500 Internal Server Error) | ||
A (HTTP 1.1-es) válaszkódok bővebben megtalálhatóak | A (HTTP 1.1-es) válaszkódok bővebben megtalálhatóak a http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html oldalon vagy a Wikipédián: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes | ||
== Mi az a két mód, ahogy a web szerver jelezheti a dokumentum méretét (végét)? == | == Mi az a két mód, ahogy a web szerver jelezheti a dokumentum méretét (végét)? == | ||
| 134. sor: | 139. sor: | ||
A fejlécben előre elküldheti a dokumentum méretét (pl. Content-Length fejléc mező), vagy az átvitel befejezése után simán bontja a TCP/IP-kapcsolatot. | A fejlécben előre elküldheti a dokumentum méretét (pl. Content-Length fejléc mező), vagy az átvitel befejezése után simán bontja a TCP/IP-kapcsolatot. | ||
[[ | [[Kategória:Villamosmérnök]] | ||