Avatar
ronep
Člen
Avatar
ronep:

Nechapem ako je možne že ak som v sieti lan a nejakemu serveru pošlem požiadavku na jeho webove stranky tak odpoveď dostanem aj keď v rutri nieje nastavene presmerovanie

priklad
. moja lokalna ip je 192.168.0.108
. moja verejna ip je 175.61.220.51
. ip servera je 178.238.37.182

ak ja pošlem požiadavku na server 178.238.37.182
tak on odpoveď odošle na 175.61.220.51 (moja verejna ip)
a ja nechapem ako to že to dostane 192.168.0.108 (moja lokalna ip teda moj pc)
a vš. to ide na porte 80 ako je pre webove stranky žauživane

 
Odpovědět 4. května 20:57
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

Říká se tomu NAT - network address translation - vyřešil se tím problém docházejících IP adres. Router odděluje tvoji LAN od Internetu, a ten server skutečně nemůže přímo na tvou IP (lokální) poslat pakety. Ale jakmile tvůj PC pošle request na webovou stránku, tak PC zjistí, že adresa nepatří do lokální síťě (pomocí subnet mask) => musí to poslat na Router. Router paket(y) přijme, vytvoří si v NAT tabulce (ve své paměti) záznam: Tvoje lokálí IP:port - očekává reply ze serveru: IP serveru. Poté vezme obsah paketu, jako cílovou IP dá ten server, jako zdrojovou svou IP (veřejnou) a odešle. Server pošle request na tvůj router - ten si v NAT tabulce najde tebe jako čekajícího na tyto data, a začne ti je přeposílat.

 
Nahoru Odpovědět  ±0 4. května 21:04
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

Jak se mi bude chtít, tak do sekce "Síťe" přidám články aj o tomhle :-) Ale můžeš se něco dozvědět předem. Konkrétně IP adresy 192.168.xxx.xxx byly vyhrazeny na tohle "NAT" použití - takže žádná veřejná IP na světě nesmí (nebo by neměla mít) tuhle hodnotu. Zato takhle začíná věšina IP adres LAN (ještě jsou vyhrazené další 2 intervaly, ale já se s tím nesetkal), ať už doma, na školní síti, všude. A jak jsem říkal, NAT vyřešil (nebo nevyřešil, IPv4 stejně už téměř došly) nedostatel IP adres - na světě by mohlo být takových 100 miliard zařízení, a IPv4 adres je jen 232 tedy nějaké 4 miliardy. Takhle se za jednu veřejnou IP může schovat celá škola (900 potenciálních IP) nebo třeba firma (X tisíc lidí).

 
Nahoru Odpovědět 4. května 21:10
Avatar
ronep
Člen
Avatar
ronep:

dik za zhrnutie to čo si tu napisal je pre mňa veľmi zaujimave a oboznamujuce z problematikou aj ked niečo na štýl prepisovania lokalnej ip na verejnu ip v rutry som tušil.

ale mňa skuor zaujima prečo keď som si urobil jednoduche posielanie paketou z textovim obsahom ( v jave) tak musim nastaviť na rutri (ruter tp-link) presmerovanie portu a ked načitam vebove stranky tak to nieje potreba

 
Nahoru Odpovědět 4. května 22:53
Avatar
ronep
Člen
Avatar
Odpovídá na Lukas C#
ronep:

sory ja som sa preklikol moc ma to mrzi
ten dislike skusim tam potom dat 2x like snať to pomože
a fakt sory to som nechcel

 
Nahoru Odpovědět 4. května 22:56
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

V klidu :-) Ztráta trošičky zkušeností mě nezabije.

Editováno 4. května 23:00
 
Nahoru Odpovědět 4. května 23:00
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

A odkud jak kam posíláš?

 
Nahoru Odpovědět 4. května 23:06
Avatar
ronep
Člen
Avatar
ronep:

z mojho pc (ip 192.168.0.108) v lan sieti cez ruter na wan a potom speť cez ruter na lan "spoluvivojara".
obidvaja musime mať nastavene presmerovanie inač to nefunguje.

 
Nahoru Odpovědět 4. května 23:16
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

