Kuna tofauti gani kati ya tcp na upd. Itifaki rahisi zaidi ya kuhamisha faili. Bandari za mtandao ni nini

Siku njema, wasomaji wapenzi.
Kwa mahitaji ya wengi, leo ninachapisha kwa ajili yako makala ambayo itakujulisha misingi ya maneno ya msingi. mtandao wa kompyuta, yaani:

  • Itifaki za mtandao - ni majina gani haya ya kutisha na yanatumika kwa nini?
  • UDP, TCP, ICMP, - nini, kwa nini na ni tofauti gani
  • IP-anwani, - kila mtu anayo, lakini sio kila mtu anajua kwanini jambo hili :-)
  • Kinyago cha anwani (subnet)
  • Lango
  • Maneno machache kuhusu meza za kuelekeza
  • Bandari - ni nini hasa?
  • MAC-anwani

Kama hivyo.

Nakala hiyo, nadhani, itakuwa muhimu kwa kila mtu, mchanga na mzee, kwa sababu haina seti nyingi za vitendo au maneno ya kushangaza, isiyoeleweka, lakini kizuizi. lugha inayoweza kufikiwa habari iliyotolewa, ambayo, kwa kiwango cha chini, itakupa ufahamu wa jinsi yote inavyofanya kazi na kwa nini inahitajika. Nenda.

Itifaki za mtandao TCP/IP, NWLink IPX/SPX, NetBEUI

Hebu tuanze na ni nini itifaki ya mtandao na inacholiwa nacho.
Itifaki ya mtandao ni seti ya sheria zinazotekelezwa za programu kwa mawasiliano kati ya kompyuta. Aina ya lugha ambayo kompyuta huzungumza na kusambaza habari. Hapo awali, kompyuta zilikuwa, kwa kusema, lugha nyingi na katika matoleo ya zamani Windows seti nzima ya itifaki ilitumika - TCP/IP, NWLink IPX/SPX, NetBEUI. Sasa tumefikia makubaliano ya jumla, na kiwango kimekuwa matumizi ya itifaki pekee TCP/IP, na kwa hiyo mjadala zaidi utakuwa juu yake.

Wanapozungumza TCP/IP, basi jina hili kwa kawaida lina maana nyingi tofauti... sheria au, tuseme, viwango vinavyowekwa kwa kutumia (au kwa kutumia) itifaki hii. Kwa mfano, kuna sheria ambazo ujumbe hubadilishwa kati yao seva za barua na kuna sheria kulingana na ambayo mtumiaji wa mwisho anapokea barua katika kikasha chake. Kuna sheria za kufanya mikutano ya video na sheria za kuandaa mazungumzo ya "simu" kwenye mtandao. Kwa kweli, hizi hata si kanuni za kweli... Zaidi kama aina ya sarufi, au jambo fulani. Unajua, kwa Kiingereza kuna muundo mmoja wa kuunda mazungumzo, kwa Kifaransa kuna mwingine ... TCP/IP kitu sawa, i.e. kundi fulani la kanuni tofauti za kisarufi huunda itifaki kamili TCP/IP au, kwa usahihi zaidi, Rafu ya itifaki ya TCP/IP.

Itifaki za mtandao UDP, TCP, ICMP

Kama sehemu ya itifaki TCP/IP itifaki zinazotumika kwa usambazaji wa data - TCP Na UDP. Watu wengi pengine wamesikia kwamba kuna bandari kama TCP, hivyo UDP, lakini si kila mtu anajua tofauti ni nini na inahusu nini. Hivyo..

Uhamisho wa data kupitia itifaki TCP(Itifaki ya Udhibiti wa Usambazaji) hutoa uthibitisho wa upokeaji wa habari. "Kweli, wanasema, umeipata? - Umeielewa!" Ikiwa mhusika hatapokea uthibitisho unaohitajika ndani ya muda uliowekwa, data itatumwa tena. Kwa hiyo itifaki TCP zinarejelewa kama itifaki zenye msingi wa unganisho, na UDP(Itifaki ya Datagram ya Mtumiaji) - hapana. UDP hutumika katika hali ambapo hakuna uthibitisho wa mapokezi unaohitajika (kwa mfano, maswali ya DNS au simu ya IP ( mwakilishi mkali ambayo - Skype)). Hiyo ni, tofauti iko mbele ya uthibitisho wa mapokezi. Inaweza kuonekana "Hiyo ndiyo yote!", Lakini katika mazoezi ina jukumu muhimu.

Pia kuna itifaki ICMP(Itifaki ya Ujumbe wa Kudhibiti Mtandao) ambayo hutumika kusambaza data kuhusu vigezo vya mtandao. Inajumuisha aina za kifurushi cha matumizi kama vile ping, umbali usioweza kufikiwa, TTL na kadhalika.

Anwani ya IP ni nini

Kila mtu ana moja, lakini si kila mtu ana wazo la aina gani ya anwani hii na kwa nini haiwezekani kuishi bila hiyo. Mimi nakuambia.

IP-anwani - 32 -x nambari kidogo inayotumika kutambua kompyuta kwenye mtandao. Ni kawaida kuandika anwani katika maadili ya decimal ya kila octet ya nambari hii, kutenganisha maadili yanayotokana na dots. Kwa mfano, 192.168.101.36

IP anwani ni za kipekee, ambayo ina maana kwamba kila kompyuta ina mchanganyiko wake wa nambari, na hawezi kuwa na kompyuta mbili kwenye mtandao na anwani sawa. IP-anwani zinasambazwa serikali kuu, watoa huduma za mtandao hufanya maombi kwa vituo vya kitaifa kulingana na mahitaji yao. Masafa ya anwani yaliyopokelewa na watoa huduma yanasambazwa zaidi kati ya wateja. Wateja, kwa upande wao, wanaweza kufanya kama mtoaji na kusambaza zilizopokelewa IP-anwani kati ya wateja wadogo, nk. Kwa njia hii ya usambazaji IP-anuani mfumo wa kompyuta anajua hasa "eneo" la kompyuta, ambayo ina pekee IP-anwani; - inatosha kwake kutuma data kwa mtandao wa "mmiliki", na mtoaji, kwa upande wake, atachambua marudio na, akijua ni nani sehemu hii ya anwani imepewa, atatuma habari hiyo kwa mmiliki anayefuata. bendi ndogo IP-anwani hadi data ifike kwenye kompyuta lengwa.

