ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

သူများကို ရှာသည်။ ကွန်ရက်များနှင့် ပရိုတိုကောများကို နားလည်ရန် ရည်စူးထားသည်။

အတိုချုပ်

ဆောင်းပါးသည် ယုံကြည်စိတ်ချရသော ဒေတာပေးပို့ခြင်း၏ အခြေခံအကြောင်းများကို ဆွေးနွေးထားပြီး ဥပမာများကို အကောင်အထည်ဖော်ပါ။ GoUDP နှင့် TCP အပါအဝင်။ ပေါ်အခြေခံကာ အချိန်, два, သုံး စာအုပ်များနှင့် "Computer Networks. Top-Down Approach" သို့မဟုတ် လူတိုင်း Tannenbaum နှင့် Oliferov တို့ကိုသာ ဆွေးနွေးနေပါသည်။

သယ်ယူပို့ဆောင်ရေး အလွှာ ပရိုတိုကော

မတူညီသော host များပေါ်တွင် လုပ်ဆောင်နေသည့် အပလီကေးရှင်း လုပ်ငန်းစဉ်များအကြား ယုတ္တိရှိသော ချိတ်ဆက်မှုကို ပေးသည်။ အပလီကေးရှင်းရှုထောင့်မှကြည့်လျှင် ယုတ္တိတန်သောချိတ်ဆက်မှုသည် လုပ်ငန်းစဉ်များကို တိုက်ရိုက်ချိတ်ဆက်သည့် ချန်နယ်တစ်ခုနှင့်တူသည်။

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

သယ်ယူပို့ဆောင်ရေး အလွှာဆိုင်ရာ ပရိုတိုကောများ အဆုံးစနစ်များက ပံ့ပိုးပေးသော်လည်း ကွန်ရက်ရောက်တာများမှ မဟုတ်ဘဲ (- မှတပါး၊ DPI သည်) ပေးပို့သူဘက်တွင်၊ သယ်ယူပို့ဆောင်ရေးအလွှာသည် ပေးပို့သည့်လျှောက်လွှာလုပ်ငန်းစဉ်မှရရှိသော အပလီကေးရှင်းအလွှာဒေတာကို အပိုင်းဟုခေါ်သော သယ်ယူပို့ဆောင်ရေးအလွှာပက်ကတ်များအဖြစ်သို့ ပြောင်းလဲပေးသည်။

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

၎င်းသည် အပလီကေးရှင်းအလွှာမှ မက်ဆေ့ချ်များကို အပိုင်းအစများအဖြစ် ပိုင်းခြားပြီး ၎င်းတို့တစ်ခုစီသို့ သယ်ယူပို့ဆောင်ရေးအလွှာခေါင်းစီးကို ပေါင်းထည့်ခြင်းဖြင့် ၎င်းကို လုပ်ဆောင်သည်။

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

ထို့နောက် သယ်ယူပို့ဆောင်ရေးအလွှာသည် အပိုင်းကို ပေးပို့သူ၏ ကွန်ရက်အလွှာသို့ ဖြတ်သန်းသွားပြီး၊ အပိုင်းကို ကွန်ရက်အလွှာ ပက်ကတ် (ဒေတာဂရမ်) တွင် ထုပ်ပိုးထားပြီး ပေးပို့သည်။ လက်ခံမှုအဆုံးတွင်၊ ကွန်ရက်အလွှာသည် ဒေတာဂရမ်မှ သယ်ယူပို့ဆောင်ရေးအလွှာအပိုင်းကို ထုတ်ယူပြီး သယ်ယူပို့ဆောင်ရေးအလွှာအထိ ပေးပို့သည်။ ထို့နောက်၊ သယ်ယူပို့ဆောင်ရေးအလွှာသည် လက်ခံရရှိသည့်အပလီကေးရှင်းသို့ ၎င်း၏ဒေတာများရရှိနိုင်စေရန်အတွက် လက်ခံရရှိသည့်အပိုင်းကို လုပ်ဆောင်သည်။

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

ယုံကြည်စိတ်ချရသော ဒေတာပေးပို့ခြင်းဆိုင်ရာ အခြေခံမူများ

လုံးဝလုံခြုံသောချန်နယ်တစ်ခုမှ ယုံကြည်စိတ်ချရသော ဒေတာပေးပို့ခြင်း

