Kura funkcija ir udp transporta protokola priekšrocība. Skatiet, kas ir "UDP" citās vārdnīcās. Udp pakešu lauku mērķis
UDP ir vienkāršs protokols, un tam ir noteikta darbības joma. Pirmkārt, tās ir klienta un servera mijiedarbība un multivide. Tomēr lielākajai daļai interneta lietojumprogrammu ir nepieciešama uzticama, konsekventa pārraide. UDP neatbilst šīm prasībām, tāpēc ir nepieciešams cits protokols. Šo protokolu sauc par TCP, un tas ir interneta darba zirgs.
TCP pamati
Pārraides kontroles protokols (TCP) tika īpaši izstrādāts, lai nodrošinātu uzticamu baitu straumi no gala līdz galam neuzticamā interneta tīklā. Savstarpēji savienots tīkls atšķiras no atsevišķa tīkla ar to, ka tā dažādām sekcijām var būt ļoti atšķirīga topoloģija, caurlaidspēja, aizkaves laiki, pakešu izmēri un citi parametri. TCP izstrāde koncentrējās uz protokola spēju pielāgoties tīkla īpašībām un būt noturīgam, saskaroties ar dažādām problēmām.
TCP protokols ir aprakstīts RFC 793. Laika gaitā dažādas kļūdas un neprecizitātes, un dažos punktos prasības ir mainītas. Detalizēts aprakstsŠie precizējumi un labojumi ir doti RFC 1122. Protokola paplašinājumi ir doti RFC 1323.
Katrai mašīnai, kas atbalsta TCP protokolu, ir TCP transporta entītija, kas ir vai nu bibliotēkas procedūra, lietotāja process vai sistēmas kodola daļa. Jebkurā gadījumā transporta entītija pārvalda TCP plūsmas un saskarni ar IP slāni. TCP entītija saņem lietotāju datu plūsmas no lokālajiem procesiem, sadala tās gabalos, kas nav lielāki par 64 KB (praksē šis skaitlis parasti ir 460 baiti datu, kas ļauj tos ievietot vienā Ethernet kadrā ar IP un TCP galvenēm), un nosūta tos kā atsevišķas IP datagrammas. Kad IP datagrammas ar TCP datiem nonāk mašīnā, tās tiek pārsūtītas uz TCP entītiju, kas rekonstruē sākotnējo baitu straumi. Vienkāršības labad mēs dažreiz izmantosim "TCP", lai atsauktos uz TCP transporta entītiju (programmatūras daļu) vai TCP protokolu (noteikumu kopu). No konteksta būs skaidrs, kas ir domāts. Piemēram, izteicienā “Lietotājs pārsūta TCP datus” ir dabiski norādīta transporta entītija TCP.
IP līmenis netiek garantēts pareiza piegāde datagrammas, tāpēc TCP ir jāseko līdzi noildzes, kas beidzās, un, ja nepieciešams, atkārtoti jāpārsūta paketes. Dažreiz datagrammas nonāk nepareizā secībā. TCP ir atbildīgs arī par ziņojumu atkopšanu no šādām datagrammām. Tādējādi TCP ir izstrādāts, lai nodrošinātu tādu uzticamību, kādu vēlas daudzi lietotāji un ko nenodrošina IP.
TCP pakalpojuma modelis
TCP pakalpojums ir balstīts uz tā sauktajām ligzdām (ligzdām vai galapunktiem), ko izveidojis gan sūtītājs, gan saņēmējs. Tie tika apspriesti Berkeley Sockets sadaļā. Katrai ligzdai ir numurs (adrese), kas sastāv no resursdatora IP adreses un 16 bitu resursdatora lokāla numura, ko sauc par portu. TCP portu sauc par TSAP adresi. Lai piekļūtu TCP pakalpojumam, ir skaidri jāizveido savienojums starp sūtīšanas iekārtas ligzdu un saņēmēja iekārtas ligzdu.
Vienu kontaktligzdu var izmantot vairākiem savienojumiem vienlaikus. Citiem vārdiem sakot, divi vai vairāki savienojumi var beigties vienā kontaktligzdā. Savienojumus atšķir ar ligzdas ID abos galos - (ligzda1, ligzda2). Virtuālo kanālu numuri vai citi identifikatori netiek izmantoti.
Portu numurus, kas ir mazāki par 1024, ko sauc par populārajiem portiem, rezervē standarta pakalpojumi. Piemēram, jebkurš process, kas vēlas izveidot savienojumu ar resursdatoru, lai pārsūtītu failu, izmantojot FTP, var sazināties ar mērķa resursdatora 21. portu un tādējādi sazināties ar tā FTP dēmonu. Populāro ostu saraksts ir pieejams vietnē www.iana.org.
Mēs, protams, varētu saistīt FTP dēmonu ar portu 21 sāknēšanas laikā, pēc tam saistīt Telnet dēmonu ar portu 23 utt. Tomēr, ja mēs to darītu, mēs tikai izniekojam atmiņu ar informāciju par dēmoniem, kas , lielākā daļa dīkstāves laiks. Tā vietā parasti tiek izmantots viens dēmons, ko sauc par inetd UNIX, kas sazinās ar vairākiem portiem un gaida pirmo ienākošo savienojumu. Kad tas notiek, inetd izveido jaunu procesu un izsauc atbilstošo dēmonu, lai apstrādātu pieprasījumu. Līdz ar to pastāvīgi darbojas tikai inetd, pārējie tiek izsaukti tikai tad, kad tiem ir darbs. Inetd ir īpašs konfigurācijas fails, no kura tas var uzzināt par portu piešķiršanu. Tas nozīmē, ka sistēmas administrators var konfigurēt sistēmu tā, lai pastāvīgie dēmoni tiktu saistīti ar noslogotākajiem portiem (piemēram, 80), bet inetd – ar pārējiem.
Dažas rezervētas ostas |
||
Protokols |
Lietošana |
|
21 |
FTP |
Failu pārsūtīšana |
23 |
Telnet |
Attālā pieteikšanās |
25 |
SMTP |
E-pasts |
69 |
TFTP |
Vienkāršākais failu pārsūtīšanas protokols |
79 |
Pirksts |
Lietotāja informācijas meklēšana |
80 |
HTTP |
Globālais tīmeklis |
110 |
POP-3 |
Attālā piekļuve e-pastam |
119 |
NNTP |
Intereškopas |
Visi TCP savienojumi ir pilni dupleksi un no punkta uz punktu. Pilna dupleksa nozīmē, ka satiksme vienlaikus var plūst pretējos virzienos. Savienojums no punkta uz punktu nozīmē, ka tam ir divi galapunkti. TCP neatbalsta apraidi un multiraidi.
TCP savienojums ir baitu straume, nevis ziņojumu straume. Robežas starp ziņojumiem netiek saglabātas. Piemēram, ja nosūtīšanas process TCP straumē ieraksta četrus 512 baitu datu gabalus, šie dati var tikt piegādāti saņemšanas procesam kā četri 512 baitu gabali, divi 1024 baitu gabali, viens 2048 baitu fragments vai kaut kas cits. cits. Saņēmējs nevar noteikt, kā dati tika rakstīti.
Šis īpašums ir arī failiem UNIX sistēmā. Programma, kas nolasa sliedi, nevar noteikt, kā šis fails tika uzrakstīts: pa blokiem, baitiem vai pilnībā uzreiz. Tāpat kā UNIX sistēmas failos, arī TCP programmām nav ne jausmas, ne par ko nerūp baitu nozīme. Viņiem baits ir tikai baits.
Kad TCP saņem datus no lietojumprogrammas, tas var tos nekavējoties nosūtīt vai buferizēt, lai nekavējoties nosūtītu. liela porcija datus pēc saviem ieskatiem. Tomēr dažreiz lietojumprogrammai ir nepieciešams nekavējoties nosūtīt datus. Pieņemsim, piemēram, ka lietotājs piesakās attālā mašīnā. Pēc tam, kad viņš ir ievadījis komandu un nospiedis taustiņu Enter, ir svarīgi, lai viņa ievadītā rinda nekavējoties tiktu piegādāta attālajai mašīnai, nevis buferizēta līdz nākamās rindas ievadīšanai. Lai piespiestu datus pārsūtīt bez kavēšanās, lietojumprogramma var iestatīt karogu PUSH.
Dažas vecākas lietojumprogrammas izmantoja PUSH karogu kā ziņojumu norobežotāju. Lai gan šis triks dažreiz darbojas, ne visas TCP implementācijas nodod PUSH karogu saņēmējai lietojumprogrammai. Turklāt, ja TCP entītija saņem vēl vairākas šādas paketes, pirms līnijā tiek nosūtīta pirmā PUSH pakete (tas ir, izvadlīnija ir aizņemta), TCP entītijai būs tiesības nosūtīt visus šos datus kā vienu datu diagrammu, nesadalot tos atsevišķās daļās.
Pēdējā pieminēšanas vērta TCP pakalpojuma funkcija ir steidzami dati. Kad lietotājs, kas mijiedarbojas ar programmu, interaktīvi nospiež taustiņu Dzēst vai Ctrl-C, lai pārtrauktu attālo procesu, kas notiek, sūtīšanas lietojumprogramma ievieto vadības informāciju izvades datu straumē un nodod to TCP pakalpojumam kopā ar karodziņu STEIDZAMS. Šis karodziņš liek TCP entītijai pārtraukt datu uzkrāšanu un nekavējoties atbrīvot visu, kas tai ir, lai izveidotu savienojumu ar tīklu.
Kad steidzami dati nonāk galamērķī, saņemošā lietojumprogramma tiek pārtraukta (tas ir, UNIX terminoloģijā tiek "signalizēta"), pēc tam tā var nolasīt datus no ievades straumes un meklēt starp tiem steidzamus datus. Steidzamo datu beigas ir atzīmētas, lai lietojumprogramma varētu atpazīt, kur tie beidzas. Steidzamo datu sākums nav atzīmēts. Lietojumprogrammai tas jāizdomā pašai. Šī shēma nodrošina neapstrādātu signalizācijas mehānismu, atstājot visu pārējo lietojumprogrammas ziņā.
TCP protokols
Šajā sadaļā tiks apspriests TCP protokols vispārīgs izklāsts. Nākamajā sadaļā mēs apspriedīsim protokola galveni katrā laukā.
Galvenā TCP īpašība, kas nosaka visu protokola struktūru, ir tāda, ka TCP savienojumā katram baitam ir savs 32 bitu kārtas numurs. Interneta pirmajos gados pamata datu pārraides ātrums starp maršrutētājiem pa nomātajām līnijām bija 56 Kbps. Saimniekdatoram, kas pastāvīgi izsūknē datus maksimālā ātrumā, būtu nepieciešama vairāk nekā nedēļa sērijas numuri ir nogājuši pilnu apli. Pie pašreizējā ātruma kārtas numuri var ļoti ātri beigties, par to vairāk vēlāk. Apstiprinājumiem un bīdāmā loga mehānismam tiek izmantoti atsevišķi 32 bitu kārtas numuri, kas arī tiks apspriesti vēlāk.
Sūtošās un saņēmējas TCP entītijas apmainās ar datiem segmentu veidā. Segments sastāv no fiksētas 20 baitu galvenes (kā arī izvēles daļas), kurai var sekot datu baiti. Tiek noteikts segmentu izmērs programmatūra TCP. Tas var apvienot datus, kas iegūti vairāku rakstīšanas darbību rezultātā, vienā segmentā vai, gluži pretēji, sadalīt vienas ierakstīšanas rezultātu pa vairākiem segmentiem. Segmentu lielumu ierobežo divi ierobežojumi. Pirmkārt, katram segmentam, ieskaitot TCP galveni, ir jāiekļaujas IP paketes 65 515 baitu kravnesības laukā. Otrkārt, katram tīklam ir maksimālā pārsūtīšanas vienība (MTU), un katram segmentam ir jāiekļaujas MTU. Praksē maksimālās pārraides vienības izmērs parasti ir 1500 baiti (kas atbilst Ethernet slodzes lauka lielumam), un tādējādi nosaka segmenta izmēra augšējo robežu.
Galvenais TCP entītiju izmantotais protokols ir bīdāmo logu protokols. Pārraidot segmentu, sūtītājs iedarbina taimeri. Kad segments nonāk galamērķī, saņēmēja TCP entītija nosūta atpakaļ segmentu (ar datiem, ja ir ko nosūtīt, vai bez datiem) ar numuru.
apstiprinājums ir vienāds ar nākamā paredzamā segmenta kārtas numuru. Ja apstiprinājuma taimauts beidzas, sūtītājs atkārtoti nosūta segmentu.
Lai gan šis protokols šķiet vienkāršs, ir vairākas detaļas, kas jāizpēta sīkāk. Segmenti var nonākt nepareizā secībā. Tā, piemēram, iespējams, ka baiti no 3072 līdz 4095 jau ir saņemti, taču par tiem nevar nosūtīt apstiprinājumu, jo baiti no 2048 līdz 3071 vēl nav saņemti. Turklāt segmenti tīklā var uzkavēties tik ilgi, ka sūtītājs beidzas noildze un pārsūta tos vēlreiz. Atkārtoti pārraidītais segments var ietvert dažādus fragmentu diapazonus, tāpēc būs nepieciešama ļoti rūpīga administrēšana, lai noteiktu jau pareizi saņemto baitu numurus. Tomēr, tā kā katrs straumes baits ir unikāli identificēts pēc tā nobīdes, šis uzdevums ir izpildāms.
TCP jāspēj risināt šīs problēmas un tās efektīvi atrisināt. Daudz pūļu ir veltīts TCP straumju veiktspējas optimizēšanai. Nākamajā sadaļā mēs apspriedīsim vairākus algoritmus, kas tiek izmantoti dažādās TCP protokola implementācijās.
TCP segmenta galvene
Katrs segments sākas ar 20 baitu fiksēta formāta galveni. Tam var sekot papildu lauki. Pēc papildu laukiem var būt līdz 65 535 - 20 - 20 = 65 495 baiti datu, kur pirmie 20 baiti ir IP galvene un otrie ir TCP galvene. Segmenti nedrīkst saturēt datus. Šādus segmentus bieži izmanto, lai nosūtītu apstiprinājumus un kontroles ziņojumus.
Apskatīsim TCP galvenes laukus pēc lauka. Lauki Uztvērēja ports un Avota ports ir lokālā savienojuma galapunktu identifikatori. Porta numurs kopā ar resursdatora IP adresi veido unikālu 48 bitu galapunkta identifikatoru. Šādu identifikatoru pāris, kas saistīti ar avotu un galamērķi, unikāli identificē savienojumu.
Lauki Secības numurs un Apstiprinājuma numurs veic savas parastās funkcijas. Ņemiet vērā, ka lauks Apstiprinājuma numurs attiecas uz nākamo gaidāmo baitu, nevis uz pēdējo saņemto baitu. Abi ir 32 biti, jo katrs datu baits TCP straumē ir numurēts.
Laukā TCP Header Length ir norādīts TCP galvenes lielums, kas izteikts 32 bitu vārdos. Šī informācija ir nepieciešama, jo laukam Neobligātie lauki un līdz ar to arī visa galvene var būt dažāda garuma. Būtībā šis lauks norāda nobīdi no segmenta sākuma līdz datu laukam, ko mēra 32 bitu vārdos. Tas ir tāds pats kā nosaukuma garums.
Tālāk nāk neizmantots 6 bitu lauks. Tas, ka šī joma ir saglabājusies ceturtdaļgadsimtu, liecina par to, cik pārdomāts ir TCP dizains.
Tam seko seši 1 bita karodziņi. URG bits ir iestatīts uz 1, ja tiek izmantots lauks Steidzami datu rādītājs, kurā ir baita nobīde no pašreizējā baita kārtas numura līdz steidzamo datu atrašanās vietai. Šādi TCP ievieš pārtraukuma ziņojumus. Kā jau minēts, TCP protokols nodrošina tikai lietotāja signāla piegādi adresātam, neinteresējoties par pārtraukuma cēloni.
Ja ACK bits ir iestatīts uz 1, laukā Apstiprinājuma numurs ir nozīmīgi dati. Pretējā gadījumā šajā segmentā nav apstiprinājuma, un lauks Apstiprinājuma numurs tiek vienkārši ignorēts.
PSH bits būtībā ir PUSH karodziņš, kas liek sūtītājam likt uztvērējam piegādāt datus lietojumprogrammai, tiklīdz tas saņem paketi, nevis uzglabāt to buferī, līdz tā ir pilna. (Lai palielinātu efektivitāti, saņēmējs var veikt buferi.)
RST bits tiek izmantots, lai atiestatītu savienojuma stāvokli, kas resursdatora kļūmes vai cita iemesla dēļ ir nonācis strupceļā. To izmanto arī, lai noraidītu nederīgu segmentu vai mēģinājumu izveidot savienojumu. Ja saņemat segmentu ar iestatītu RST bitu, ir radusies problēma.
SYN bits tiek izmantots, lai izveidotu savienojumu. Savienojuma pieprasījumam ir SYN bits = 1 un ACK bits = 0, kas nozīmē, ka apstiprinājuma lauks netiek izmantots. Atbilde uz šo pieprasījumu satur apstiprinājumu, tāpēc šo bitu vērtības ir: SYN= 1, ACK-1. Tādējādi SYN bits tiek izmantots, lai norādītu segmentus CONNECTION REQUEST un CONNECTION ACCEPTED, un tiek izmantots ACK bits. lai tos atšķirtu vienu no otra.
FIN bits tiek izmantots savienojuma pārtraukšanai. Tas norāda, ka sūtītājam nav vairāk datu, ko pārsūtīt. Tomēr pat pēc savienojuma pārtraukšanas process var turpināt saņemt datus bezgalīgi. Segmentiem ar FIN un SYN bitiem ir kārtas numuri, lai nodrošinātu, ka tie tiek izpildīti pareizā secībā.
Plūsmas kontrole TCP protokolā tiek veikta, izmantojot mainīga izmēra bīdāmo logu. Laukā Window Size ir norādīts, cik baitu var nosūtīt pēc apstiprinājuma baita. Lauka Window Size vērtība var būt nulle, kas nozīmē, ka ir saņemti visi baiti līdz apstiprinājuma numuram-1, taču adresātam pašlaik ir problēmas un viņš vēl nevar saņemt atlikušos baitus. Atļauju turpmākai pārsūtīšanai var iegūt, nosūtot segmentu ar tādu pašu Apstiprinājuma numura lauka vērtību un loga lieluma lauka vērtību, kas nav nulle.
Dažos protokolos kadru apstiprinājumi ir saistīti ar atļaujām turpināt pārraidi. Šīs attiecības izriet no stingri fiksētā bīdāmā loga izmēra šajos protokolos. TCP sistēmā apstiprinājumi tiek atdalīti no atļaujām pārsūtīt datus. Būtībā uztvērējs varētu teikt: "Es esmu saņēmis baitus līdz k-ro, bet es nevēlos turpināt saņemt datus šobrīd." Šis sadalījums (izteikts kā mainīga izmēra bīdāms logs) nodrošina protokolam papildu elastību. Tālāk mēs apspriedīsim šo aspektu sīkāk.
Kontrolsummas lauks tiek izmantots, lai palielinātu uzticamību. Tajā ir galvenes, datu un pseidogalvenes kontrolsumma. Veicot aprēķinus, lauks Kontrolsumma tiek iestatīts uz nulli, un datu lauks tiek papildināts ar nulles baitu, ja tā garums ir nepāra skaitlis. Kontrolsummas algoritms vienkārši saskaita visus 16 bitu vārdus divu komplementā un pēc tam aprēķina visas summas papildinājumu. Rezultātā, kad adresāts pārbauda visu segmentu, ieskaitot lauku Kontrolsumma, rezultātam jābūt 0.
Pseidogalvene satur 32 bitu avota un galamērķa IP adreses, TCP protokola numuru (6) un baitu skaitu TCP segmentam (ieskaitot galveni). Pseidogalvenes iekļaušana TCP kontrolsummā palīdz atklāt nepareizi piegādātas paketes, lai gan tā pārkāpj protokola hierarhiju, jo tajā esošās IP adreses pieder IP slānim, nevis TCP slānim. UDP kontrolsummai izmanto to pašu pseidogalveni.
Lauks Neobligātie lauki nodrošina papildu opcijas, kas nav ietvertas standarta galvenē. Izmantojot vienu no šiem laukiem, katrs saimniekdators var norādīt maksimālais izmērs lietderīgās slodzes lauki, kurus tā var pieņemt. Jo lielāks ir izmantoto segmentu izmērs, jo lielāka ir efektivitāte, jo tas samazina 20 baitu galvenes, taču ne visi resursdatori var pieņemt ļoti lielus segmentus. Savienojuma iestatīšanas laikā saimniekdatori var sazināties viens ar otru par maksimālo kravnesības lauka lielumu. Pēc noklusējuma šis izmērs ir 536 baiti. Visiem saimniekdatoriem ir jāpieņem TCP segmenti, kuru izmērs ir 536 + 20 = 556 baiti. Katram virzienam var būt savs maksimālais kravnesības lauka izmērs.
Līnijām ar lielu pārsūtīšanas ātrumu un/vai lielu latentumu 64 KB logs ir pārāk mazs. Tādējādi TZ līnijai (44,736 Mbit/s) pilnu logu var pārsūtīt uz līniju tikai 12 ms laikā. Ja brauciena laiks turp un atpakaļ ir 50 ms (parasti transkontinentālajam optiskajam kabelim), 3/4 laika sūtītājs pavada, gaidot apstiprinājumu. Sazinoties caur satelītu, situācija būs vēl sliktāka. Lielāks loga izmērs uzlabotu efektivitāti, bet 16 bitu loga lieluma lauks to neļauj. Ierosināts RFC 1323 jauns parametrs Logu skala, par kuru divi saimnieki varēja vienoties, veidojot savienojumu. Šis skaitlis ļauj pārvietot loga lieluma lauku līdz 14 bitiem pa kreisi, ļaujot loga izmēram paplašināties līdz 230 baitiem (1 GB). Pašlaik lielākā daļa TCP protokolu ieviešanas atbalsta šo funkciju.
Vēl viena iespēja, kas piedāvāta RFC 1106 un tagad tiek plaši izmantota, ir izmantot selektīvo atkārtošanas protokolu, nevis atkāpties, ja galamērķis saņem vienu sliktu segmentu un pēc tam liels skaits labs, normāls TCP galu galā beigsies un pārsūtīs visus neapstiprinātos segmentus, tostarp tos, kas tika saņemti pareizi. RFC 1106 ierosināja izmantot negatīvus apstiprinājumus (NAK), lai adresāts varētu pieprasīt vienu segmentu vai vairākus segmentus. Pēc saņemšanas saņēmēja puse var apstiprināt visus buferī saglabātos datus, tādējādi samazinot atkārtoti pārsūtīto datu apjomu.
Lietotāja datugrammas protokols — UDP
UDP protokols ir viens no diviem transporta slāņa protokoliem, ko izmanto TCP/IP protokolu kaudzē. UDP ļauj lietojumprogrammai pārsūtīt savus ziņojumus tīklā ar minimālām pieskaitāmajām izmaksām, kas saistītas ar lietojumprogrammas slāņa protokolu pārveidošanu par IP. Tomēr tajā pašā laikā, aplikācijas programma pašai ir jārūpējas par apstiprinājumu, ka ziņojums tika piegādāts galamērķim. UDP datagrammas (ziņojuma) galvene izskatās tā, kā parādīts 2.10. attēlā.
Rīsi. 2.10. UDP ziņojuma galvenes struktūra
UDP protokola datu vienību sauc par UDP paketi vai lietotāja datagrammu. UDP pakete sastāv no galvenes un datu lauka, kas satur lietojumprogrammas slāņa paketi. Galvenei ir vienkāršs formāts, un tā sastāv no četriem divu baitu laukiem:
UDP avota ports — sūtīšanas procesa porta numurs,
UDP mērķa ports - saņēmēja procesa porta numurs,
UDP ziņojuma garums — UDP paketes garums baitos,
UDP kontrolsumma - UDP paketes kontrolsumma
Ne visi UDP paketes lauki ir jāaizpilda. Ja nosūtītā datagramma nesagaida atbildi, tad sūtītāja adreses vietā var likt nulles. Varat arī atteikties aprēķināt kontrolsummu, taču, lūdzu, ņemiet vērā, ka IP protokols aprēķina kontrolsummu tikai IP paketes galvenei, ignorējot datu lauku
Porti galvenē definē UDP protokolu kā multipleksoru, kas ļauj apkopot ziņojumus no lietojumprogrammām un nosūtīt uz protokola slāni. Šajā gadījumā lietojumprogramma izmanto noteiktu portu. Lietojumprogrammas, kas sazinās tīklā, var izmantot dažādus portus, kas ir atspoguļots paketes galvenē. Kopumā var definēt 216 dažādus portus. Pirmie 256 porti tiek piešķirti tā sauktajiem "labi zināmajiem pakalpojumiem", kas ietver, piemēram, UDP portu 53, kas ir piešķirts DNS pakalpojumam.
Lauks Garums nosaka ziņojuma kopējo garumu. Lauks Kontrolsumma kalpo datu integritātes kontrolei. Lietojumprogrammai, kas izmanto UDP protokolu, ir jārūpējas par datu integritāti, analizējot laukus Checksumma un Length. Turklāt, veicot datu apmaiņu, izmantojot UDP, pašai lietojumprogrammai ir jārūpējas par datu piegādes adresātam uzraudzību. Parasti to panāk, apmainoties ar piegādes apstiprinājumiem starp lietojumprogrammām.
Vispazīstamākie uz UDP balstītie pakalpojumi ir BIND domēna nosaukumu pakalpojums un NFS izplatītā failu sistēma. Atgriežoties pie traceroute piemēra, šī programma izmanto arī UDP transportu. Faktiski tīklam tiek nosūtīts UDP ziņojums, bet tas izmanto portu, kuram nav pakalpojumu, tāpēc tiek ģenerēta ICMP pakete, kas uztver pakalpojuma trūkumu saņēmējā mašīnā, kad pakete beidzot sasniedz galamērķa mašīna.
Pārsūtīšanas kontroles protokols - TCP
Ja lietojumprogrammai ir svarīga datu pārraides kvalitātes uzraudzība tīklā, tad šajā gadījumā tiek izmantots TCP protokols. Šo protokolu sauc arī par uzticamu, uz savienojumu orientētu un uz plūsmu orientētu protokolu. Pirms apspriest šīs protokola īpašības, apskatīsim tīklā pārraidītās datagrammas formātu (2.11. attēls). Saskaņā ar šo struktūru TCP, tāpat kā UDP, ir porti. Pirmie 256 porti tiek piešķirti WKS, porti no 256 līdz 1024 tiek piešķirti Unix pakalpojumiem, bet pārējos varat izmantot pēc saviem ieskatiem. Laukā Secības numurs paketes numurs ir noteikts pakešu secībā, kas veido visu ziņojumu, kam seko apstiprinājuma lauks Zināšanu numurs un cita kontroles informācija.
Rīsi. 2.11. TCP pakešu struktūra
Avota ports (SOURS PORT) aizņem 2 baitus, identificē nosūtīšanas procesu;
Galamērķa ports (DESTINATION PORT) aizņem 2 baitus, identificē adresāta procesu;
Secības numurs (SEQUENCE NUMBER) aizņem 4 baitus, norāda baita numuru, kas nosaka segmenta nobīdi attiecībā pret nosūtīto datu plūsmu;
Apstiprinātais numurs (APSTIPRINĀJUMA NUMURS) aizņem 4 baitus, satur maksimālo baitu skaitu saņemtajā segmentā, palielināts par vienu; tieši šī vērtība tiek izmantota kā kvīts;
Header Length (HLEN) ir 4 biti garš un norāda TCP segmenta galvenes garumu, ko mēra 32 bitu vārdos. Galvenes garums nav fiksēts un var mainīties atkarībā no vērtībām, kas iestatītas laukā Opcijas;
Rezerve (RESERVED) aizņem 6 bitus, lauks ir rezervēts vēlākai lietošanai;
Koda biti (CODE BITS) aizņem 6 bitus un satur pakalpojuma informāciju par noteiktā segmenta veidu, kas norādīts, iestatot atbilstošos šī lauka bitus uz vienu:
URG - steidzams ziņojums;
ACK - saņemtā segmenta kvīts;
PSH - pieprasījums nosūtīt ziņojumu, negaidot bufera aizpildīšanu;
RST - pieprasījums atjaunot savienojumu;
SYN - ziņojums, ko izmanto, lai sinhronizētu pārsūtīto datu skaitītājus savienojuma izveides laikā;
FIN ir zīme, ka pārraidītāja puse ir sasniegusi pēdējo baitu pārraidītajā datu plūsmā.
Logs (LOGS) aizņem 2 baitus, satur loga izmēra deklarēto vērtību baitos;
Kontrolsumma (CHECKSUM) aizņem 2 baitus un tiek aprēķināta katram segmentam;
Steidzamais rādītājs (URGENT POINTER) aizņem 2 baitus, tiek izmantots kopā ar URG koda bitu, norāda uz datu beigas, kas steidzami jāsaņem, neskatoties uz bufera pārpildīšanu;
OPTIONS - šim laukam ir mainīgs garums un tā var nebūt, maksimālais lauka izmērs ir 3 baiti; izmanto palīgproblēmu risināšanai, piemēram, izvēloties maksimālo segmenta izmēru;
PADDING — mainīga garuma polsterējums — ir fiktīvs lauks, ko izmanto, lai galvenes lielumu palielinātu līdz veselam 32 bitu vārdu skaitam.
TCP uzticamība slēpjas apstāklī, ka datu avots to atkārtoti nosūta, ja vien noteiktā laika periodā nesaņem apstiprinājumu no adresāta, ka tas ir veiksmīgi saņemts. Šo mehānismu sauc Pozitīva informētība ar atkārtotu pārraidi (PAR). Kā mēs iepriekš definējām, pārraides vienību (datu pakete, ziņojums utt.) TCP terminos sauc par segmentu. TCP galvenē ir kontrolsummas lauks. Ja pārsūtīšanas laikā dati tiek bojāti, modulis, kas atdala TCP segmentus no IP paketēm, to var noteikt, izmantojot kontrolsummu. Bojātā pakete tiek iznīcināta un nekas netiek nosūtīts uz avotu. Ja dati nav bojāti, tie tiek nodoti lietojumprogrammas ziņojumu komplektam un avotam tiek nosūtīts apstiprinājums.
Savienojuma orientāciju nosaka fakts, ka pirms datu segmenta nosūtīšanas avota un mērķa TCP moduļi apmainās ar vadības informāciju. Šo apmaiņu sauc rokasspiediens(burtiski "rokasspiediens"). TCP izmanto trīsfāžu rokasspiedienu:
Avots izveido savienojumu ar galamērķi, nosūtot tam paketi ar karodziņu Sinhronizēt secības numurus (SYN). Numurs secībā identificē paketes numuru lietojumprogrammas ziņojumā. Tam nav jābūt 0 vai vienam. Bet visi pārējie numuri to izmantos kā bāzi, kas ļaus savākt paketes pareizā secībā;
Adresāts atbild ar numuru SYN saņemšanas apstiprinājuma laukā, kas atbilst avota iestatītajam numuram. Turklāt laukā “numurs pēc kārtas” var norādīt arī avota pieprasīto numuru;
Avots apstiprina, ka ir pieņēmis mērķa segmentu, un nosūta pirmo datu daļu.
Grafiski šis process ir parādīts 2.12. attēlā.
Rīsi. 2.12. TCP savienojuma izveide
Pēc savienojuma izveides avots nosūta datus adresātam un gaida no viņa apstiprinājumu, ka tie ir saņemti, pēc tam vēlreiz nosūta datus utt., līdz ziņojums beidzas. Ziņojums beidzas, kad karogu laukā ir iestatīts FIN bits, kas nozīmē "nav vairāk datu".
Protokola straumēšanas raksturu nosaka fakts, ka SYN nosaka sākuma numuru pārsūtīto baitu, nevis pakešu skaitīšanai. Tas nozīmē, ka, ja SYN bija iestatīts uz 0 un tika pārsūtīti 200 baiti, tad nākamajā paketē iestatītais numurs būs 201, nevis 2.
Ir skaidrs, ka protokola straumēšanas raksturs un prasība apstiprināt datu saņemšanu rada datu pārraides ātruma problēmu. Lai atrisinātu šo problēmu, izmantojiet "logu" - lauku - logu. Logu izmantošanas ideja ir pavisam vienkārša: pārsūtiet datus, negaidot apstiprinājumu par to saņemšanu. Tas nozīmē, ka avots pārraida noteiktu datu apjomu, kas vienāds ar logu, negaidot apstiprinājumu par tā saņemšanu, un pēc tam tas pārtrauc pārraidi un gaida apstiprinājumu. Ja tas saņem apstiprinājumu tikai daļai no pārsūtītajiem datiem, tas sāks pārsūtīt jaunu daļu no numura, kas seko apstiprinātajam. Tas grafiski parādīts 2.13. attēlā.
Rīsi. 2.13. TCP datu pārraides mehānisms
IN šajā piemērā logs ir iestatīts uz 250 baitu platumu. Tas nozīmē, ka pašreizējais segments ir segments ar SYN nobīdi 250 baiti. Tomēr pēc visa loga pārsūtīšanas avota TCP modulis saņēma apstiprinājumu, ka saņem tikai pirmos 100 baitus. Tāpēc pārsūtīšana sāksies no 101 baita, nevis no 251.
Tādējādi mēs esam pārbaudījuši visas TCP protokola pamatīpašības. Atliek tikai nosaukt slavenākās lietojumprogrammas, kuras TCP izmanto datu apmaiņai. Tie galvenokārt ir TELNET un FTP, kā arī HTTP protokols, kas ir globālā tīmekļa sirds.
Nedaudz pārtrauksim sarunu par protokoliem un pievērsīsim uzmanību tik svarīgai visas TCP/IP sistēmas sastāvdaļai kā IP adreses.
UDP izmanto vienkāršu pārraides modeli, bez netiešiem rokasspiedieniem, lai nodrošinātu datu uzticamību, secību vai integritāti. Tādējādi UDP nodrošina neuzticamu pakalpojumu, un datagrammas var nonākt ne kārtībā, tikt dublētas vai pazust bez pēdām. UDP nozīmē, ka kļūdu pārbaude un labošana vai nu nav nepieciešama, vai arī tā jāveic lietojumprogrammai. Laika jutīgās lietojumprogrammas bieži izmanto UDP, jo ir vēlams nomest paketes, nevis gaidīt aizkavētas paketes, kas reāllaika sistēmās var nebūt iespējams. Ja nepieciešams labot kļūdas tīkla interfeisa slānī, lietojumprogramma var izmantot šim nolūkam paredzētu TCP vai SCTP.
UDP kā bezvalsts protokola būtība ir noderīga arī serveriem, kas atbild uz nelieliem pieprasījumiem no liela skaita klientu, piemēram, DNS un straumēšanas multivides lietojumprogrammas, piemēram, IPTV, Voice over IP, IP tunelēšanas protokoli un daudzas tiešsaistes spēles.
Servisa porti
UDP nesniedz nekādas ziņojumu piegādes garantijas augšējā slāņa protokolam un nesaglabā nosūtīto ziņojumu stāvokli. Šī iemesla dēļ UDP dažreiz sauc par neuzticamo datugrammu protokolu.
Pirms kontrolsummas aprēķināšanas UDP ziņojuma beigās tiek aizpildīts ar nulles bitiem līdz garumam, kas ir 16 bitu reizinājums (pseidogalvene un papildu nulles biti kopā ar ziņojumu netiek nosūtīti). Kontrolsummas lauks UDP galvenē kontrolsummas aprēķināšanas laikā nosūtīts ziņas tiek pieņemtas kā nulles.
Lai aprēķinātu kontrolsummu, pseidogalvene un UDP ziņojums tiek sadalīti vārdos (1 vārds = 2 baiti (okteti) = 16 biti). Pēc tam tiek aprēķināts visu vārdu summas bitu papildinājums ar bitu papildinājumu. Rezultāts tiek ierakstīts attiecīgajā UDP galvenes laukā.
Nulles kontrolsummas vērtība ir rezervēta un nozīmē, ka datagrammai nav kontrolsummas. Ja aprēķinātā kontrolsumma ir vienāda ar nulli, lauks tiek aizpildīts ar binārajām vienībām.
Kad tiek saņemts ziņojums, adresāts vēlreiz aprēķina kontrolsummu (ņemot vērā kontrolsummas lauku), un, ja rezultāts ir binārs skaitlis no sešpadsmit vieniniekiem (tas ir, 0xffff), tiek uzskatīts, ka kontrolsumma ir saplūdusi. Ja summa netiek summēta (pārsūtīšanas laikā dati tika bojāti), datagramma tiek iznīcināta.
Kontrolsummas aprēķina piemērs
Piemēram, aprēķināsim vairāku 16 bitu vārdu kontrolsummu: 0x398a, 0xf802, 0x14b2, 0xc281. Atrodiet to summu ar bitu papildinājumu.
0x398a + 0xf802 = 0x1318c → 0x318d
0x318d + 0x14b2 = 0x0463f → 0x463f
0x463f + 0xc281 = 0x108c0 → 0x08c1
Tagad mēs atrodam iegūtā rezultāta bitu papildinājumu:
0x08c1 = 0000 1000 1100 0001 → 1111 0111 0011 1110 = 0xf73e vai citādi - 0xffff − 0x08c1 = 0xf73e . Šī ir vēlamā kontrolsumma.
Aprēķinot kontrolsummu, atkal tiek izmantota pseidogalvene, kas imitē īstu IPv6 galveni:
Bits | 0 – 7 | 8 – 15 | 16 – 23 | 24 – 31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Avota adrese | |||||||||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | Saņēmēja adrese | |||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
192 | ||||||||||||||||||||||||||||||||
224 | ||||||||||||||||||||||||||||||||
256 | UDP garums | |||||||||||||||||||||||||||||||
288 | Nulles | Nākamais virsraksts | ||||||||||||||||||||||||||||||
320 | Avota ports | Galamērķa osta | ||||||||||||||||||||||||||||||
352 | Garums | Pārbaudes summa | ||||||||||||||||||||||||||||||
384+ | Dati |
Avota adrese ir tāda pati kā IPv6 galvenē. Saņēmēja adrese - gala saņēmējs; ja IPv6 pakete nesatur maršrutēšanas galvenes, tad tā būs galamērķa adrese no IPv6 galvenes, pretējā gadījumā sākuma mezglā tā būs maršrutēšanas galvenes pēdējā elementa adrese un saņēmēja mezglā, galamērķa adrese no IPv6 galvenes. Nākamās galvenes vērtība ir vienāda ar protokola vērtību — 17 UDP. UDP garums - UDP galvenes un datu garums.
Uzticamība un risinājumi pārslodzes problēmām
Tā kā UDP lietojumprogrammas nav uzticamas, tām jābūt gatavām dažiem zaudējumiem, kļūdām un dublēšanās gadījumiem. Daži no tiem (piemēram, TFTP) pēc izvēles var pievienot elementārus uzticamības mehānismus lietojumprogrammu līmenī.
Bet visbiežāk šādus mehānismus UDP lietojumprogrammas neizmanto un pat traucē tiem. Straumēšanas multivide, reāllaika vairāku spēlētāju spēles un VoIP ir piemēri lietojumprogrammām, kurās bieži tiek izmantots UDP protokols. Šajās konkrētajās lietojumprogrammās pakešu zudums parasti nav liela problēma. Ja pieteikumam ir nepieciešams augsts līmenis uzticamību, varat izmantot citu protokolu (TCP) vai dzēšanas kodus.
Lielāka iespējamā problēma ir tā, ka atšķirībā no TCP uz UDP balstītām lietojumprogrammām ne vienmēr ir labi pārslodzes kontroles un novēršanas mehānismi. Uz sastrēgumiem jutīgas UDP lietojumprogrammas, kas patērē ievērojamu pieejamā joslas platuma daļu, var apdraudēt interneta stabilitāti.
Tīkla mehānismi tika izstrādāti, lai samazinātu iespējamo sastrēgumu ietekmi nekontrolētas, liela ātruma slodzes laikā. Tīkla elementi, piemēram, maršrutētāji, kas izmanto pakešu rindas un nomešanas metodes, bieži vien ir vienīgie pieejamie rīki, lai palēninātu pārmērīgu UDP trafiku. DCCP (Datagram Congestion Control Protocol) ir izstrādāts kā daļējs šīs iespējamās problēmas risinājums, pievienojot gala resursdatoram mehānismus, lai uzraudzītu ātrdarbīgu UDP straumju, piemēram, straumēšanas multivides, pārslodzes.
Lietojumprogrammas
Daudzas galvenās interneta lietojumprogrammas izmanto UDP, tostarp DNS (kur pieprasījumiem jābūt ātriem un jāsastāv tikai no viena pieprasījuma, kam seko viena atbildes pakete), vienkāršais tīkla pārvaldības protokols (SNMP), maršrutēšanas informācijas protokols (RIP), dinamiskā resursdatora konfigurācija (DHCP) .
Balss un video trafiku parasti veic, izmantojot UDP. Tiešraides video un audio straumēšanas protokoli ir izstrādāti, lai apstrādātu nejaušus pakešu zudumus, lai kvalitāte būtu tikai nedaudz pasliktināta, nevis piedzīvotu lielu aizkavi, kad zaudētās paketes tiek atkārtoti pārsūtītas. Tā kā gan TCP, gan UDP darbojas vienā tīklā, daudzi uzņēmumi ir pamanījuši, ka nesenais UDP trafika pieaugums no šīm reāllaika lietojumprogrammām kavē TCP lietojumprogrammu, piemēram, datu bāzu vai grāmatvedības sistēmu, veiktspēju. Tā kā uzņēmumiem ir svarīgas gan biznesa, gan reāllaika lietojumprogrammas, daži uzskata, ka kvalitatīvu problēmu risinājumu izstrāde ir galvenā prioritāte.
UDP un TCP salīdzinājums
TCP ir uz savienojumu orientēts protokols, kas nozīmē, ka ir nepieciešams "rokasspiediens", lai izveidotu savienojumu starp diviem resursdatoriem. Kad savienojums ir izveidots, lietotāji var sūtīt datus abos virzienos.
- Uzticamība- TCP pārvalda ziņojumu apstiprināšanu, atkārtotu pārsūtīšanu un taimautu. Tiek veikti daudzi mēģinājumi nosūtīt ziņojumu. Ja tas tiek pazaudēts ceļā, serveris vēlreiz pieprasīs pazaudēto daļu. Izmantojot TCP, netrūkst datu vai (vairāku taimautu gadījumā) nav bojātu savienojumu.
- Kārtība- ja secīgi tiek nosūtīti divi ziņojumi, pirmā ziņa vispirms nonāks adresāta programmā. Ja datu gabali tiek saņemti nepareizā secībā, TCP nosūta ārpuskārtas datus uz buferi, līdz visus datus var pasūtīt un nosūtīt uz lietojumprogrammu.
- Smagums- TCP nepieciešamas trīs paketes, lai pirms datu nosūtīšanas izveidotu ligzdas savienojumu. TCP uzrauga uzticamību un sastrēgumus.
- Vītņošana- dati tiek nolasīti kā baitu plūsma, netiek pārsūtīti īpaši apzīmējumi ziņojuma robežām vai segmentiem.
UDP ir vienkāršāks, uz ziņojumiem balstīts bezsavienojumu protokols. Šāda veida protokoli neizveido īpašu savienojumu starp diviem resursdatoriem. Komunikācija tiek panākta, nododot informāciju vienā virzienā no avota saņēmējam, nepārbaudot saņēmēja gatavību vai stāvokli. Tomēr galvenā UDP priekšrocība salīdzinājumā ar TCP ir balss interneta protokola (VoIP) lietojumprogrammās, kur jebkurš rokasspiediens traucētu labu balss saziņu. Izmantojot VoIP, galalietotājiem ir jāsniedz visi nepieciešamie ziņojuma saņemšanas apstiprinājumi reāllaikā.
- Neuzticams- kad tiek nosūtīta ziņa, nav zināms, vai tā sasniegs galamērķi - tā var pazust pa ceļam. Nav tādu jēdzienu kā apstiprināšana, atkārtota pārraide, taimauts.
- Traucējumi- ja vienam adresātam tiek nosūtīti divi ziņojumi, tad secību, kādā tie sasniedz mērķi, nevar paredzēt.
- Vieglums- nav ziņu pasūtīšanas, savienojumu izsekošanas utt. Tas ir mazs transporta slānis, kas izstrādāts IP.
- Datagrammas- paketes tiek nosūtītas atsevišķi un tiek pārbaudītas tikai tad, ja tās pienāk. Paketēm ir noteiktas robežas, kuras tiek ievērotas pēc saņemšanas, tas nozīmē, ka lasīšanas darbība saņemšanas ligzdā ģenerēs ziņojumu tādu, kāds tas sākotnēji tika nosūtīts.
- Nav pārslodzes kontroles- Pats UDP neizvairās no sastrēgumiem. Liela joslas platuma lietojumprogrammas var izraisīt sastrēgumu sabrukumu, ja vien tās neievieš lietojumprogrammas līmeņa vadīklas.
RFC saites
- RFC 768 — lietotāja datugrammas protokols
- RFC 2460 — interneta protokola specifikācijas 6. versija (IPv6)
- RFC 2675 — IPv6 Jumbogrammas
- RFC 4113 — UDP pārvaldības informācijas bāze
- RFC 5405 — Unicast UDP lietošanas vadlīnijas lietojumprogrammu dizaineriem
Skatīt arī
Saites
- Kurose, J. F.; Ross, K. W. (2010). Datoru tīkli: lejupejoša pieeja (5. izdevums). Boston, MA: Pīrsona izglītība. ISBN 978-0-13-136548-3.
- Foruzans, B.A. (2000). TCP/IP: Protocol Suite, 1. izdevums. Ņūdeli, Indija: Tata McGraw-Hill Publishing Company Limited.
- [aizsargāts ar e-pastu]. "UDP protokola pārskats". IPv6.com. Skatīts 2011. gada 17. augustā.
- Klārks, M.P. (2003). Datu tīkli IP un internets, 1. izd. Rietumsaseksa, Anglija: John Wiley & Sons Ltd.
- Postel, J. (1980. gada augusts). RFC 768: User Datagram Protocol. Interneta inženierijas darba grupa. Iegūts no http://tools.ietf.org/html/rfc768
- Deering S. & Hinden R. (1998. gada decembris). RFC 2460: interneta protokola 6. versijas (IPv6) specifikācija. Interneta inženierijas darba grupa. Iegūts no http://tools.ietf.org/html/rfc2460
- "UDP ietekme uz datu lietojumprogrammām". networkperformancedaily.com. Skatīts 2011. gada 17. augustā.
- D. Comer. Interneta darbs, izmantojot TCP/IP. 11. nodaļa. UDP protokols.
Pamata TCP/IP protokoli pēc OSI modeļa līmeņiem (TCP un UDP portu saraksts) | |
---|---|
Fiziskā | |
Kanāls | |
Tīkls | |
Transports | |
Sesija | |
Pārstāvība | |
User Datagram Protocol (UDP)(User Datagram Protocol) ir TCP/IP standarta protokols, kas definēts RFC 768 "User Datagram Protocol (UDP)". UDP tiek izmantots TCP vietā, lai ātri un neuzticami pārsūtītu datus starp TCP/IP resursdatoriem.
UDP protokols nodrošina bezsavienojuma pakalpojumu, tāpēc UDP negarantē nevienas datagrammas piegādi vai secības pārbaudes. Resursdatoram, kuram nepieciešama uzticama saziņa, ir jāizmanto vai nu TCP protokols, vai programma, kas pati pārraudzīs datagrammu secību un apstiprinās katras paketes saņemšanu.
Laika jutīgās lietojumprogrammas bieži izmanto UDP (video datus), jo ir vēlams nomest paketes, nevis gaidīt aizkavētas paketes, kas reāllaika sistēmās var nebūt iespējams. Arī viena vai vairāku kadru zudums, pārsūtot video datus, izmantojot UDP, nav tik kritisks, atšķirībā no bināro failu pārsūtīšanas, kur vienas paketes zudums var izraisīt visa faila bojājumu. Vēl viena UDP protokola priekšrocība ir tā, ka UDP galvenes garums ir 4 baiti, savukārt TCP protokolam ir 20 baiti.
UDP ziņojumi tiek iekapsulēti un pārsūtīti IP datagrammās.
UDP galvene
Attēlā parādīti UDP galvenē esošie lauki.
- Sender Port — šajā laukā ir norādīts sūtītāja porta numurs. Šai vērtībai ir jānorāda ports, uz kuru vajadzības gadījumā tiks nosūtīta atbilde. Pretējā gadījumā vērtībai ir jābūt 0. Ja avota resursdators ir klients, porta numurs, visticamāk, būs īslaicīgs. Ja avots ir serveris, tad tā ports būs viens no "labi zināmajiem".
- Adresāta ports — šis lauks ir obligāts, un tajā ir adresāta ports. Līdzīgi kā avota portam, ja klients ir adresāta resursdators, porta numurs ir īslaicīgs, pretējā gadījumā (serveris ir adresāts) tas ir “labi zināms ports”.
- Datagrammas garums ir lauks, kas norāda visas datagrammas (galvenes un datu) garumu baitos. Minimālais garums ir vienāds ar galvenes garumu - 8 baiti. Teorētiski maksimālais lauka izmērs ir 65535 baiti UDP datagrammai (8 baiti galvenei un 65527 datiem). Faktiskais datu garuma ierobežojums, izmantojot IPv4, ir 65507 (papildus 8 baitiem katrai UDP galvenei ir nepieciešami vēl 20 baiti katrai IP galvenei).
- Kontrolsumma — kontrolsummas lauks tiek izmantots, lai pārbaudītu, vai galvenē un datos nav kļūdu. Ja summu neģenerē raidītājs, tad lauks tiek aizpildīts ar nullēm.
Apskatīsim galvenes struktūru UDP izmantojot Wireshark tīkla analizatoru:
UDP porti
Tā kā vienā datorā var darboties vairākas programmas, lai piegādātu UDP paketi konkrēta programma, tiek izmantots katras programmas unikālais identifikators vai porta numurs.
Porta numurs ir nosacīts 16 bitu skaitlis no 1 līdz 65535, kas norāda, kurai programmai pakotne ir paredzēta.
UDP porti nodrošina iespēju nosūtīt un saņemt UDP ziņojumus. UDP ports darbojas kā viena ziņojumu rinda, lai saņemtu visas datagrammas, kas paredzētas protokola porta numura norādītajai programmai. Tas nozīmē, ka UDP programmas var saņemt vairāk nekā vienu ziņojumu vienlaikus.
Visi UDP porta numuri, kas ir mazāki par 1024, ir rezervēti un reģistrēti Interneta piešķirto numuru pārvaldībā (Internet Assigned Numbers Authority — IANA).
UDP un TCP portu numuri nepārklājas.
Katrs UDP ports tiek identificēts ar rezervētu vai zināmu porta numuru. Nākamajā tabulā ir parādīts daļējs zināmo UDP portu numuru saraksts, ko izmanto standarta UDP programmas.
Tīkla protokolu komplekts internetam. Ar UDP datoru lietojumprogrammas var nosūtīt ziņojumus (šajā gadījumā sauktus par datagrammām) citiem resursdatoriem, izmantojot IP tīklu, bez iepriekšējas saziņas, lai izveidotu īpašus pārraides kanālus vai datu ceļus. Protokolu izstrādāja Deivids P. Rīds 1980. gadā un formāli definēja RFC 768.
UDP izmanto vienkāršu pārraides modeli, bez netiešiem rokasspiedieniem, lai nodrošinātu datu uzticamību, secību vai integritāti. Tādējādi UDP nodrošina neuzticamu pakalpojumu, un datagrammas var nonākt ne kārtībā, tikt dublētas vai pazust bez pēdām. UDP nozīmē, ka kļūdu pārbaude un labošana vai nu nav nepieciešama, vai arī tā jāveic lietojumprogrammai. Laika jutīgās lietojumprogrammas bieži izmanto UDP, jo ir vēlams nomest paketes, nevis gaidīt aizkavētas paketes, kas reāllaika sistēmās var nebūt iespējams. Ja nepieciešams labot kļūdas tīkla interfeisa slānī, lietojumprogramma var izmantot šim nolūkam paredzētu TCP vai SCTP.
UDP kā bezvalsts protokola būtība ir noderīga arī serveriem, kas atbild uz nelieliem pieprasījumiem no liela skaita klientu, piemēram, DNS un straumēšanas multivides lietojumprogrammas, piemēram, IPTV, Voice over IP, IP tunelēšanas protokoli un daudzas tiešsaistes spēles.
Enciklopēdisks YouTube
-
Subtitri
1 / 5
✪ Porti un portu pāradresācija\atvēršana. Norādījumi un skaidrojumi rokas stiepiena attālumā!
Servisa porti
UDP nesniedz nekādas ziņojumu piegādes garantijas augstākajam protokolam un nesaglabā nosūtīto ziņojumu stāvokli. Šī iemesla dēļ UDP dažreiz sauc par neuzticamo datugrammu protokolu.
Pārbaudes summa
Kontrolsummas lauks tiek izmantots, lai pārbaudītu, vai galvenē un datos nav kļūdu. Ja summu neģenerē raidītājs, tad lauks tiek aizpildīts ar nullēm. Šis lauks nav obligāts IPv4.
Kontrolsummas aprēķins
Kontrolsummas aprēķināšanas metode ir noteikta RFC 1071.
Pirms kontrolsummas aprēķināšanas, ja UDP ziņojuma garums baitos ir nepāra, tad UDP ziņojuma beigās tiek papildināts ar nulles baitu (pseidogalvene un aizpildīšanas nullbaits netiek nosūtīti kopā ar ziņojumu, tie tiek izmantoti tikai kontrolsummas aprēķināšanā). Tiek pieņemts, ka kontrolsummas lauks UDP galvenē ir nulle kontrolsummas aprēķināšanas laikā.
Lai aprēķinātu kontrolsummu, pseidogalvene un UDP ziņojums tiek sadalīti divbaitu vārdos. Pēc tam apgrieztā koda aritmētikā tiek aprēķināta visu vārdu summa (tas ir, kods, kurā no pozitīva skaitļa tiek iegūts negatīvs skaitlis, apgriežot visus skaitļa ciparus un ir divas nulles: 0x0000 (apzīmē + 0) un 0xffff (apzīmē –0)). Rezultāts tiek ierakstīts attiecīgajā UDP galvenes laukā.
Kontrolsummas vērtība, kas vienāda ar 0x0000 (+0 apgrieztā kodā), ir rezervēta un nozīmē, ka nosūtīšanai kontrolsumma netika aprēķināta. Ja kontrolsumma tika aprēķināta un izrādījās vienāda ar 0x0000, tad kontrolsummas laukā tiek ievadīta vērtība 0xffff (-0 apgrieztā kodā).
Kad tiek saņemts ziņojums, adresāts vēlreiz aprēķina kontrolsummu (ņemot vērā kontrolsummas lauku), un, ja rezultāts ir –0 (tas ir, 0xffff), tiek uzskatīts, ka kontrolsumma ir konverģēta. Ja summa nesaplūst (pārsūtīšanas laikā dati ir bojāti vai sūtīšanas pusē nepareizi aprēķināta kontrolsumma), tad lēmumu par turpmākajām darbībām pieņem saņēmēja puse. Parasti lielākajai daļai mūsdienu ierīču, kas strādā ar UDP/IP paketēm, ir iestatījumi, kas ļauj vai nu ignorēt šādas paketes, vai izlaist tās tālākai apstrādei neatkarīgi no kontrolsummas nepareizības.
Kontrolsummas aprēķina piemērs
Piemēram, aprēķināsim vairāku 16 bitu vārdu kontrolsummu: 0x398a, 0xf802, 0x14b2, 0xc281.
Lai to izdarītu, vispirms var pievienot skaitļus pa pāriem, uzskatot tos par 16 bitu neparakstītiem skaitļiem, kam seko reducēšana līdz divnieku komplementa kodam, rezultātam pievienojot vienu, ja saskaitīšanas laikā notikusi pārsūtīšana uz augstāko (17.) ciparu (tas ir, de facto šī darbība mēs pārvēršam negatīvu skaitli no tā papildinājuma uz tā abpusējo kodu). Vai arī, kas ir līdzvērtīgs, mēs varam uzskatīt, ka pārnesums tiek pievienots skaitļa zemās kārtas ciparam.
0x398a + 0xf802 = 0x1318c → 0x318d (pārsūtīšana uz augstāko pasūtījumu) 0x318d + 0x14b2 = 0x0463f → 0x463f (pozitīvs skaitlis) 0x463f + 0xc281 = 0x108c = 0x10
Beigās visi iegūtā skaitļa biti tiek apgriezti
0x08c1 = 0000 1000 1100 0001 → 1111 0111 0011 1110 = 0xf73e vai citādi - 0xffff − 0x08c1 = 0xf73e . Šī ir vēlamā kontrolsumma.
Aprēķinot kontrolsummu, atkal tiek izmantota pseidogalvene, kas imitē īstu IPv6 galveni:
Bits | 0 - 7 | 8 - 15 | 16 - 23 | 24 - 31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Avota adrese | |||||||||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | Saņēmēja adrese | |||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
192 | ||||||||||||||||||||||||||||||||
224 | ||||||||||||||||||||||||||||||||
256 | UDP garums | |||||||||||||||||||||||||||||||
288 | Nulles | Nākamais virsraksts | ||||||||||||||||||||||||||||||
320 | Avota ports | Galamērķa osta | ||||||||||||||||||||||||||||||
352 | Garums | Pārbaudes summa | ||||||||||||||||||||||||||||||
384+ | Dati |
Avota adrese ir tāda pati kā IPv6 galvenē. Saņēmēja adrese - gala saņēmējs; ja IPv6 pakete nesatur maršrutēšanas galvenes, tad tā būs galamērķa adrese no IPv6 galvenes, pretējā gadījumā sākuma mezglā tā būs maršrutēšanas galvenes pēdējā elementa adrese un saņēmēja mezglā, galamērķa adrese no IPv6 galvenes. Nākamās galvenes vērtība ir vienāda ar protokola vērtību — 17 UDP. UDP garums - UDP galvenes un datu garums.
Uzticamība un risinājumi pārslodzes problēmām
Tā kā UDP lietojumprogrammas nav uzticamas, tām jābūt gatavām dažiem zaudējumiem, kļūdām un dublēšanās gadījumiem. Daži no tiem (piemēram, TFTP) pēc izvēles var pievienot elementārus uzticamības mehānismus lietojumprogrammu līmenī.
Bet visbiežāk šādus mehānismus UDP lietojumprogrammas neizmanto un pat traucē tiem. Multivides straumēšana, reāllaika vairāku spēlētāju spēles un VoIP ir piemēri lietojumprogrammām, kurās bieži tiek izmantots UDP protokols. Šajās konkrētajās lietojumprogrammās pakešu zudums parasti nav liela problēma. Ja lietojumprogrammai ir nepieciešams augsts uzticamības līmenis, varat izmantot citu protokolu (TCP) vai izmantot kļūdām izturīgas kodēšanas metodes (dzēšanas kodu). ru lv).
Nopietnāka iespējamā problēma ir tā, ka atšķirībā no TCP uz UDP balstītām lietojumprogrammām ne vienmēr ir labi pārslodzes kontroles un novēršanas mehānismi. Uz sastrēgumiem jutīgas UDP lietojumprogrammas, kas patērē ievērojamu pieejamā joslas platuma daļu, var apdraudēt interneta stabilitāti.
Tīkla mehānismi tika izstrādāti, lai samazinātu iespējamo sastrēgumu ietekmi nekontrolētas, liela ātruma slodzes laikā. Tīkla elementi, piemēram, maršrutētāji, kas izmanto pakešu rindas un nomešanas metodes, bieži vien ir vienīgie pieejamie rīki, lai palēninātu pārmērīgu UDP trafiku. DCCP (Datagram Congestion Control Protocol) ir izstrādāts kā daļējs šīs iespējamās problēmas risinājums, pievienojot gala resursdatoram mehānismus, lai uzraudzītu ātrdarbīgu UDP straumju, piemēram, straumēšanas multivides, pārslodzes.
Lietojumprogrammas
Daudzas galvenās interneta lietojumprogrammas izmanto UDP, tostarp DNS (kur pieprasījumiem jābūt ātriem un jāsastāv tikai no viena pieprasījuma, kam seko viena atbildes pakete), vienkāršais tīkla pārvaldības protokols (SNMP), maršrutēšanas informācijas protokols (RIP), dinamiskā resursdatora konfigurācija (DHCP) .
Balss un video trafiku parasti veic, izmantojot UDP. Tiešraides video un audio straumēšanas protokoli ir izstrādāti, lai apstrādātu nejaušus pakešu zudumus, lai kvalitāte būtu tikai nedaudz pasliktināta, nevis piedzīvotu lielu aizkavi, kad zaudētās paketes tiek atkārtoti pārsūtītas. Tā kā gan TCP, gan UDP darbojas vienā tīklā, daudzi uzņēmumi ir pamanījuši, ka nesenais UDP trafika pieaugums no šīm reāllaika lietojumprogrammām kavē TCP lietojumprogrammu, piemēram, datu bāzu vai grāmatvedības sistēmu, veiktspēju. Tā kā uzņēmumiem ir svarīgas gan biznesa, gan reāllaika lietojumprogrammas, daži uzskata, ka kvalitatīvu problēmu risinājumu izstrāde ir galvenā prioritāte.
UDP un TCP salīdzinājums
TCP ir uz savienojumu orientēts protokols, kas nozīmē, ka ir nepieciešams "rokasspiediens", lai izveidotu savienojumu starp diviem resursdatoriem. Kad savienojums ir izveidots, lietotāji var sūtīt datus abos virzienos.
- Uzticamība- TCP pārvalda ziņojumu apstiprināšanu, atkārtotu pārsūtīšanu un taimautu. Tiek veikti daudzi mēģinājumi nosūtīt ziņojumu. Ja tas tiek pazaudēts ceļā, serveris vēlreiz pieprasīs pazaudēto daļu. Izmantojot TCP, netrūkst datu vai (vairāku taimautu gadījumā) nav bojātu savienojumu.
- Kārtība- ja secīgi tiek nosūtīti divi ziņojumi, pirmā ziņa vispirms nonāks adresāta programmā. Ja datu gabali tiek saņemti nepareizā secībā, TCP nosūta ārpuskārtas datus uz buferi, līdz visus datus var pasūtīt un nosūtīt uz lietojumprogrammu.
- Smagums- TCP nepieciešamas trīs paketes, lai pirms datu nosūtīšanas izveidotu ligzdas savienojumu. TCP uzrauga uzticamību un sastrēgumus.
- Vītņošana- dati tiek nolasīti kā baitu plūsma, netiek pārsūtīti īpaši apzīmējumi ziņojuma robežām vai segmentiem.
UDP ir vienkāršāks, uz ziņojumiem balstīts bezsavienojumu protokols. Šāda veida protokoli neizveido īpašu savienojumu starp diviem resursdatoriem. Saziņa tiek panākta, pārraidot informāciju vienā virzienā no avota uz saņēmēju, nepārbaudot saņēmēja gatavību vai stāvokli. Lietojumprogrammās Voice over IP (TCP/IP) UDP ir priekšrocības salīdzinājumā ar TCP, kur jebkurš rokasspiediens traucēs labu balss saziņu. Izmantojot VoIP, galalietotājiem ir jāsniedz visi nepieciešamie ziņojuma saņemšanas apstiprinājumi reāllaikā.
- Neuzticams- kad tiek nosūtīta ziņa, nav zināms, vai tā sasniegs galamērķi - tā var pazust pa ceļam. Nav tādu jēdzienu kā apstiprināšana, atkārtota pārraide, taimauts.
- Traucējumi- ja vienam adresātam tiek nosūtīti divi ziņojumi, tad secību, kādā tie sasniedz mērķi, nevar paredzēt.
- Vieglums- nav ziņojumu pasūtīšanas, nav savienojuma izsekošanas utt. Tas ir mazs transporta slānis, kas izstrādāts IP.
- Datagrammas- paketes tiek nosūtītas atsevišķi un tiek pārbaudītas tikai tad, ja tās pienāk. Paketēm ir noteiktas robežas, kuras tiek ievērotas pēc saņemšanas, tas nozīmē, ka lasīšanas darbība saņemšanas ligzdā ģenerēs ziņojumu tādu, kāds tas sākotnēji tika nosūtīts.
- Nav pārslodzes kontroles- Pats UDP neizvairās no sastrēgumiem. Liela joslas platuma lietojumprogrammas var izraisīt sastrēgumu sabrukumu, ja vien tās neievieš lietojumprogrammas līmeņa vadīklas.
- Plānas kefīra pankūkas ar caurumiem
- Pūkainie rauga virtuļi ar pienu, pildīti ar ievārījumu un sauso raugu Virtuļi ar ūdeni un raugs ar ievārījumu
- Burkānu cepumi - kā pagatavot mājās gatavotus bērniem, diētiskus vai ar žāvētiem augļiem pēc soli pa solim receptēm Cepumi no burkānu kūkas un auzu pārslām
- Zivis marinētas ar burkāniem un sīpoliem - recepte ar fotogrāfijām