Kwa ajili ya ujenzi wa mitandao ya ndani, safu maalum za anwani zinatengwa. Hizi ndizo anwani 10.x.x.x,192.168.x.x, 10.x.x.x, c 172.16.x.x Na 172.31.x.x, 169.254.x.x, wapi chini x- ikimaanisha nambari yoyote kutoka 0 kabla 254 . Pakiti zilizotumwa kutoka anwani maalum, haijatumwa, kwa maneno mengine, hazijatumwa kwa mtandao, na kwa hivyo kompyuta kwenye mitandao tofauti ya ndani inaweza kuwa na anwani zinazofanana kutoka. safu zilizobainishwa. Hiyo ni, katika kampuni LLC " Pembe na kwato"na LLC" Vasya na kampuni"kunaweza kuwa na kompyuta mbili zilizo na anwani 192.168.0.244 , lakini hawawezi, kusema, na anwani 85.144.213.122 , iliyopokelewa kutoka kwa mtoa huduma wa mtandao, kwa sababu Hakuwezi kuwa na mbili zinazofanana kwenye mtandao. IP-anuani. Kutuma habari kutoka kwa kompyuta kama hizo kwa Mtandao na nyuma, programu maalum na vifaa vinatumiwa kuchukua nafasi anwani za mitaa halisi wakati wa kufanya kazi na mtandao. Kwa maneno mengine, data hutumwa kwa Mtandao kutoka kwa halisi IP-anwani, sio kutoka kwa wenyeji. Utaratibu huu hutokea bila kutambuliwa na mtumiaji na huitwa tafsiri ya anwani. Ningependa pia kutaja kwamba ndani ya mtandao huo huo, sema, kampuni, LLC " Pembe na kwato", hakuwezi kuwa na kompyuta mbili zilizo na anwani ya IP ya ndani, i.e., katika mfano hapo juu ilimaanisha kuwa kompyuta moja iliyo na anwani. 192.168.0.244 katika kampuni moja, ya pili na anwani sawa - katika nyingine. Katika kampuni hiyo hiyo kuna kompyuta mbili zilizo na anwani 192.168.0.244 hawatapatana tu.

Je! unataka kujua na uweze kufanya zaidi wewe mwenyewe?

Tunakupa mafunzo katika maeneo yafuatayo: kompyuta, programu, utawala, seva, mitandao, ujenzi wa tovuti, SEO na zaidi. Pata maelezo sasa!

Labda umesikia maneno kama ya nje IP na ya ndani IP, mara kwa mara (IP tuli) na kutofautiana (ya nguvu) IP. Kwa kifupi juu yao:

  • ya nje IP- hii ni sawa kabisa IP, ambayo hutolewa kwako na mtoa huduma, i.e. Anwani yako ya kipekee kwenye Mtandao, kwa mfano, - 85.144.24.122
  • mambo ya ndani IP, ni ya ndani IP, i.e. Wako IP V mtandao wa ndani, Kwa mfano, - 192.168.1.3
  • tuli IP-Hii IP, ambayo haibadilika kwa kila uhusiano, i.e. umekabidhiwa kwa uthabiti na milele
  • yenye nguvu IP, inaelea IP-anwani inayobadilika kwa kila muunganisho

Aina yako IP(tuli au nguvu) inategemea mipangilio ya mtoa huduma.

Kinyago cha anwani ni nini (subnet)

Dhana ya subnet ilianzishwa ili tuweze kuangazia sehemu IP- anwani za shirika moja, sehemu ya nyingine, nk. Subnet ni anuwai ya anwani za IP ambazo zinachukuliwa kuwa za mtandao sawa wa ndani. Wakati wa kufanya kazi kwenye mtandao wa ndani, habari hutumwa moja kwa moja kwa mpokeaji. Ikiwa data imekusudiwa kwa kompyuta zilizo na anwani ya IP ambayo sio ya mtandao wa ndani, basi sheria maalum hutumiwa kwake ili kuhesabu njia ya kusambaza kutoka mtandao mmoja hadi mwingine.

Mask ni kigezo kinachoiambia programu ni kompyuta ngapi zimeunganishwa kundi hili(subnet). Mask ya anwani ina muundo sawa na anwani ya IP yenyewe: ni seti ya vikundi vinne vya nambari, ambayo kila moja inaweza kuwa katika safu kutoka 0 hadi. 255 . Wakati huo huo, kuliko thamani ndogo masks, hizo kompyuta zaidi kuunganishwa katika subnet hii. Kwa mitandao makampuni madogo mask kawaida inaonekana kama 255.255.255.x(kwa mfano, 255.255.255.224). Mask ya mtandao imepewa kompyuta pamoja na anwani ya IP. Kwa hiyo, kwa mfano, mtandao 192.168.0.0 na mask 255.255.255.0 inaweza kuwa na kompyuta zilizo na anwani kutoka 192.168.0.1 kabla 192.168.254 192.168.0.0 na mask 255.255.255.128 inaruhusu anwani kutoka 192.168.0.1 kabla 192.168.0.127 . Nadhani maana iko wazi. Kama sheria, mitandao iliyo na idadi ndogo ya kompyuta hutumiwa na watoa huduma ili kuhifadhi anwani za IP. Kwa mfano, mteja anaweza kupewa anwani yenye barakoa 255.255.255.252 . Subnet hii ina kompyuta mbili pekee.

Baada ya kompyuta kupokea anwani ya IP na kujua thamani ya mask ya subnet, programu inaweza kuanza kufanya kazi katika subnet hii ya ndani. Walakini, ili kubadilishana habari na kompyuta zingine mtandao wa kimataifa, unahitaji kujua sheria ambapo kutuma habari kwa mtandao wa nje. Kwa kusudi hili, tabia kama vile anwani ya Gateway hutumiwa.

Gateway ni nini?

Lango ni kifaa (kompyuta au kipanga njia) ambacho husambaza habari kati ya subneti tofauti za IP. Ikiwa programu itaamua (kwa IP na barakoa) kwamba anwani lengwa si sehemu ya subnet ya ndani, basi hutuma data hii kwa kifaa kinachofanya kazi kama lango. Katika mipangilio ya itifaki, taja anwani ya IP ya kifaa kama hicho.