အရိုးရှင်းဆုံးကိစ္စ။ ပေးပို့သူဘက်မှ အပေါ်ဆုံးအလွှာမှ ဒေတာကို ရိုးရိုးရှင်းရှင်း လက်ခံရရှိပြီး ၎င်းတွင်ပါရှိသော ပက်ကေ့ခ်ျတစ်ခုကို ဖန်တီးကာ ချန်နယ်သို့ ပေးပို့သည်။

ဆာဗာက

package main

import (
    "log"
    "net"
)

func main() {
    // IP-адрес сервера и порт
    serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:12000")
    if err != nil {
        log.Fatal(err)
    }

    // создаем сокет с портом
    serverConn, err := net.ListenUDP("udp", serverAddr)
    if err != nil {
        log.Fatal(err)
    }
    // отложенное закрытие соединения
    defer serverConn.Close()

    // создаем буфер для данных
    buf := make([]byte, 1024)

    // ждем соединение
    for {
        // читаем запрос
        n, addr, err := serverConn.ReadFromUDP(buf)
        // передаем данные в ВЕРХНИЙ уровень: в нашем случае stdout
        println(string(buf[0:n]), " form ", addr.IP.String())
        if err != nil {
            log.Fatal(err)
        }
        // ответа нет, т.к. это UDP + надежный канал
    }
}

လိုင်း

package main

import (
    "fmt"
    "log"
    "net"
    "time"
)

func main() {
    // IP-адрес сервера и порт
    serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:12000")
    if err != nil {
        log.Fatal(err)
    }
    // локальный IP-адрес и порт
    localAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
    if err != nil {
        log.Fatal(err)
    }
    // установка соединения
    conn, err := net.DialUDP("udp", localAddr, serverAddr)
    if err != nil {
        log.Fatal(err)
    }
    // отложенное закрытие соединения
    defer conn.Close()

    for {
        // получение данных от ВЕРХНЕГО уровня
        fmt.Print("Введите строчное предложение > ")
        var msg string
        _, err := fmt.Scanf("%s", &msg)
        if err != nil {
            log.Fatal(err)
        }
        // передается поток байт, а не строка
        buf := []byte(msg)
        // запись (передача) в соединение
        _, err = conn.Write(buf)
        if err != nil {
            log.Fatal(err)
        }
        // 1 секундочку
        time.Sleep(time.Second * 1)
    }
}

ဖြစ်နိုင်ချေရှိသော အမှားအယွင်းများပါရှိသော ချန်နယ်တစ်ခုမှတဆင့် ယုံကြည်စိတ်ချရသော ဒေတာပေးပို့ခြင်း။

နောက်တစ်ဆင့်မှာ ၎င်းတို့ပေးပို့သည့်အစီအစဥ်အတိုင်း ပို့လွှတ်ထားသော packet အားလုံးကို လက်ခံရရှိကြောင်း ယူဆရန်ဖြစ်သော်လည်း၊ ချန်နယ်သည် တစ်ခါတစ်ရံတွင် ပုံမမှန်သော အချက်အလက်များကို ပေးပို့ခြင်းဖြစ်သောကြောင့် ၎င်းတို့ရှိ bit များ ပျက်စီးသွားနိုင်သည်။

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

ဤကိစ္စတွင်၊ အောက်ပါယန္တရားများကိုအသုံးပြုသည်-

  • အမှားထောက်လှမ်း;
  • တုံ့ပြန်ချက်;
  • ပြန်လည်ပေးပို့ခြင်း။

အကြိမ်ပေါင်းများစွာ ထပ်ခါတလဲလဲ ထုတ်လွှင့်မှုအတွက် အလားတူ ယန္တရားများပါရှိသော ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းမှု ပရိုတိုကောများကို Automatic Repeat reQuest (ARQ) ပရိုတိုကောများဟုခေါ်သည်။
ထို့အပြင်၊ လက်ခံရရှိသည့်ပါတီသည် နောက်ဆုံးထုပ်ပိုးလွှဲပြောင်းမှုရလဒ်များနှင့်ပတ်သက်သည့် အချက်အလက်တစ်စုံတစ်ရာ ရရှိမည်မဟုတ်သည့်အခါ လက်ခံရရှိသည့်အဖွဲ့သည် ပြေစာများတွင် အမှားအယွင်းများ ဖြစ်နိုင်ခြေကို ထည့်သွင်းစဉ်းစားသင့်သည်။
TCP တွင်လည်းအသုံးပြုသည့် ဤပြဿနာအတွက် ဖြေရှင်းချက်မှာ packet ၏ sequence နံပါတ်ပါရှိသော data packet သို့ အကွက်အသစ်တစ်ခုထည့်ရန်ဖြစ်သည်။

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

