Dotaz na pridelovani portu v IP

Dalibor Toman dtoman na fortech.cz
Pondělí Listopad 13 13:03:15 CET 2000


>Priznam se, ze jsem se do fd2 co mi vraci accept nedival, ale mel jsem
>za to, ze data na server uz jdou fyzicky pres jiny port na strane
>serveru (resp. ze read (fd2) na serveru

prez jiny socket ano, ale vetsina jeho parametru jsou stejna jako socket
puvodni (ten co visi v listen() ). Kazda napoveda k acceptu() by to mela
obsahovat..

>jiz data necte z portu, na ktery
>se klient prihlasoval). Mel jsem za to, ze pokud mam neco ala:

>while (1)
>{
>  fd2=accept(srv2)
>  if (fork()
>  {
>    //syn
>    //zpracovani
>  }
>}
>
>pak v synovi zpracovavam request a rodic muze dostat behem teto doby
>obslouzit dalsi zadost na well-known port (coz ma za nasledek 2. syna).

to muze - ale vsichni synove budou mit svuj lokalni konec spojeni na tom
samem portu (a IP adrese) jako rodic.
Kdyby se TCP/IP chovalo jak predpokladas ty pak by to znamenalo, ze by
dochazelo k teto situaci: klient se pokusi pripojit na port napr 25. Spojeni
se navaze nacez klient zjisti, ze komunikuje s portem 1025 !? ...

>A ja jsem si prave myslel, ze synove 'lokalne' se serverem jiz
>komunikuji (implicitne) na jinem portu (dostanou ho prave ve fd2) nez
>fd.

ne. Proto muzes na firewalu povolit napr jen SSH port (22) a vsechno ostatni
zakazat. Presto SSH kanal pojede bez problemu (samozrejme je treba dat pozor
na souvisejici veci , jako je moznost resolvingu v DNS atd).

D. Toman




Další informace o konferenci Linux