Kufanya kazi tu katika mtandao wa ndani, lango haliwezi kutajwa.

Kwa watumiaji binafsi kuunganisha kwenye mtandao, au kwa biashara ndogo ndogo kuwa na kituo kimoja cha uunganisho, mfumo unapaswa kuwa na anwani moja tu ya lango - hii ni anwani ya kifaa ambacho kina uhusiano wa Internet. Ikiwa kuna njia nyingi, kutakuwa na lango nyingi. Katika kesi hii, meza ya uelekezaji hutumiwa kuamua njia ya data.

Jedwali za kuelekeza ni nini

Na kwa hivyo tuliwafikia kwa urahisi. Na hivyo.. Hizi ni meza za aina gani?

Shirika au mtumiaji anaweza kuwa na sehemu nyingi za muunganisho wa Mtandao (kwa mfano, njia chelezo ikiwa kitu kitaenda vibaya na mtoa huduma wa kwanza, lakini mtandao bado ni muhimu sana) au ina kadhaa IP-mitandao. Katika kesi hii, ili mfumo ujue ni njia gani (kupitia lango gani) kutuma hii au habari hiyo, meza za uelekezaji hutumiwa. Majedwali ya uelekezaji kwa kila lango yanaonyesha subneti hizo za Mtandao ambazo habari inapaswa kupitishwa kupitia kwao. Katika kesi hii, kwa lango kadhaa unaweza kuweka safu sawa, lakini kwa kwa bei tofauti uwasilishaji wa data: kwa mfano, habari itatumwa kupitia chaneli ambayo ina mengi zaidi gharama nafuu, na ikiwa itashindwa kwa sababu moja au nyingine, muunganisho unaofuata wa bei nafuu zaidi utatumika kiatomati.

Bandari za mtandao ni nini

Wakati wa kuhamisha data isipokuwa IP-anwani za mtumaji na mpokeaji, pakiti ya habari ina nambari za bandari. Mfano: 192.168.1.1: 80 , - V kwa kesi hii 80 - hii ndio nambari ya bandari. Lango ni nambari inayotumiwa wakati wa kupokea na kusambaza data ili kutambua mchakato (mpango) ambao unapaswa kuchakata data. Kwa hivyo, ikiwa pakiti inatumwa kwa 80 bandari, hii inaonyesha kuwa habari imekusudiwa kwa seva HTTP.

Nambari za bandari na 1 th kabla 1023 -th hupewa programu maalum (kinachojulikana bandari zinazojulikana). Bandari zilizo na nambari 1024 -65 535 inaweza kutumika katika programu maendeleo mwenyewe. Ambapo migogoro inayowezekana lazima iamuliwe na programu zenyewe kwa kuchagua bandari ya bure. Kwa maneno mengine, bandari zitasambazwa kwa nguvu: inawezekana kwamba wakati ujao programu itaanza, itachagua thamani tofauti ya bandari, isipokuwa, bila shaka, wewe huweka bandari kwa mikono kupitia mipangilio.

Anwani ya MAC ni nini

Ukweli ni kwamba pakiti zilizotumwa kwenye mtandao zinashughulikiwa kwa kompyuta si kwa majina yao na si kwa IP-anwani. Pakiti imekusudiwa kwa kifaa kilicho na anwani maalum, inayoitwa MAC-anwani.

Anwani ya MAC- hii ni anwani ya kipekee kifaa cha mtandao, ambayo imejumuishwa ndani yake na mtengenezaji wa vifaa, i.e. hii ni aina ya muhuri nambari yako kadi ya mtandao. Kipindi cha kwanza MAC-anwani ni kitambulisho cha mtengenezaji, ya pili ni nambari ya kipekee ya kifaa hiki.

Kwa kawaida MAC-anwani wakati mwingine inahitajika kwa kitambulisho, tuseme, na mtoa huduma (ikiwa mtoa huduma anatumia anwani ya poppy inayofunga badala ya nenosiri la kuingia) au wakati wa kusanidi kipanga njia.

Mahali pa kuona mipangilio yote ya mtandao

Karibu nilisahau kusema maneno machache kuhusu wapi unaweza kuangalia na kubadilisha haya yote.

Kwenye chaneli na kiwango cha mtandao itifaki Pakiti ya TCP/IP, ambayo inahusu utaratibu wa kimsingi wa kuhamisha vitalu vya data kati ya nchi na kati ya mitandao, ndiyo mambo ya msingi TCP/IP. Wanatumia mrundikano wa itifaki, lakini hawatumiwi moja kwa moja kwenye programu zinazoendeshwa kwenye itifaki TCP/IP. Katika makala haya, tutaangalia itifaki mbili zinazotumiwa na programu: Itifaki ya Datagram ya Mtumiaji (UDP) na Itifaki ya Kudhibiti Usambazaji (TCP).