ပက်ကက်ပုံပျက်ခြင်း နှင့် ဆုံးရှုံးခြင်း တို့ကြောင့် စိတ်မချရသော ချန်နယ်တစ်ခုမှ ယုံကြည်စိတ်ချရသော ဒေတာ ပေးပို့ခြင်း

ပုံပျက်ခြင်းနှင့်အတူ၊ ကံမကောင်းစွာဖြင့်၊ ကွန်ရက်တွင် ပက်ကတ်ပျောက်ဆုံးခြင်းလည်း ရှိပါသည်။
ဤပြဿနာကိုဖြေရှင်းရန်၊ ယန္တရားများလိုအပ်သည်-

  • Packet ဆုံးရှုံးမှု၏အချက်ကို ဆုံးဖြတ်ခြင်း၊
  • ဆုံးရှုံးသွားသော ပက်ကေ့ခ်ျများကို လက်ခံရရှိသူထံ ပြန်လည်ပေးပို့ခြင်း။

ထို့အပြင်၊ ထုပ်ပိုးမှုဆုံးရှုံးခြင်းအပြင်၊ ပြေစာဆုံးရှုံးနိုင်ခြေအတွက် ပံ့ပိုးပေးရန် လိုအပ်သည် သို့မဟုတ် တစ်စုံတစ်ရာပျောက်ဆုံးပါက ၎င်း၏ပေးပို့မှုမှာ သိသာထင်ရှားသောနှောင့်နှေးမှုနှင့်အတူ ပြေစာဆုံးရှုံးနိုင်ခြေကို ဖြည့်ဆည်းပေးရန် လိုအပ်ပါသည်။ ကိစ္စအားလုံးတွင်၊ တူညီသောအရာကိုလုပ်ဆောင်သည်- packet ကိုပြန်လည်ပေးပို့သည်။ အချိန်ကို ထိန်းချုပ်ရန်၊ ဤယန္တရားသည် စောင့်ဆိုင်းချိန်၏ အဆုံးကို ဆုံးဖြတ်ရန် ခွင့်ပြုသည့် နှစ်သစ်တိုင်မာကို အသုံးပြုသည်။ ဒီတော့ အထုပ်ထဲမှာ ပိုက် TCPKeepAlive ကို ပုံသေအားဖြင့် 15 စက္ကန့် သတ်မှတ်ထားသည်-

// defaultTCPKeepAlive is a default constant value for TCPKeepAlive times
// See golang.org/issue/31510
const (
    defaultTCPKeepAlive = 15 * time.Second
)

ပေးပို့သူဘက်မှ packet တစ်ခု (ပထမအကြိမ်နှင့် ဒုတိယတစ်ကြိမ်) ထုတ်လွှင့်သည့်အခါတိုင်း timer တစ်ခု စတင်ရန် လိုအပ်ပြီး timer မှ အနှောင့်အယှက်များကို ကိုင်တွယ်ပြီး ၎င်းကို ရပ်လိုက်ပါ။

ထို့ကြောင့်၊ ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်းဆိုင်ရာ ပရိုတိုကောများ၏ အဓိကသဘောတရားများကို ကျွန်ုပ်တို့ ရင်းနှီးလာပါပြီ-

  • ချက်လက်မှတ်များ;
  • အထုပ်များ၏ sequence နံပါတ်များ;
  • တိုင်မာများ;
  • အပြုသဘောဆောင်သော နှင့် အပျက်သဘောဆောင်သော ပြေစာများ။

ဒါပမေယျ့။

ပိုက်လိုင်းဖြင့် စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း ပရိုတိုကော

ကျွန်ုပ်တို့ထည့်သွင်းစဉ်းစားထားပြီးဖြစ်သည့် ဗားရှင်းတွင်၊ ယုံကြည်စိတ်ချရသော ပေးပို့မှုပရိုတိုကောသည် အလွန်ထိရောက်မှုမရှိပါ။ RTT တိုးလာသည်နှင့်အမျှ ဆက်သွယ်ရေးချန်နယ်မှ ပံ့ပိုးပေးသော ထုတ်လွှင့်မှုကို "နှေးကွေးစေသည်" ကို စတင်သည်။ ၎င်း၏ထိရောက်မှုနှင့် ဆက်သွယ်ရေးလမ်းကြောင်းစွမ်းရည်ကို ပိုမိုကောင်းမွန်စွာအသုံးချရန်၊ ပိုက်လိုင်းကို အသုံးပြုသည်။

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