Pochopil jsem tu cestu jako: Tvůj PC ---> tvůj router ---> Internet ---> Jeho router ---> jeho PC. Pak samozřejmě minimálně on musí mít přesměrování (v tomto směru). Jakmile posílá on tobě, pak musíš mít přesměrování zase ty. Ty můžeš poslat data bez problému na jeho router (který má veřejnou IP), ale jeho router to zahodí, protože to nemá ve forwardovací NAT tabulce - pokud si nenastaví přesměrování. Stejně tak to platí i naopak.

 
Nahoru Odpovědět  +1 4. května 23:25
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Lukas C#
Lukas C#:

Tímto jsem si jistý ve chvíli, kdy ty zadáš příkaz ve svém Java programu (cokoliv to je) k odeslání paketu - ručně. V tu chvíli musí mít PF (port forwarding) ten kolega. A potom kolega udělá to samé - pošle ručně paket tobě - pak musíš mít PF ty. Ale pokud jeden z vašich programů je jako server a druhý jako klient, tak pak by měl stačit PF u routeru za kterým je server - pač server je něco, co neposílá samo od sebe, jen na request od klienta. A v tuto chvíli ti to nedokážu vysvětlit, proč by to němělo fungovat. V tomto mě to zaskočilo, tak teď se hrabu na netu a hledám si více info o NAT :-)

 
Nahoru Odpovědět 4. května 23:31
Avatar
ronep
Člen
Avatar
ronep:

a ako je možne že ak idem na webove alebo herne serveri tak u klienta nieje potreba presmerovanie.
aj ked data idu obidvoma smermi.

 
Nahoru Odpovědět 4. května 23:32
Avatar
ronep
Člen
Avatar
ronep:

je možne niejako vinutiť priamo z klienta (programe bežiacom na pc v lan) v rutri zapis do nat aby nebolo potreba presmerovanie?

 
Nahoru Odpovědět 4. května 23:38
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Lukas C#
Lukas C#:

Inu, možná to mám. Trochu upřesním NAT, ale předpokládám že víš co je port v protokolu TCP (nebo UDP): Když tvůj PC odešle paket (dejme web page request), tak cílový port je 80 (HTTP default), ale zdrojový port je vybrán náhodně (z neobsazených jinou aplikací na PC). Takže na router jde paket: Cílová IP: router, Zdrojová IP: tvůj PC, zdrojový port: náhodně vybrán, cílový port: 80. Router to přijme, a pozmění nejenom zdrojovou IP na svou vlastní - veřejnou, ale změní i zdrojový port! Router tedy odesílá paket se svou IP adresou a taky s novým, také náhodně vybraným zdrojovým portem! - Tady je důležité, že server musí odeslat paket, který má zdrojový port 80, a cílový port musí být ten samý náhodný port, který zvolil tvůj router (pochopitelně, tyto data jsou v NAT tabulce, a pouze takový paket ti router přepošle zpět na LAn na tvůj PC). Což by nemusel být případ, kdy komunikujete každý nezávisle. Pokuste se to poslat na správný port, mohlo by to jít.

 
Nahoru Odpovědět  +1 4. května 23:41
Avatar
ronep
Člen
Avatar
ronep:

u mna asi nastala chiba lebo ak chcem poslať (je jedno či klient alebo server)tak to ide ale ak chcem priajať (je jedno či server alebo klient ) musim mať presmerovanie inač sa to straťi

 
Nahoru Odpovědět 4. května 23:45
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

Můžeš specifikovat, jak máte to přesměrování nakonfigurované? Na jaké porty posíláte? Nejlépe se jako amatér-síťař samouk naučím na reálných situacíhc :-)

 
Nahoru Odpovědět 4. května 23:48
Avatar
ronep
Člen
Avatar
ronep:

takže ak server pošle paket na verejnu ip (ip rutru) zo spravnim portom (ktory si nahodne zvolil ruter pri odosielani požiadavky serveru) tak ruter pri obdržani tohto paketu to opeť prepiše na ip cieloveho pc v lan ?
teda ak som to pochopil.

 
Nahoru Odpovědět 4. května 23:55
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