Itifaki ya Datagram ya Mtumiaji
Itifaki ya Datagram ya Mtumiaji ni itifaki rahisi sana. Kama IP, ni itifaki ya kuaminika isiyo na muunganisho. Huhitaji kuanzisha muunganisho kwa seva pangishi ili kubadilishana nayo data kwa kutumia UDP, na hakuna utaratibu wa kuhakikisha data iliyotumwa.
Kizuizi cha data inayopitishwa kwa kutumia UDP inayoitwa datagram. UDP huongeza sehemu nne za vichwa 16 (baiti 8) kwa data iliyotumwa. Sehemu hizi ni: urefu wa shamba, uwanja cheki, pamoja na chanzo na nambari ya bandari lengwa. "Bandari", katika muktadha huu, inawakilisha programu bandari, si bandari ya maunzi.
Dhana ya nambari ya bandari ni ya kawaida kwa wote wawili UDP na TCP. Nambari za mlango huamua ni moduli ipi ya itifaki inayopeleka mbele (au kupokea) data. Itifaki nyingi zina bandari za kawaida, ambayo hutumiwa kwa kawaida kwa hili. Kwa mfano, itifaki ya Telnet kwa kawaida hutumia bandari 23. Barua rahisi Itifaki ya Uhamisho(SMTP), hutumia bandari 25. Matumizi vyumba vya kawaida bandari huruhusu wateja kuwasiliana na seva bila kabla ya ufungaji bandari gani ya kutumia.
Mlango na nambari ya itifaki katika sehemu ya kichwa IP rudufu kwa kiasi fulani, ingawa sehemu za itifaki hazipatikani kwa itifaki kubwa zaidi ngazi ya juu. IP hutumia uga wa itifaki kubainisha ni wapi data inapaswa kutumwa UDP au TCP moduli. UDP au TCP tumia nambari ya mlango kuamua ni itifaki gani kiwango cha maombi, lazima ipokee data.
Licha ya, UDP si ya kuaminika, bado uchaguzi unaofaa kwa maombi mengi. Inatumiwa na programu za wakati halisi kama vile utiririshaji wa sauti na video ambapo, ikiwa data imepotea, ni bora kufanya bila hiyo kuliko kutuma tena kwa utaratibu. Pia hutumiwa na itifaki kama vile Itifaki Rahisi ya Usimamizi wa Mtandao (SNMP).
Tangaza
UDP Inafaa kwa utangazaji wa habari kwa sababu hauhitaji muunganisho wazi wa mawasiliano. Malengo tangaza ujumbe kuamuliwa na mtumaji, kwa anwani ya IP lengwa iliyobainishwa. UDP datagramu zilizo na anwani ya IP lengwa zote ni za binary 255.255.255.255) na zitapokelewa na kila mpangishi kwenye mtandao wa ndani. Jihadharini na neno la ndani: datagrams zilizo na anwani kama hiyo hazitakubaliwa na router kwenye mtandao.
Uhamisho unaweza kutumwa kwa mitandao maalum. Karatasi ya data ya UDP kutoka kwa seva pangishi na sehemu ndogo za anwani ya IP iliyowekwa kama mfumo wa jozi hutangazwa kwa seva pangishi zote kwenye subneti zote za mtandao zinazolingana na sehemu safi ya anwani ya IP. Ikiwa mwisho wa upokezi pekee (kwa maneno mengine, biti zote ambazo ni sufuri kwenye kinyago cha subnet) kimewekwa kwa mfumo wa jozi, basi utangazaji unazuiwa kwa wapangishi wote katika subnet inayolingana na anwani nyingine.
Multicast hutumiwa kusambaza data kati ya kundi la wapangishi ambao wameonyesha hamu ya kuipokea. Multicast UDP datagram ina anwani lengwa ambapo biti nne za kwanza ni 1110, ikitoa anwani katika masafa 224.xxx hadi 239.xxx Biti zilizosalia za anwani hutumika kuteua kikundi cha utangazaji anuwai. Ni zaidi kama redio au kituo cha televisheni. Kwa hiyo, kwa mfano, 224.0.1.1 hutumiwa kwa itifaki ya NTP. Kama TCP/IP programu zinataka kupokea ujumbe wa utumaji anuwai, lazima wajiunge na kikundi kinachofaa cha utangazaji anuwai, ambacho hufanya kwa kupitisha anwani ya kikundi kwenye safu ya itifaki.
Watangazaji kimsingi huchuja upitishaji. Multicaster haizingatii ujumbe mahususi kwa kila mpangishi anayejiunga na kikundi. Badala yake, ujumbe hutangazwa, na viendeshaji kwenye kila seva pangishi huamua iwapo watazipuuza au kupitisha yaliyomo kwenye rafu ya itifaki.
Hii ina maana kwamba jumbe za upeperushaji anuwai lazima zitangazwe kwenye Mtandao mzima, kwa kuwa watangazaji wengi hawajui ni wapangishi gani wanataka kupokea ujumbe. Kwa bahati nzuri, hii sio lazima. IP hutumia itifaki inayoitwa Itifaki ya Usimamizi wa Kikundi cha Mtandao (IGMP) kuwaambia wapangaji ni wapi wapangishi wanataka kupokea ujumbe wa vikundi vya utumaji anuwai ili ujumbe utumwe pale tu zinapohitajika.
Itifaki ya Udhibiti wa Usambazaji
Itifaki ya Udhibiti wa Usambazaji ni itifaki safu ya usafiri na hutumiwa na programu nyingi za Mtandao kama vile Telnet, FTP na HTTP. Hii ni itifaki inayolenga muunganisho. Hii ina maana kwamba kompyuta mbili - moja mteja, nyingine seva - zinahitaji kuanzisha uhusiano kati yao kabla ya data kuhamishwa kati yao.
TCP hutoa kuegemea. Maombi ambayo hutumia TCP inajua kuwa inatuma data iliyopokelewa upande mwingine, na kwamba iliipokea kwa usahihi. TCP hutumia hundi kwenye vichwa na data. Wakati wa kupokea data, TCP hutuma uthibitisho kwa mtumaji. Ikiwa mtumaji hatapokea uthibitisho ndani kipindi fulani wakati, data inatumwa tena.
TCP inajumuisha njia za kuhakikisha data inafika kwa mpangilio wa kinyume katika mpangilio uliotumwa. Pia hutekeleza udhibiti wa mtiririko ili mtumaji asiweze kumshinda mpokeaji wa data.
TCP hutuma data kwa kutumia IP katika vizuizi vinavyoitwa segments. Urefu wa sehemu imedhamiriwa na itifaki. Mbali na kichwa cha IP, kila sehemu ina baiti 20 za kichwa. Kichwa TCP huanza na chanzo cha 16-bit na uga wa nambari ya mlango lengwa. Kama UDP, nyanja hizi zinafafanua kiwango cha maombi ambacho kinalenga kupokea data. Anwani ya IP na nambari ya mlango kwa pamoja hutambulisha huduma zinazoendeshwa kwa seva pangishi na jozi zinazojulikana kama soketi.
Ifuatayo katika kichwa ni nambari ya mlolongo wa 32-bit. Nambari hii inabainisha nafasi katika mtiririko wa data ambayo baiti ya kwanza ya data katika sehemu inapaswa kuchukua. Nambari ya serial TCP huruhusu mtiririko wa data kuwekwa katika mpangilio sahihi, ingawa sehemu zinaweza kutolewa kutoka kwa mfuatano.
Sehemu inayofuata ni sehemu ya 32-bit ambayo hutumiwa kurudisha kwa mtumaji kwamba data ilipokelewa kwa usahihi. Kama bendera ya ACK, ambayo ni kawaida, uga huu una nafasi ya baiti inayofuata ya data ambayo mtumaji wa sehemu anatarajia kupokea.
KATIKA TCP hakuna haja ya kila sehemu ya data kutambuliwa. Thamani katika sehemu ya uthibitishaji inafasiriwa kama "data yote iliyopokelewa ni sawa hadi sasa." Hii huokoa kipimo data wakati data yote inaelekezwa upande mmoja, na hivyo kupunguza hitaji la utambuzi wa sehemu. Ikiwa data inatumwa kwa wakati mmoja katika pande zote mbili, kama kwa ukamilifu mawasiliano ya duplex, basi alama hazihusiani na gharama, kwa kuwa sehemu ya uwasilishaji wa data katika mwelekeo mmoja inaweza kuwa na uthibitisho wa data inayotumwa katika mwelekeo mwingine.
Inayofuata kwenye kichwa ni sehemu ya biti-16 iliyo na urefu wa kichwa na bendera. TCP vichwa vinaweza kuwa na mashamba ya ziada, hivyo urefu unaweza kutofautiana kutoka kwa 20 hadi 60 byte. Bendera: URG, ACK (ambazo tayari tumetaja), PSH, RST, SYN na FIN. Baadaye, tutaangalia bendera zingine.
Kichwa kina sehemu inayoitwa saizi ya dirisha, ambayo inatoa idadi ya baiti ambazo mpokeaji anaweza kupokea. Pia kuna ukaguzi wa 16-bit unaofunika kichwa na data. Hatimaye (kabla ya data ya ziada) kuna uwanja unaoitwa "kiashiria cha dharura". Bendera ya URG inapowekwa, thamani hii inafasiriwa kama suluhu nambari ya serial. Inabainisha mwanzo wa data katika mtiririko unaohitaji kuchakatwa haraka. Data hii mara nyingi hujulikana kama data ya "nje ya kikundi". Mfano wa matumizi yake ni wakati mtumiaji anabonyeza kitufe cha kuvunja ili kukatiza kuondoka kwa programu wakati wa kipindi cha Telnet.