ပိုက်လိုင်းအသုံးပြုခြင်းသည် အောက်ပါတို့ကို ဖြစ်စေသည်။

  • ပေးပို့ထားသော ပက်ကေ့ခ်ျများ (ပြန်လည်ပေးပို့ခြင်းမှလွဲ၍) အားလုံးကို သီးသန့်ခွဲခြားသတ်မှတ်ထားရမည်ဖြစ်သောကြောင့် ဆင့်ကိန်းနံပါတ်များ၏ အကွာအဝေးကို တိုးမြှင့်ခြင်း၊
  • ပေးပို့ခြင်းနှင့် လက်ခံခြင်းဘက်များတွင် ကြားခံများကို တိုးမြှင့်ရန် လိုအပ်သည်။

နံပါတ်အပိုင်းအခြားနှင့် ကြားခံအရွယ်အစားလိုအပ်ချက်များသည် ပက်ကတ်ဖောက်ပြန်မှု၊ ဆုံးရှုံးမှုနှင့် နှောင့်နှေးမှုများကို တုံ့ပြန်သည့် ပရိုတိုကောလုပ်ဆောင်မှုများအပေါ် မူတည်သည်။ ပိုက်လိုင်းကိစ္စတွင်၊ အမှားများကိုပြင်ရန်နည်းလမ်းနှစ်ခုရှိသည်။

  • N packets များကို ပြန်ပေးခြင်း၊
  • ရွေးချယ်မှု ထပ်ခါထပ်ခါ။

N packets များကို ပြန်သွားခြင်း - လျှောဝင်းဒိုးပရိုတိုကော

ယုံကြည်စိတ်ချရသော ဒေတာလွှဲပြောင်းခြင်း၏ အခြေခံအချက်များ

ပေးပို့သူသည် အစီအစဉ်သုံးမျိုးအား ပံ့ပိုးပေးရမည်-

  • ပိုမိုမြင့်မားသောအဆင့်ပရိုတိုကောဖြင့်ခေါ်ဆိုပါ။ ဒေတာပေးပို့ခြင်းလုပ်ဆောင်ချက်ကို "အထက်မှ" ဟုခေါ်သောအခါ၊ ပေးပို့သည့်ဘက်မှ ဦးစွာ ဝင်းဒိုး၏ ဖြည့်သွင်းမှုအဆင့်ကို စစ်ဆေးသည် (ဆိုလိုသည်မှာ ပြေစာလက်ခံရရှိမှုကို စောင့်မျှော်နေသော N ပေးပို့ထားသောစာများ ရှိနေခြင်း)။ ဝင်းဒိုးသည် ဗလာဖြစ်ပါက၊ ပက်ကေ့ခ်ျအသစ်ကို ထုတ်ပေးပြီး ပို့လွှတ်ကာ ပြောင်းလဲနိုင်သော တန်ဖိုးများကို အပ်ဒိတ်လုပ်ထားသည်။ မဟုတ်ပါက ပေးပို့သည့်အခြမ်းမှ ဒေတာကို အပေါ်လွှာသို့ ပြန်ပို့ပေးပြီး ၎င်းသည် ဝင်းဒိုးပြည့်နေကြောင်း သွယ်ဝိုက်သော အရိပ်အယောင်တစ်ခုဖြစ်သည်။ ပုံမှန်အားဖြင့် အပေါ်အလွှာသည် အချိန်အနည်းငယ်ကြာပြီးနောက် ဒေတာကို ထပ်မံပေးပို့ရန် ကြိုးစားမည်ဖြစ်သည်။ တကယ့်အပလီကေးရှင်းတစ်ခုတွင်၊ ပေးပို့သူသည် ဒေတာကို (ချက်ချင်းပို့မည့်အစား) ကြားခံဖြစ်စေနိုင်သည် သို့မဟုတ် ဝင်းဒိုးလွတ်နေမှသာ အပေါ်အလွှာမှ ပေးပို့သည့်လုပ်ဆောင်ချက်ကို ခေါ်နိုင်စေမည့် ထပ်တူပြုမှုယန္တရားတစ်ခု (ဥပမာ သို့မဟုတ် အလံကဲ့သို့) တူညီမှုရှိနိုင်သည် .
  • အတည်ပြုချက်ရယူခြင်း။ ပရိုတိုကောတွင်၊ နံပါတ် N ပါသည့် ပက်ကေ့ခ်ျတစ်ခုအတွက်၊ N ၏ရှေ့ဆက်နံပါတ်များပါသည့် ပက်ကေ့ခ်ျအားလုံးကို အောင်မြင်စွာရရှိခဲ့ကြောင်း ညွှန်ပြသည့် ယေဘူယျအသိအမှတ်ပြုချက်ကို ထုတ်ပြန်သည်။
  • စောင့်ဆိုင်းကာလ ကုန်ဆုံးသွားပါပြီ။ ထုပ်ပိုးမှုများနှင့် ပြေစာများ၏ ဆုံးရှုံးမှုများနှင့် ကြန့်ကြာမှုများ၏ အချက်အလက်များကို ဆုံးဖြတ်ရန်၊ ပရိုတိုကောသည် အချိန်တိုင်းကိရိယာကို အသုံးပြုသည်။ အချိန်လွန်ကာလ ကုန်ဆုံးသွားပါက၊ ပေးပို့သူဘက်မှ အသိအမှတ်ပြုမခံရသေးသော ထုပ်ပိုးမှုအားလုံးကို ပြန်လည်ပေးပို့သည်။