Ano, ale důležité je, že to musí žačít klient - odešle požadavek, a tím se na Routeru vytvoří záznam (který klient kterým portem = tvůj zdrojový port:tvoje IP adresa + na který server kterým portem = zdrojový port zvolený routerem:IP serveru). Pokud server nyní pošle data se zdrojou IP svojí vlastní (to je automatické) a cílovým portem, který je stejný jako zdrojový port náhodně zvolený routerem, Router by to měl přijmout a tobě jako klientovi přeposlat.

 
Nahoru Odpovědět 5. května 0:10
Avatar
ronep
Člen
Avatar
ronep:

pohode tak snať to pochopš :
začina to programom (serverom) ktori počuva na predom zvolenom porte(napr. port 12345);
potom spustim klienta ktory zisti či na danom porte(12345) a ip (napr. 123.123.123.123 ip je takisto predom dana alebo este je možne namiesto ip použit aj dns meno servera) niekto počuva ak nie klient vipise "Error 3007: Server is not available." a ukonči sa , ale ak nie tak mu pošle request o zaradenie do listu online uživatelou a ked nan pride rad alebo cas na odpoved tak na ip z ktorej obdržal request

 
Nahoru Odpovědět 5. května 0:17
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

Ještě dám příklad, ať je jasno: (zkrátím IP adresy i porty):
IP tvého PC = 20. IP routeru (privátní) = 10. IP routeru (veřejná) = 80. IP serveru = 100. Komunikace bude takto:
Tvůj PC --> [IPzdroj=20;IP­cíl=100;PORTzdroj=8645;­PORTcíl=80] - zdroj. port je náhodně zvolený ---> tvůj router.
Tvůj router vytváří v NAT: klient 20 očekává paket s cílovým portem 8645 od serveru 100 se zdojovým portem 80. Router posílá paket s requestem na server ---> [IPzdroj=80;IP­cíl=100;PORTzdroj=2453;­PORTcíl=80] ---> Server. Server odpovídá ---> [IPzdroj=100;IP­cíl=80;PORTzdroj=80;POR­Tcíl=2453] - cílový port je takový, jaký zvolil router ---> Router. Router úspěšně nalezne záznam v NAT, a posílá klientovi ---> [IPzdroj=10;IP­cíl=20;PORTzdroj=80;POR­Tcíl=8645] ---> Klient (tvůj PC). V posledním paketu vidíš, že zdrojový port je ten tebou náhodně zvolený na začátku spojení, a router simuluje server - zdrojový port 80. Klient PC neví o žádné NAT, je to "transparentní" proces.

 
Nahoru Odpovědět 5. května 0:19
Avatar
ronep
Člen
Avatar
ronep:

ten "transparentní" prenos chapem ničo na štyl forward proxy
client -> proxy -> server a naopak. pričom sa proxy tvari ako client pri komunikacii zo serverom a ako server pri komunikacii z klientom

ale ja to ešte stale nechapem . zkade tam maš dve cieľove porty : 2453, 8645 ?

 
Nahoru Odpovědět 5. května 0:30
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na ronep
Lukas C#:

Zkus si přečíst něco o detailním fungování TCP / IP. Já jsem informace hledal z tak 20 zdrojů asi 14 dní, tak nevím jestli se ti chce. No každopádně, cokoliv pošleš je "zabaleno" prvně do Ethernetováho rámce - viz moje články v sekci Sítě, potom do IP paketu (další článek) a potom (nemusí, ale je nejčastější) do TCP paketu - tzn. těm datům se přidají nějaké data velikosti max několika desítek bajtů - to je hlavička paketu. Je Ethernetová hlavička, IP hlavička a i TCP hlavička. V TCP hlavičce je hromada informací pro stabilní přenos, ale teď to, na co jsi se ptal: Jsou tam i 2 16-bitová čísla - cílový a zdrojový port. Cílový port v případě HTTP - dotaz na webové stránky - je 80 (je to stanoveno standartem jako defaultní port HTTP), ale zdrojový port nemá žádný standart. Tvůj PC ho ale musí do toho odesílaného paketu dát - port vybere náhodně. Kdybychom neuvažovali NAT, tak server pošle odpověď se zdrojovým portem 80 a cílovým portem takovým, jakým vygeneroval tvůj PC.

 
Nahoru Odpovědět  +1 5. května 7:45
Avatar
David Novák
Tým ITnetwork
Avatar
Nahoru Odpovědět 6. května 19:18
Chyba je mezi klávesnicí a židlí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 22 zpráv z 22.