Mwambiri, pali mitundu iwiri ikuluikulu ya zomangamanga zama network: peer-to-peer ndi kasitomala-server. Muzomangamanga za anzawo (p2p), deta imasamutsidwa pakati pa osewera aliwonse olumikizidwa, pomwe mumapangidwe a seva ya kasitomala, deta imasamutsidwa pakati pa osewera ndi seva.
Ngakhale mamangidwe a anzawo akugwiritsidwabe ntchito m'masewera ena, kasitomala-seva ndiye muyezo: ndiyosavuta kuyigwiritsa ntchito, imafuna m'lifupi mwake, ndipo imapangitsa kukhala kosavuta kuteteza motsutsana ndi kubera. Chifukwa chake, mu phunziro ili tiwona kwambiri kamangidwe ka kasitomala-seva.
Makamaka, timakhudzidwa kwambiri ndi ma seva ovomerezeka: m'makina otere, seva imakhala yolondola nthawi zonse. Mwachitsanzo, ngati wosewera akuganiza kuti ali pamagulu (10, 5), ndipo seva imamuuza kuti ali pa (5, 3), ndiye kuti kasitomala ayenera kusintha malo ake ndi omwe adanenedwa ndi seva, osati zoipa. mosemphanitsa. Kugwiritsa ntchito ma seva ovomerezeka kumapangitsa kuti zikhale zosavuta kuzindikira omwe akubera.
Makina amasewera pa intaneti ali ndi zigawo zitatu zazikulu:
Transport protocol: momwe deta imasamutsidwira pakati pa makasitomala ndi seva.
Protocol yogwiritsira ntchito: zomwe zimatumizidwa kuchokera kwa makasitomala kupita ku seva komanso kuchokera ku seva kupita kwa makasitomala ndi mtundu wanji.
Mfundo yogwiritsira ntchito: momwe deta yosamutsira imagwiritsidwira ntchito kukonzanso mkhalidwe wa makasitomala ndi seva.
Ndikofunika kwambiri kumvetsetsa udindo wa gawo lirilonse ndi zovuta zomwe zimagwirizanitsidwa nazo.
Transport protocol
Gawo loyamba ndikusankha protocol yonyamula deta pakati pa seva ndi makasitomala. Pali ma protocol awiri apaintaneti a izi: TCP ΠΈ UDP. Koma mutha kupanga njira yanu yoyendera potengera imodzi mwazo kapena kugwiritsa ntchito laibulale yomwe imawagwiritsa ntchito.
Kuyerekeza kwa TCP ndi UDP
Zonse za TCP ndi UDP zimachokera ku IP. IP imalola kuti paketi itumizidwe kuchokera ku gwero kupita kwa wolandira, koma sizikutsimikizira kuti paketi yotumizidwayo idzafika kwa wolandirayo posachedwa, kuti idzafika kamodzi, komanso kuti mndandanda wa paketi udzafika molondola. dongosolo. Komanso, paketi ikhoza kukhala ndi deta yochepa, yoperekedwa ndi mtengo MTU.
UDP ndi gawo lochepa chabe pamwamba pa IP. Choncho, ili ndi malire ofanana. Mosiyana ndi izi, TCP ili ndi zinthu zambiri. Amapereka kulumikizana kodalirika, mwadongosolo pakati pa mfundo ziwiri ndikuwunika zolakwika. Chifukwa chake, TCP ndiyosavuta kwambiri ndipo imagwiritsidwa ntchito pama protocol ena ambiri, mwachitsanzo. HTTP, FTP ΠΈ SMTP. Koma zinthu zonsezi zimabwera pamtengo wake: kuchedwa.
Ndizovuta pang'ono. Ngakhale TCP ili pafupifupi yocheperako pamakina amasewera pamasewera, imatha kugwira ntchito bwino pamasewera anu enieni ndikukupulumutsirani nthawi yofunikira. Mwachitsanzo, kuchedwa sikungakhale vuto pamasewera otembenukira kapena masewera omwe atha kuseweredwa pamanetiweki a LAN, pomwe kutayika kwa paketi ndi kutsika kumakhala kotsika kwambiri kuposa pa intaneti.
Masewera ambiri opambana, kuphatikiza World of Warcraft, Minecraft ndi Terraria, amagwiritsa ntchito TCP. Komabe, ma FPS ambiri amagwiritsa ntchito ma protocol awo a UDP, ndiye tikambirana zambiri pansipa.
Osakulitsa kwambiri. Ngati simuli katswiri wapaintaneti ndipo simukudziwa ngati mukufuna njira yoyendera yochokera ku UDP, mutha kuyamba ndi TCP kapena laibulale yomwe imapereka kudalirika, ndikuyesa ndikuyesa magwiridwe antchito. Ngati mavuto abuka ndipo muli ndi chidaliro kuti chifukwa chake ndi protocol yamayendedwe, ndiye kuti ikhoza kukhala nthawi yopangira njira yanu yoyendera.
Pamapeto pa gawo ili, ndikupangira kuti muwerenge Chiyambi cha Multiplayer Game Programming yolembedwa ndi Brian Hook, yomwe ili ndi nkhani zambiri zomwe zafotokozedwa pano.
Protocol yogwiritsira ntchito
Tsopano kuti titha kusinthanitsa deta pakati pa makasitomala ndi seva, tiyenera kusankha deta yomwe tingasamutsire komanso momwe tingasinthire.
Chiwembu chapamwamba ndi chakuti makasitomala amatumiza zolowetsa kapena zochita ku seva, ndipo seva imatumiza masewera omwe alipo kwa makasitomala.
Seva imatumiza osati dziko lonse, koma dziko losefedwa ndi mabungwe omwe ali pafupi ndi wosewera mpira. Amachita zimenezi pa zifukwa zitatu. Choyamba, mkhalidwe wathunthu ukhoza kukhala waukulu kwambiri kuti usafalikire pafupipafupi. Kachiwiri, makasitomala amakhudzidwa kwambiri ndi zowonera komanso zomvera, chifukwa malingaliro ambiri amasewera amafanizidwa pa seva yamasewera. Chachitatu, mβmasewera ena wosewera mpira safunikira kudziwa zambiri, mwachitsanzo, malo a mdani kumbali ina ya mapu, apo ayi akhoza kununkhiza mapaketi ndi kudziwa komwe angasunthire kuti amuphe.
Kuchuluka kwa data yomwe imasamutsidwa pakati pa makasitomala ndi seva imachepetsedwa ndi bandwidth ya njira. Kuphatikizika kwa data kumakupatsani mwayi wosamutsa zambiri pazithunzi zilizonse, kuwonjezera kuchuluka kwa zosintha, kapena kungochepetsa zomwe mukufuna.
Kupaka pang'ono
Njira yoyamba ndikulongedza pang'ono. Zimaphatikizapo kugwiritsa ntchito ndendende kuchuluka kwa ma bits omwe ndi ofunikira kufotokoza mtengo womwe mukufuna. Mwachitsanzo, ngati muli ndi enum yomwe imatha kukhala ndi ma 16 osiyanasiyana, ndiye kuti m'malo mwa baiti yonse (8 bits), mutha kugwiritsa ntchito ma bits anayi okha.
Glenn Fiedler akufotokoza momwe angagwiritsire ntchito izi mu gawo lachiwiri la nkhaniyi Phukusi Lowerenga ndi Kulemba.
Kulongedza pang'ono kumagwira ntchito bwino makamaka ndi zitsanzo, zomwe zidzakhala mutu wa gawo lotsatira.
Nawa, mwa lingaliro langa, pali ma algorithms atatu osangalatsa kwambiri omwe muyenera kudziwa:
Huffman kodi ndi code yopangidwa kale, yomwe imathamanga kwambiri ndipo imatha kupanga zotsatira zabwino. Idagwiritsidwa ntchito kupondereza mapaketi mu injini yapaintaneti ya Quake3.
zlib ndi wamba-cholinga psinjika aligorivimu kuti samawonjezera kuchuluka kwa deta. Mukuwona bwanji? apa, wakhala akugwiritsidwa ntchito zosiyanasiyana. Zitha kukhala zosafunikira pakukonzanso mayiko. Koma zitha kukhala zothandiza ngati mukufuna kutumiza katundu, zolemba zazitali kapena malo kwa makasitomala kuchokera pa seva.
Kukopera kutalika kwake - Ichi mwina ndi njira yosavuta yoponderezera, koma ndiyothandiza kwambiri pamitundu ina ya data, ndipo ingagwiritsidwe ntchito ngati sitepe yokonzedweratu pamaso pa zlib. Ndiwoyenera kwambiri kupondereza mtunda wopangidwa ndi matailosi kapena ma voxel momwe zinthu zambiri zoyandikana zimabwerezedwa.
Delta compression
Njira yomaliza yopondereza ndi delta compression. Zili ndi mfundo yakuti kusiyana kokha pakati pa masewera omwe alipo panopa ndi dziko lomaliza lolandiridwa ndi kasitomala amafalitsidwa.
Inagwiritsidwa ntchito koyamba mu injini ya Quake3 network. Nazi nkhani ziwiri zofotokoza momwe mungagwiritsire ntchito:
Tsopano titha kusintha dziko mwa kasitomala, koma zitha kukumana ndi zovuta za latency. Wosewerayo, akamaliza kulowetsamo, akuyenera kudikirira kuti masewerawa asinthe kuchokera pa seva kuti awone zomwe zidakhudza dziko lapansi.
Komanso, pakati pa zosintha ziwiri za boma, dziko lapansi silimakhazikika. Ngati chiwerengero cha kusintha kwa boma ndi chochepa, ndiye kuti mayendedwe adzakhala ovuta kwambiri.
Pali njira zingapo zochepetsera zovuta za vutoli, ndipo ndiziphimba mu gawo lotsatira.
Njira yoyamba ndiyo kugwiritsa ntchito zotsatira zolowetsa mwachindunji popanda kuyembekezera yankho kuchokera kwa seva. Amatchedwa kasitomala-mbali kulosera. Komabe, kasitomala akalandira zosintha kuchokera ku seva, ziyenera kutsimikizira kuti zomwe akunenazo zinali zolondola. Ngati sizili choncho, ndiye kuti amangofunika kusintha dziko lake malinga ndi zomwe adalandira kuchokera kwa seva, chifukwa seva ndi yolamulira. Njira imeneyi idagwiritsidwa ntchito koyamba pa Quake. Mukhoza kuwerenga zambiri za izo m'nkhani Ndemanga ya Quake Engine code Fabien Sanglars [kumasulira pa Habre].
Njira yachiwiri imagwiritsidwa ntchito kuwongolera kayendetsedwe kazinthu zina pakati pa zosintha ziwiri za boma. Pali njira ziwiri zothetsera vutoli: kutanthauzira ndi extrapolation. Pankhani ya kutanthauzira, zigawo ziwiri zomaliza zimatengedwa ndipo kusintha kuchokera kumodzi kupita ku imzake kukuwonetsedwa. Zoyipa zake ndikuti zimayambitsa kuchedwa pang'ono chifukwa kasitomala amawona zomwe zidachitika m'mbuyomu. Extrapolation ndi za kulosera kumene mabungwe ayenera kukhala tsopano kutengera dziko lomaliza kulandiridwa ndi kasitomala. Choyipa chake ndi chakuti ngati bungwe likusintha kwathunthu njira yoyendetsera, ndiye kuti padzakhala cholakwika chachikulu pakati pa zoneneratu ndi malo enieni.
Njira yaposachedwa kwambiri, yothandiza kwambiri mu FPS ndi chipukuta misozi. Pogwiritsa ntchito kubweza kwa lag, seva imaganizira kuchedwa kwa kasitomala pamene ikuwombera pa chandamale. Mwachitsanzo, ngati wosewera mpira wajambula pamutu pa zenera lake, koma kwenikweni cholinga chake chinali pamalo ena chifukwa chakuchedwa, ndiye kuti sikungakhale chilungamo kukana wosewerayo ufulu wopha chifukwa chakuchedwa. Chifukwa chake, seva imabwezeretsanso nthawi kubwerera pomwe wosewera adawombera kuti ayese zomwe wosewerayo adawona pazenera lawo ndikuwunika ngati kugundana pakati pa kuwombera kwawo ndi zomwe akufuna.
Glenn Fiedler (monga nthawi zonse!) adalemba nkhani mu 2004 Network Physics (2004), momwe adayika maziko olumikizirana mafanizidwe a fiziki pakati pa seva ndi kasitomala. Mu 2014 adalemba nkhani zatsopano Networking Physics, yomwe inafotokoza njira zina zogwirizanitsira mafanizidwe a physics.
Glenn Fiedler's Blog - blog yake yonse ndiyofunika kuwerenga, pali nkhani zambiri zabwino kumeneko. ndi Zolemba zonse pa matekinoloje a netiweki zimasonkhanitsidwa.
Masewera a Masewera Odabwitsa Wolemba M. Fatih MAR ndi mndandanda wankhani ndi makanema pa injini zamasewera apa intaneti.