Portál AbcLinuxu, 10. května 2025 06:23

Dotaz: Tcp/ip komunikace http - jak funguje

4.3.2011 20:46 tpq
Tcp/ip komunikace http - jak funguje
Přečteno: 596×
Odpovědět | Admin
Ahoj. Zajímala by mě taková teoretická otázka- nevíte někdo jakým způsobem probíhá komunikace po tom co se naváže spojení s web serverem? Nezajímá mě samotný protokol, ten znám, ale řízení toku dat. Třeba spojení 192.168.1.5:35874 -> server:80. Co pokud ale se serverem zároveň komunikuje více klientů přes stejný port 80. Jakým způsobem jsou fyzicky obsluhovány přes ten jediný port? To může 100 klientů naráz pokládat http dotaz na jediný port?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.3.2011 21:27 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: Tcp/ip komunikace http - jak funguje
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedno IP spojení je identifikováno čtveřicí (IP_ADDR_CLI, PORT_CLI, IP_ADDR_SERVER, PORT_SERVER). OS podle toho posílá data z/na filedescriptor. Ten je vytvořen buď pomocí něčeho, jako connect() na CLI, nebo pomocí accept() na SERVERU.

Snad ti to stačí a nejsou v tom hrubé chyby. Nevím jak je to přesně.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
4.3.2011 22:21 tpq
Rozbalit Rozbalit vše Re: Tcp/ip komunikace http - jak funguje
Tzn. že třeba apache má filedescriptor typu accept() a současně 2 klienti nemohou posílat požadavek na server v ten samý čas?
4.3.2011 22:29 l4m4
Rozbalit Rozbalit vše Re: Tcp/ip komunikace http - jak funguje
Počujte, Kefalín. A čo si vy predstavujete pod takým pojmom filedeskriptor typu accept()?

Filedescriptor je číslo idenfikující otevřené soubory.

accept() je funkce (konkrétně systémové volání).

Klienti mohou dělat, co chtějí. Jak by se jim v odeslání požadavků ve stejný čas asi zabránilo? Pakety samozřejmě přijdou postupně, takže někde, na nějakém síťovém prvku cestou, se to serializuje.
4.3.2011 23:59 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Tcp/ip komunikace http - jak funguje
Syscall accept() vrátí v případě úspěchu jako návratovou hodnotu číslo nového deskriptoru, který odpovídá TCP spojení s daným klientem. Na původní deskriptor se pak znovu volá accept() a čeká se na další spojení. U Apache jednotlivé deskriptory "klientských" socketů obsluhují samostatné procesy (prefork) nebo vlákna (worker), které tak neblokují původní proces čekající na další klienty. Konkrétně u Apache je to ve skutečnosti trochu složitější, ale tohle by mohlo pro základní představu stačit.
4.3.2011 22:46 moira | skóre: 30 | blog: nesmysly
Rozbalit Rozbalit vše Re: Tcp/ip komunikace http - jak funguje
Odpovědět | | Sbalit | Link | Blokovat | Admin
Stručně, dvojice IP_ADRESA:PORT tvoří socket a dva sockety definují spojení. Tj. pokud se se serverem baví 100 klientů, tak spojení každého z nich se bude lišit alespoň v socketu klienta (buď jiná IP nebo alespoň jiný zdrojový port), takže server vždy přesně ví (resp. OS) ke kterému spojení data patří. Není teda problém, když všichni klienti odesílají data na stejný port, protože se navzájem liší jejich sockety. Jinak je to v podstatě jinak napsané to, je už napsáno nahoře.
Překladač ti nikdy neřekne: "budeme kamarádi"

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.