Itifaki ya Datagram ya Mtumiaji (UDP)(Itifaki ya Datagram ya Mtumiaji) - ni itifaki ya kawaida TCP/IP, iliyofafanuliwa katika kiwango cha RFC 768, "Itifaki ya Datagram ya Mtumiaji (UDP)". UDP inatumika badala yake TCP kwa usafiri wa data wa haraka na usioaminika kati ya wapangishi wa TCP/IP.

Itifaki ya UDP hutoa huduma isiyo na muunganisho, kwa hivyo UDP haihakikishii uwasilishaji au ukaguzi wa mlolongo wa datagramu yoyote. Mpangishi anayehitaji mawasiliano ya kuaminika lazima atumie itifaki ya TCP au programu ambayo yenyewe itafuatilia mfuatano wa datagramu na kukiri kupokea kila pakiti.

Programu zinazozingatia wakati mara nyingi hutumia UDP (data ya video) kwa sababu ni vyema kuacha pakiti badala ya kusubiri pakiti zilizochelewa, jambo ambalo huenda lisiwezekane katika mifumo ya wakati halisi. Pia, upotevu wa fremu moja au zaidi wakati wa kusambaza data ya video kupitia UDP sio muhimu kama wakati wa kusambaza. faili za binary, ambapo upotevu wa pakiti moja unaweza kusababisha uharibifu wa faili nzima. Faida nyingine ya itifaki ya UDP ni kwamba urefu wa kichwa cha UDP ni ka 4, wakati itifaki ya TCP ina byte 20.

Ujumbe wa UDP huingizwa na kupitishwa katika datagrams za IP.

Kichwa cha UDP

Kielelezo kinaonyesha sehemu zilizopo kwenye kichwa cha UDP.

  • Mlango wa Mtumaji - Sehemu hii inabainisha nambari ya mlango wa mtumaji. Thamani hii inapaswa kubainisha bandari ambayo jibu litatumwa ikiwa ni lazima. Vinginevyo, thamani inapaswa kuwa 0. Ikiwa seva pangishi chanzo ni mteja, basi nambari ya mlango kuna uwezekano mkubwa kuwa wa muda mfupi. Ikiwa chanzo ni seva, basi bandari yake itakuwa moja ya "inayojulikana".
  • Mlango wa Mpokeaji - Sehemu hii inahitajika na ina mlango wa mpokeaji. Sawa na mlango wa chanzo, ikiwa mteja ndiye mwenyeji wa mpokeaji, basi nambari ya bandari ni ya muda mfupi, vinginevyo (seva ni mpokeaji) ni "bandari inayojulikana".
  • Urefu wa Datagram ni sehemu inayobainisha urefu wa datagram nzima (kichwa na data) katika baiti. Urefu wa chini ni sawa na urefu wa kichwa - 8 byte. Kwa nadharia, ukubwa wa juu mashamba - 65535 byte kwa datagram ya UDP (baiti 8 kwa kichwa na 65527 kwa data). Kikomo halisi cha urefu wa data wakati wa kutumia IPv4 ni 65507 (pamoja na baiti 8 kwa kila kichwa cha UDP, zingine 20 zinahitajika kwa kila kichwa cha IP).
  • Checksum - Sehemu ya hundi inatumika kuangalia kichwa na data kwa makosa. Ikiwa kiasi hakijazalishwa na transmitter, basi shamba linajazwa na zero.

Wacha tuangalie muundo wa kichwa UDP kwa kutumia mtandao analyzer Wireshark:

Bandari za UDP

Kwa kuwa programu kadhaa zinaweza kufanya kazi kwenye kompyuta moja, ili kutoa pakiti ya UDP kwa programu maalum, kitambulisho cha kipekee cha kila programu au nambari ya bandari hutumiwa.

Nambari ya bandari ni nambari ya masharti ya 16-bit kutoka 1 hadi 65535 inayoonyesha mpango ambao kifurushi kimekusudiwa.

Bandari za UDP hutoa uwezo wa kutuma na kupokea ujumbe wa UDP. Lango la UDP hufanya kazi kama foleni ya ujumbe mmoja ili kupokea datagramu zote zinazolengwa kwa programu. inavyoonyeshwa na nambari bandari ya itifaki. Hii ina maana kwamba programu za UDP zinaweza kupokea zaidi ya ujumbe mmoja kwa wakati mmoja.

