Konference: Počítač SHARP MZ-800 a emulátory
Od: | Radek Suk |
Datum: | 19.10.2013 23:25 |
Předmět: | Re: Stare projekty (Unikarta) |
Martine preci vis co mne zivi :-), tak mi ver co rikam. Jinak bezny router se chova uplne stejne k TCP nebo UDP. Je to zajimava problematika a muzu o tom psat nekonecne dlouho.
Jinak funguje to tak ze pri prekladu NAT si router zapamatuje v prekladove tabulce z jake ip adresy a portu prisel pozadavek a vybere mu jinou ip zdrojovou adresu (ip vnejsi sitove karty) a i pripadne jiny volny port a poslete na cilovou ip adresu a port. Az prijde odpoved tak podle teto tabulky se presne vi kam se to ma poslat do vnitrni site. Vetsina systemu ceka na UDP odpoved do 3 minut a pak automaticky "maze" tento zaznam. Proto tak musi probihat nejaka komunikace, jinak se ti zavre spojeni. Ale uplne stejne to dela TCP.
Proto take neni problem dat za sebe treba 5 routeru a stale vse funguje.
Uznavam ze komunikace pres TCP 80 nebo UDP 53 je vzdy zcela bezproblemova, protoze ji zadny provider neblokuje. A ze jinou komunikaci muze za urcitych podminek provider blokovat ale neni to uplne spravne.
Jinak protokol UDP nebo TCP jsou jen dva protokoly z 256 moznych a lepsi routery znaji jeste jine protokoly ale ty nejsou urcene pro koncove uzivatele nebo nejsou tak casto pouzivane.
UDP je pouziva napr. pro VoIP nebo pro vzdalene zapnuti pocitace pres Magic packet. Predstav si program ze si ze Sharpa zapnes pocitac v praci :-).
Jinak kdo ma doma IPTV televizi tak vetsina paketu v domacnosti je prave UDP :-) !
Radek
Nechci se poustet do vetsich debat, zase tak kovany v tom nejsem, rozumi tomu kolegove v praci, ale DNS Ti pres router s NAT projde, protoze ten tomu DNS protokolu rozumi a vi, co ma cekat, ale jak vi, ze ma prijit UDP paket zpet na nejakou prioprietarni komunikaci z Sharpa. Zevnitr ven to UDP projde, ale musi se Ti vratit zpet a to jde jen, pokud router zna protokol, ne?
Martin
From: Radek Suk (sharpemu tu byla ta zakroucena vec pandora.cz) [mailto:suk tu byla ta zakroucena vec softex.cz]
Sent: Saturday, October 19, 2013 9:50 PM
To: Konference "Počítač SHARP MZ-800 a emulátory"
Subject: Re: Stare projekty (Unikarta)
Importance: Low
Martine UDP zcela bezproblemove projde pres NAT. Take neni problem aby to proslo pres Firewall. Take s verejnou a neverejnou ip adresou to funguje stejne jako u TCP. U neverejne ip musi
vzdy zahajit komunikaci strana co ma neverejnou ip adresu a to plati jak pro TCP tak pro UDP. Existuji vyjimky ale ty nejsou bezne - pak musi byt nastaveno napr. mapovani portu.
Zakladni a hlavni rozdil je v tom ze TCP zajisti na 100% doruceni paketu a i poradi doruceni. UDP to posle ale negarantuje ze kdyz se to na ceste nekde potrati tak se to posle znovu. Proste UDP si
musi samo hlidat poradi a pripadne chyby na ceste resit. Takze paradoxne se to lepe implementuje a na trivialni veci jako je treba ten program "had" pro 6 lidi je to mozna lepsi.
Umim si predstavit program co posle na tvuj server UPD paket na port 2222. Tvuj server ho zduplikuje a posle ho vsem ostatnim. Takto ostatni vedi co kdo stisknul a muzou si vypocitat pozici hadu.
Samozrejme ze by to slo udelat pres TCP.
Jinak nezapomente ze jeden zakladni protokol a to DNS bezi na UDP port 53 a kdyz nebude fungovat tak si neprelozite jmeno na ip adresu!
Radek
Dne 19.10.2013 20:38, Martin Lukasek (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
Ahoj,
parada, o necem podobnem relativne jednoduchem jmse mluvili i s Bohousem a klukama na Bytefestu. Otazka zni, jestli ma cenu vubec psat to UDP, protoze neprojde pres NAT, a malokdo bude mit na Sharpu verejnou IP ;-) Moc prilezitosti na setkani taky neni, kde bychom to vyuzili. Takze ja myslim, ze TCP staci. Ja bych k tomu pak treba napsal nejaky server, ktery by umoznil jednoduche pripojeni vice klientu soucasne a vsechno posilal vsem. Strcil bych to pak na pevnou IP. Takto by se dalo zagamesit sitove nabo zachatovat apod.
Je nekde ta nova verze Ushellu?
Krasny vecer
Martin
From: Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) [mailto:ordoz tu byla ta zakroucena vec ordoz.com]
Sent: Saturday, October 19, 2013 12:25 AM
To: Konference "Počítač SHARP MZ-800 a emulátory"
Subject: Stare projekty (Unikarta)
Importance: Low
Ahoj,
po par mesicich jsem se opet dostal k Unikarte. Chvili jsem blbnul s webserverem, ve kterem mi bezela aplikace pro spravu Unikarty, ale v zapeti jsem jej zavrhnul, protoze pameti nemame nazbyt. Proto jsem akorat priohnul stavajici USARTshell tak, aby jej bylo mozne prepnout bud na RS232, nebo na TCP a prejmenoval jsem jej na Ushell :)
Uz mam i jakousi ucelenejsi predstavu o tom jak by melo vypadat API.
Fyzicka vrstva je na sharpu dle meho nazoru zbytecna. Omezil bych se asi jen na funkci, ktera precte z registru ENC29J60 stav linky up/down.
Aplikacni vrstva - na tu tam nemame uz prilis mnoho pameti. Pokud nejaka bude nadbyvat, tak tam chci dat dns resolver a dhcp klient ... Kdyz se mi podari carovat s volnym mistem, tak treba i http a smtp klient, atp...
Samotne API pro praci se siti bude realizovano v duchu zjednodusenych BSD sockets. Bude mozne otevrit omezene mnozstvi UDP, nebo TCP socketu. Dale bude mozne otevrit anonymni socket, ktery bude naslouchat na urcenem TCP portu a umozni Sharpu zareagovat na prichozi TCP spojeni.
( U protokolu UDP neni v tuto chvili zadny anonymni listening mozny. Mam predstavu jak to tam dopsat, nicmene potrebuje nekdo psat serverovou UDP aplikaci?)
S otevrenym socketem bude mozne pracovat jako se souborem. Pri zapisu (odesilani packetu) jsme vsak limitovani pameti - Unikarta se musi starat i o retransmit v pripade nedoruceni packetu. K tomuto ucelu bude zrejme potreba vymyslet vice odesilacich rezimu, ktere budou odesilat data jak automaticky po naplneni bufferu, tak i manualne - dle potreby. Nasledne si bude muset Sharp pockat na to az od protistrany prijde ACK - potvrzeni o prijeti packetu. Do te doby se nebude smet ze Sharpa na odesilaci buffer vubec sahat (pokud tedy pro konfort neobetujeme vice pameti tak, aby velikost bufferu prevysovala max velikost odesilaneho packetu).
Bude tam tedy muset existovat nejaky transportni semafor. K tomuto ucelu bude samozrejme fajn mit moznost naprogramovat si interrupt system v Unikarte tak, aby nas zatahal za rukav jakmile bude mit opet volno.
Mam uz i jakousi predstavu o tom, ze by jsme tam mohli mit nejaky dynamicky buffer, jehoz rozlozeni by si kazdy mohl nastavit dle vlastnich preferenci a ovlivnovat tak potom cinnost jednotlivych periferii. Jen aby z toho pak nevzniknula pouze komplikovana programatorska hricka :)
Dnes jsem tedy kroutil maticky a dotahoval sroubky na Ushellu. Zde je report z prenosu dat Unikarta (SD) -> PC :
# ./a.out tcp:192.168.167.80:23 read sdmgr_cpm.DSK /tmp/sdmgr_cpm.DSK
Unicard - TCP Shell
Sending Reset...
OK:RESET
Sending Read...
READ sdmgr_cpm.DSK
OK:READ sdmgr_cpm.DSK
Receiving FSIZE: 0x000bdf00
Receiving Data.............
OK:CLOSE 0x29a8fa20
*************************
* Size: 777984 B *
* Speed: 29640.87 Bps *
*************************
Tedy cca 230 kbps ...
Michal
---
POZOR! Provoz systému Pandora.cz bude k 30. listopadu 2013 ukončen.
Více informací: http://goo.gl/b99cI
---
POZOR! Provoz systému Pandora.cz bude k 30. listopadu 2013 ukončen.
Více informací: http://goo.gl/b99cI
---
POZOR! Provoz systému Pandora.cz bude k 30. listopadu 2013 ukončen.
Více informací: http://goo.gl/b99cI
---
POZOR! Provoz systému Pandora.cz bude k 30. listopadu 2013 ukončen.
Více informací: http://goo.gl/b99cI
Ostatní příspěvky vlákna:
[2013/1 (17)] [2013/2 (52)] [2013/3 (60)] [2013/4 (68)] [2013/5 (60)] [2013/6 (42)] [2013/7 (9)] [2013/8 (48)] [2013/9 (1)] [2013/10 (40)] [2013/11 (45)]