အထပ်ထပ်ရွေးချယ်ပါ။

ပြတင်းပေါက် အရွယ်အစားနှင့် ဖောက်ထုတ်မှု နှောင့်နှေးမှု ထုတ်ကုန် ကြီးမားသောအခါ၊ ပက်ကေ့ခ်ျ အများအပြားသည် ပိုက်လိုင်းတွင် ရှိနေနိုင်သည်။ ထိုသို့သောအခြေအနေမျိုးတွင်၊ packet တစ်ခုတည်းအမှားတစ်ခုသည် packet အများအပြားကို ပြန်လည်ပေးပို့ရနိုင်ပြီး၊ အများစုမှာ မလိုအပ်ပါ။

နမူနာ

အကောင်းဆုံး သီအိုရီ အလေ့အကျင့်များကို လက်တွေ့အကောင်အထည် ဖော်ရာတွင် စုဆောင်းထားသည်။ သည် TCP. တစ်ယောက်ယောက်က ဘယ်လောက်အကောင်းဆုံးလဲဆိုတာ သိရင်၊ ကြိုဆို.

ဆာဗာက

package main

import (
    "bufio"
    "fmt"
    "log"
    "net"
    "strings"
)

func main() {
    // создаем сокет с портом 
    ln, err := net.Listen("tcp", ":8081")
    if err != nil {
        log.Fatalln(err)
    }
    // ожидание вызова
    conn, _ := ln.Accept()

    for {
        // считывание данных
        msg, err := bufio.NewReader(conn).ReadString('n')
        if err != nil {
            log.Fatalln(err)
        }
        // вывод сообщения в stdout
        fmt.Print("Message Received:", string(msg))
        // перевод строки в верхний регистр
        newMsg := strings.ToUpper(msg)
        // отправка данных
        conn.Write([]byte(newMsg + "n"))
    }
}

လိုင်း

package main

import (
    "bufio"
    "fmt"
    "log"
    "net"
    "os"
)

func main() {
    // установка соединения
    conn, err := net.Dial("tcp", "127.0.0.1:8081")
    if err != nil {
        log.Fatalln(err)
    }

    for {
        // считывание данных с stdin
        reader := bufio.NewReader(os.Stdin)
        fmt.Print("Text to send: ")
        // построчно
        text, err := reader.ReadString('n')
        if err != nil {
            log.Fatalln(err)
        }
        // отправка
        fmt.Fprintf(conn, text+"n")
        // прием
        msg, err := bufio.NewReader(conn).ReadString('n')
        if err != nil {
            log.Fatalln(err)
        }
        // вывод полученного ответа
        fmt.Print("Msg from Server: " + msg)
    }
}

ကောက်ချက်

ယုံကြည်စိတ်ချရသောဒေတာလွှဲပြောင်းမှုနှင့်အသုံးပြုမှုကိုသေချာစေရန်ယန္တရားများ

Механизм
လျှောက်လွှာ၊ မှတ်ချက်

ပေါင်းလဒ်စစ်ဆေးပါ
ပို့လွှတ်ထားသော ပက်ကေ့ခ်ျတွင် ဘစ်အမှားများကို ရှာဖွေရန် အသုံးပြုသည်။