Nambari zote za bandari za UDP ambazo ni chini ya 1024 zimehifadhiwa na kusajiliwa na Mamlaka ya Nambari Zilizokabidhiwa za Mtandao (IANA).
Nambari za bandari za UDP na TCP haziingiliani.

Kila bandari ya UDP kutambuliwa na nambari ya bandari iliyohifadhiwa au inayojulikana. Jedwali lifuatalo linaonyesha orodha ya sehemu ya nambari za bandari za UDP zinazojulikana ambazo hutumiwa na programu za kawaida za UDP.

Ninapenda sana mfululizo mzima wa makala, pamoja na sikuzote nilitaka kujijaribu kama mtafsiri. Labda nakala hiyo itaonekana wazi sana kwa watengenezaji wenye uzoefu, lakini inaonekana kwangu kuwa itakuwa muhimu kwa hali yoyote.

Hujambo, jina langu ni Glenn Fiedler na ninakukaribisha kwa makala ya kwanza katika kitabu changu cha mtandaoni, Kupanga Mtandao kwa Wasanidi Programu.

Katika makala hii, tutaanza na vipengele vya msingi vya programu ya mtandao - kupokea na kusambaza data kwenye mtandao. Kupokea na kusambaza data ndio kuu na zaidi sehemu rahisi kutoka kwa anuwai nzima ya kazi ambazo waandaaji wa programu za mtandao hushughulikia, lakini mara nyingi ni ngumu kuamua ni njia ipi inayofaa zaidi. Zingatia vya kutosha sehemu hii - ikiwa umesalia na kutoelewana, inaweza kusababisha matokeo mabaya kwa mchezo wako wa wachezaji wengi baadaye!

Uwezekano mkubwa zaidi tayari umesikia kitu kuhusu soketi, na unaweza kujua kwamba zinakuja katika aina mbili kuu - TCP na UDP. Jambo la kwanza unahitaji kuamua unapotengeneza mchezo wa wachezaji wengi ni aina gani ya soketi za kutumia - TCP, UDP, au zote mbili?

Chaguo la aina ya soketi inategemea kabisa aina ya mchezo unaokuza. Katika mfululizo huu wa makala, nitadhani kuwa unaandika mchezo wa vitendo - kama vile Halo, Uwanja wa Vita 1942, Tetemeko, Unreal, CounterStrike, Ngome ya Timu, n.k.

Sasa tutaangalia kwa undani zaidi sifa za kila aina ya tundu (kwa kuzingatia ukweli kwamba tunatengeneza mchezo wa mtindo wa vitendo), na kwenda kwa undani kidogo katika maelezo ya jinsi mtandao unavyofanya kazi. Baada ya uhakiki wa kina chaguo sahihi litakuwa wazi!

TCP inasimama kwa "itifaki ya kudhibiti upitishaji" na IP inasimama kwa "itifaki ya mtandao". Kwa pamoja yanasisitiza karibu kila kitu unachofanya mtandaoni, kuanzia kuvinjari wavuti hadi IRC na mawasiliano ya barua pepe - yote yanaendeshwa kwenye TCP/IP.

Ikiwa umewahi kutumia soketi za TCP, basi unapaswa kujua kwamba TCP ni itifaki inayotumia kanuni ya uunganisho wa kuaminika. Hii inamaanisha kuwa unaanzisha muunganisho kati ya kompyuta mbili, na kisha kutuma data kati yao, kama vile unaandika habari kwa faili kwenye kompyuta moja na kuisoma kutoka kwa faili moja hadi nyingine.

Katika kesi hii, uunganisho unachukuliwa kuwa wa kuaminika na thabiti - yaani, taarifa zote unazotuma zimehakikishiwa kufikia mpokeaji kwa utaratibu sawa ambao ulitumwa. Pia Uunganisho wa TCP inaweza kuchukuliwa kuwa mkondo unaoendelea wa data - itifaki yenyewe inachukua huduma ya kuvunja data kwenye pakiti na kuzituma kwenye mtandao.

Wakati mmoja zaidi - kila kitu ni rahisi kama kuingia mara kwa mara au kusoma kutoka kwa faili. Watson wa Msingi!

Lakini urahisi huu wa matumizi ni tofauti kabisa na kile kinachotokea "chini ya hood", kwa kiwango cha chini - kiwango cha itifaki ya IP.

Katika ngazi hii hakuna dhana ya uunganisho - badala yake pakiti za mtu binafsi hupitishwa kutoka kwa kompyuta moja hadi nyingine. Unaweza kufikiria mchakato huu kama kupitisha barua kutoka kwa mtu mmoja hadi mwingine katika chumba kilichojaa watu: mwishowe barua hiyo inafika kwa mtu anayefaa, lakini wakati huo huo kupitia mikono mingi.

Hata hivyo, hakuna hakikisho kwamba noti itamfikia anayeandikiwa. Mtumaji hutuma barua tu kwa matumaini kwamba itafika, lakini hajui hata kama ujumbe umefika au la - hadi mpokeaji aamue kuandika tena.
Kwa kawaida, kwa kweli kila kitu ni ngumu zaidi, kwani kompyuta inayotuma haijui mlolongo halisi wa kompyuta kwenye mtandao ambao pakiti inapaswa kupitishwa ili ifike haraka iwezekanavyo. Wakati mwingine IP hutuma nakala nyingi za pakiti moja, ambayo inaweza kuchukua njia tofauti kufikia lengwa - na kuna uwezekano wa kufika kwa nyakati tofauti.

Je, ikiwa tunataka kuhamisha taarifa kati ya kompyuta si kwa mtindo wa kusoma/kuandika faili, lakini kwa kutuma na kupokea pakiti moja kwa moja?

Kweli, tunaweza kufanya hivi kwa kutumia UDP. UDP inasimama kwa "itifaki ya datagram ya mtumiaji" na inaendesha juu ya IP (kama TCP), lakini badala ya kuongeza tani ya utendaji ni nyongeza ndogo tu kwa IP.

Kwa kutumia UDP, tunaweza kutuma pakiti kwa anwani maalum ya IP (kwa mfano, 112.140.20.10) na bandari (kwa mfano, 52423), na itatumwa kutoka kwa kompyuta hadi kwa kompyuta hadi ifike inapoenda (au inapotea kwenye njia).

Wakati huo huo, kwa upande wa mpokeaji tunakaa tu na kungojea, tukisikiliza bandari fulani (52423 kwa upande wetu), na wakati pakiti inapokuja kutoka kwa mtu (kumbuka kuwa hakuna viunganisho vinavyotumiwa), tunapokea arifa kuhusu hili. anwani na bandari ya kompyuta inayotuma, saizi ya pakiti, na baada ya hapo tunaweza kusoma data kutoka kwa pakiti hii.

Itifaki ya UDP haihakikishii uwasilishaji wa data. Kwa mazoezi, pakiti nyingi, kwa kweli, hufika, lakini kila wakati kuna upotezaji wa karibu 1-5%, na wakati mwingine kuna nyakati ambazo pakiti hazifiki kabisa (kumbuka kuwa kati ya mtumaji na mpokeaji kunaweza kuwa maelfu ya kompyuta, kwenye yoyote ambayo inaweza kushindwa au kuharibika).

Pia, UDP haitoi dhamana ya utaratibu ambao pakiti hutolewa. Unaweza kutuma pakiti tano kwa mpangilio - 1, 2, 3, 4, 5 - lakini zinaweza kufika kwa mpangilio tofauti kabisa - kwa mfano, 3, 1, 2, 5, 4. Tena, kwa mazoezi, watakuwa na uwezekano mkubwa. fika kwa mpangilio sahihi mara nyingi, lakini huwezi kutegemea hilo!

Mwishowe, wakati UDP haiongezi mengi kwa IP, inahakikisha jambo moja. Ikiwa utasambaza pakiti, itafika kabisa au haitafika kabisa. Kwa hiyo, ikiwa unatuma pakiti 256 kwa kompyuta nyingine, basi haiwezi kupokea tu 100 za kwanza kutoka kwa pakiti - lazima ipokee byte 256 zote. Hili ndilo jambo pekee ambalo limehakikishwa Itifaki ya UDP- kila kitu kingine huanguka kwenye mabega yako.

Kwa hivyo tunahitaji kuamua - je, tutumie soketi za TCP au UDP? Wacha tuangalie sifa zao:

  • Inatumia kanuni ya uunganisho
  • Inatoa dhamana ya utoaji na ubadilishaji
  • Inagawanya habari kiotomatiki katika pakiti
  • Inahakikisha kuwa data haitumiwi kwa umakini sana (udhibiti wa mtiririko wa data)
  • Rahisi kutumia - kama kuandika/kusoma kutoka kwa faili
UDP:
  • Haitumii kanuni ya uunganisho - itabidi utekeleze kwa mikono
  • Haihakikishi uwasilishaji na agizo la utoaji wa vifurushi - zinaweza kufika kwa mpangilio mbaya, na nakala, au zisifike kabisa!
  • Unahitaji kugawanya data kwa mikono katika pakiti na kuzituma
  • Unahitaji kuwa mwangalifu usitume data kwa umakini sana
  • Ikiwa pakiti imepotea, unahitaji kwa namna fulani kufuatilia na, ikiwa ni lazima, uitume tena
Kwa orodha kama hiyo, suluhisho linaonekana dhahiri - TCP inatekeleza utendaji wote tunaohitaji na ni rahisi kutumia, wakati kutumia UDP huahidi hemorrhoids kwa kuandika kila kitu kwa mikono, kutoka mwanzo. Kwa hivyo tunatumia TCP, sawa?

Lakini hapana.

Kutumia TCP pengine ni kosa mbaya zaidi, ambayo inaweza kutekelezwa wakati wa kuunda mchezo wa wachezaji wengi. Ili kuelewa ni kwa nini, hebu tuangalie ni nini kinachofanya TCP iwe rahisi sana kutumia!

Jinsi TCP inavyofanya kazi
TCP na UDP zote zinafanya kazi juu ya IP, lakini kwa kweli ni tofauti kabisa. UDP inatenda sawa na IP, wakati TCP huondoa mtumiaji mbali na masuala yote ya pakiti, na kufanya mwingiliano sawa na kusoma/kuandika kwa faili.

Kwa hiyo anafanyaje?

Kwanza, TCP hutumia uondoaji wa mtiririko wa data - unaweza kuandika baiti za data kwenye mkondo huo, na TCP itahakikisha kuwa inafika kulengwa kwake. Kwa sababu IP husambaza data katika pakiti na TCP huendesha juu ya IP, ni lazima TCP ivunje mtiririko wa ingizo wa mtumiaji katika pakiti mahususi. Kwa hivyo, ndani ya TCP, baadhi ya mantiki hukusanya data kwenye foleni, na inapotosha, huunda pakiti na kuituma kwenye lengwa.

Tabia hii inaweza kuwa tatizo kwa mchezo wetu wa wachezaji wengi ikiwa tunahitaji kuhamisha pakiti ndogo sana. Inaweza kutokea kwamba TCP itaamua kutosambaza data zetu hadi itakapokusanya vya kutosha kuunda pakiti ya saizi fulani (sema, zaidi ya ka mia). Na hii - tatizo kubwa, kwa sababu inahitajika kuhamisha data kutoka kwa mteja (vibonye vya mchezaji) hadi kwa seva haraka iwezekanavyo, na ikiwa kuna ucheleweshaji kwa sababu ya uhifadhi wa data na itifaki, basi mchezo hautakuwa wa kupendeza zaidi kwa mchezaji kwenye upande wa mteja. Katika kesi hii, kusasisha vitu vya mchezo kutatokea kwa kuchelewa na mara chache - ambapo tunahitaji kusasisha vitu kwa wakati na mara nyingi.

TCP ina chaguo la kurekebisha hili - "TCP_NODELAY". Inaambia itifaki isingojee data ijikusanye kwenye foleni ya kutuma, lakini itume mara moja.

Kwa bahati mbaya, hata chaguo hili likiwa limesakinishwa, TCP ina matatizo mengi inapotumiwa michezo ya mtandao.

Mizizi ya matatizo yote iko katika jinsi TCP inavyoshughulikia pakiti zilizopotea au zisizo za utaratibu, na kuunda udanganyifu wa uhusiano wa kuaminika na thabiti.

Jinsi TCP inahakikisha kuegemea kwa muunganisho
Katika Usambazaji wa TCP huvunja mtiririko wa data katika pakiti za kibinafsi, hutuma kwenye mtandao kwa kutumia itifaki ya IP isiyoaminika, na kisha kuijenga upya kutoka kwa kompyuta inayopokea. kupokea pakiti mtiririko wa asili.