အချစ်ဇာတ်လမ်း
အချိန်ကုန်သည့်ကြားကာလကို ရေတွက်ပြီး သက်တမ်းကုန်ဆုံးချိန်ကို ညွှန်ပြသည်။ နောက်ဆိုလိုသည်မှာ ဖြစ်နိုင်ခြေမြင့်မားသော အတိုင်းအတာဖြင့် ပက်ကတ် သို့မဟုတ် ၎င်း၏ ပြေစာသည် ထုတ်လွှင့်နေစဉ်အတွင်း ပျောက်ဆုံးသွားခြင်းကို ဆိုလိုသည်။ ပက်ကေ့ဂျ်တစ်ခုကို နှောင့်နှေးစွာဖြင့် ပို့ဆောင်သော်လည်း မပျောက်ဆုံးပါက (အချိန်လွန်ကာလ၏ အချိန်မတန်မီ သက်တမ်းကုန်ဆုံးသည်) သို့မဟုတ် ပြေစာပျောက်ဆုံးသွားပါက ပြန်လည်ပေးပို့ခြင်းသည် လက်ခံသည့်ဘက်ခြမ်းရှိ ပက်ကေ့ကို ပွားသွားစေသည်။

နံပါတ်စဥ်
ပေးပို့သူမှ လက်ခံသူထံသို့ ပေးပို့သော ဒေတာပက်ကေ့ခ်ျများ၏ နံပါတ်စဉ်အလိုက် နံပါတ်စဉ်များအတွက် အသုံးပြုသည်။ လက်ခံရရှိထားသော ပက်ကတ်များ၏ နံပါတ်စဉ်အလိုက် ကွာဟချက်များသည် လက်ခံသူအား ပက်ကတ်ဆုံးရှုံးမှုကို သိရှိနိုင်စေပါသည်။ တူညီသော packet sequence နံပါတ်များသည် packet များသည် တစ်ခုနှင့်တစ်ခု ထပ်နေသည်ဟု ဆိုလိုသည်။

အတည်ပြုခြင်း
လက်ခံရရှိသည့်အဆုံးမှ ထုတ်လုပ်ပြီး သက်ဆိုင်ရာ ပက်ကတ် သို့မဟုတ် ပက်ကတ်အုပ်စုကို အောင်မြင်စွာလက်ခံရရှိကြောင်း ပေးပို့သည့်အဆုံးကို ညွှန်ပြသည်။ ပုံမှန်အားဖြင့် အသိအမှတ်ပြုမှုတွင် အောင်မြင်စွာလက်ခံရရှိထားသော ပက်ကတ်များ၏ နံပါတ်စဉ်များပါရှိသည်။ ပရိုတိုကောအပေါ်မူတည်၍ တစ်ဦးချင်းနှင့် အဖွဲ့အတည်ပြုချက်များကို ခွဲခြားထားသည်။

နှုတ်ဖြင့် အတည်ပြုချက်
packet ကို မှားယွင်းစွာ လက်ခံရရှိကြောင်း ပေးပို့သူအား အသိပေးရန် လက်ခံသူမှ အသုံးပြုပါသည်။ အနှုတ်သဘော အသိအမှတ်ပြုမှုတွင် မှန်ကန်စွာ လက်ခံမရသော ပက်ကတ်၏ နံပါတ်စဉ်များ ပါဝင်ပါသည်။

ပြတင်းပေါက်၊ သယ်ယူပို့ဆောင်ရေး
ပက်ကေ့ဂျ်များကို ပို့လွှတ်ရန်အတွက် အသုံးပြုနိုင်သည့် အတွဲနံပါတ်များ၏ အကွာအဝေးကို ကန့်သတ်ပါ။ Multicast နှင့် လက်ဆွဲနှုတ်ဆက်ခြင်းသည် အသိအမှတ်ပြုမှုများကို စောင့်ဆိုင်းခြင်းထက် ပရိုတိုကောဖြတ်သန်းမှုကို သိသိသာသာတိုးစေနိုင်သည်။ ကျွန်ုပ်တို့မြင်နေရသည့်အတိုင်း၊ လက်ခံရရှိသည့်အဆုံး၏ ဧည့်ခံနှင့် buffering လုပ်ဆောင်နိုင်စွမ်းအပြင် ကွန်ရက်ဝန်အဆင့်အပေါ်အခြေခံ၍ ဝင်းဒိုးအရွယ်အစားကို တွက်ချက်နိုင်သည်။

ကွန်ရက်ချိတ်ဆက်မှုအတွက် Go ကိုအသုံးပြုခြင်း၏ နောက်ထပ်ဥပမာများ

В သိုလှောင်မှုများ.

source: www.habr.com

မှတ်ချက် Add