Lakini nini kitatokea ikiwa moja ya pakiti haifiki? Au ikiwa vifurushi vinafika nje ya mpangilio, au na nakala?

Bila kuingia kwa undani sana Uendeshaji wa TCP(na hii ni mada ngumu sana - unaweza kuisoma katika TCP/IP Illustrated), mchakato unaonekana kama hii: TCP hutuma pakiti, huamua kuwa pakiti haikufika, na kutuma pakiti sawa kwa mpokeaji. Pakiti nakala huondolewa kwa upande wa mpokeaji, na pakiti zinazofika nje ya mpangilio hupangwa upya ili kila kitu kiwe kama inavyopaswa kuwa - kwa uhakika na kwa mpangilio.

Tatizo ni kwamba wakati TCP "inasawazisha" mkondo wa data kwa njia hii, ikiwa pakiti imepotea, maambukizi huacha mpaka pakiti iliyopotea itatumwa tena (na kupokea kwa marudio). Ikiwa data mpya inakuja wakati wa kusubiri, itawekwa kwenye foleni na hutaweza kuisoma hadi pakiti iliyopotea ifike. Inachukua muda gani kutuma tena kifurushi? Inachukua angalau muda wa kurudi na kurudi wa pakiti (wakati TCP inaamua ni pakiti gani ya kutuma tena), pamoja na muda wa kuwasilisha tena pakiti iliyopotea. Kwa hivyo ikiwa ping kati ya kompyuta ni 125ms, kusambaza tena pakiti itachukua karibu moja ya tano ya pili, na katika hali mbaya zaidi - hadi nusu ya pili (fikiria ikiwa ghafla pakiti mpya iliyotumwa pia imepotea). Veselukha!

Kwa nini usiwahi kutumia TCP kwa michezo ya wachezaji wengi
Tatizo la kutumia TCP katika michezo ya mtandaoni ni kwamba, tofauti na vivinjari, Barua pepe na programu zingine, michezo hutegemea mwingiliano wa wakati halisi. Kwa vipengele vingi vya mchezo, kama vile vitufe vinavyobonyezwa na mtumiaji na nafasi ya wachezaji kwenye mchezo, haijalishi ni nini kilifanyika sekunde iliyopita, ni hali ya sasa pekee ndiyo muhimu. ulimwengu wa mchezo.

Hebu tuangalie mfano rahisi wa mchezo wa wachezaji wengi, kama vile ufyatuaji wa 3D. Sehemu ya mtandao ya mchezo imeundwa kwa urahisi sana: kila marudio ya mzunguko wa mchezo, mteja hutuma kwa seva maelezo ya vitendo vyote vya mchezaji (vitufe vilivyobonyezwa, nafasi ya kipanya, n.k.), na kila irudiayo seva huchakata data hii. , husasisha muundo wa ulimwengu wa mchezo na kutuma zile za sasa kwa nafasi za mteja za vitu vya ulimwengu ili kuchora fremu mpya ya mchezaji.

Kwa hiyo, katika mchezo wetu, ikiwa pakiti inapotea wakati inapitishwa kwenye mtandao, mchezo unasimama na unasubiri mpaka pakiti itatolewa tena. Kwa upande wa mteja, vitu vya mchezo huganda, na kwenye seva, wachezaji pia hawawezi kusonga au kupiga risasi kwa sababu seva haiwezi kukubali pakiti mpya. Wakati pakiti iliyopotea hatimaye inafika, ina maelezo ya kizamani ambayo hayafai tena. Kwa kuongeza, baada ya hayo, pakiti hizo zote ambazo zimekusanya kwenye foleni wakati wa kusubiri pia hufika, na wote wanahitaji kusindika kwa iteration moja ya kitanzi. Kuchanganyikiwa kabisa!

Kwa bahati mbaya, hakuna njia ya kubadilisha tabia hii ya TCP, na hakuna haja ya, kwa kuwa hii ndiyo maana ya TCP. Huu ni umuhimu wa kufanya utumaji data kwenye Mtandao kuwa mtiririko wa data unaotegemewa na thabiti.
Lakini hatuhitaji utiririshaji wa data unaotegemewa na thabiti.

Tunahitaji data kupata kutoka kwa mteja hadi kwa seva haraka iwezekanavyo, na hatutaki kusubiri data kutumwa tena.
Hii ndio sababu haupaswi kamwe kutumia TCP kwa michezo ya wachezaji wengi.

Lakini ngoja! Kwa nini siwezi kutumia UDP na TCP pamoja?

Kwa data ya wakati halisi ya mchezo, kama vile mibofyo ya mtumiaji na hali ya ulimwengu ya mchezo, data ya sasa pekee ndiyo muhimu, lakini kwa aina nyingine za data, kama vile seti za amri zinazotumwa kutoka kwa kompyuta moja hadi nyingine, kutegemewa na uthabiti wa kituo. inaweza kuwa muhimu sana.

Bila shaka, inajaribu kutumia UDP kwa ingizo la mtumiaji na data ya hali ya ulimwengu, na TCP kwa data ambayo lazima ihakikishwe kuwasilishwa. Unaweza hata kufikiria kuwa unaweza kutengeneza "nyuzi" nyingi za amri - kwa mfano, moja kwa viwango vya upakiaji, nyingine kwa amri za AI. Unafikiri, "Sihitaji timu za AI kusubiri kwenye foleni ikiwa pakiti ya data ya kupakia kiwango itapotea, kwa sababu hazihusiani kabisa!" Katika kesi hii, wewe ni sahihi, na unaweza kuamua kuunda Soketi ya TCP kwa kila mkondo wa amri.

Kwa mtazamo wa kwanza, hii wazo kubwa. Lakini shida ni kwamba kwa kuwa TCP na UDP zote zinaendesha juu ya IP, pakiti za itifaki zote mbili zitaathiriana - tayari ziko kwenye kiwango cha IP. Jinsi hasa athari hii itajidhihirisha yenyewe ni swali ngumu sana, na inahusiana na taratibu za kuaminika katika TCP. Lakini, kwa hali yoyote, fahamu kuwa kutumia TCP kawaida husababisha upotezaji wa pakiti za UDP. Ikiwa unataka kujua zaidi kuhusu hili, unaweza kusoma