Sobes.tech
Junior

Kuo skiriasi TCP ir UDP protokolai?

sobes.tech AI

Atsakymas iš AI

TCP - orientuotas į ryšį, užtikrina paketų pristatymą ir tvarką. UDP - be ryšio nustatymo, ne garantuoja pristatymą ir tvarką, bet yra greitesnis:

Pagrindiniai skirtumai:

Žymuo TCP UDP
Orientacija Su ryšio nustatymu Be ryšio nustatymo
Patikimumas Aukštas (užtikrina pristatymą) Žemas (ne garantuoja pristatymo)
Tvarka Garantijuota Ne garantuojama
Srauto valdymas Yra Nėra
Klaidos kontrolė Yra (perdavimas ir tvarkos kontrolė) Nėra (pagrindinė patikros suma)
Greitis Žemesnis Aukštesnis
Naudojimas HTTP, FTP, SSH DNS, DHCP, internetiniai žaidimai, srautinė transliacija

Pavyzdinis kodas TCP duomenų siuntimui Go kalba:

package main

import (
	"net"
	"log"
)

func main() {
	conn, err := net.Dial("tcp", "localhost:8080") // TCP ryšio nustatymas
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close() // Ryšio uždarymas

	_, err = conn.Write([]byte("Hello, TCP!")) // Duomenų siuntimas
	if err != nil {
		log.Fatal(err)
	}
}

UDP duomenų siuntimui Go kalba:

package main

import (
	"net"
	"log"
)

func main() {
	addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // UDP adreso nustatymas
	if err != nil {
		log.Fatal(err)
	}

	conn, err := net.DialUDP("udp", nil, addr) // UDP "ryšys" (be sesijos nustatymo)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close() // Uždaryti soketą

	_, err = conn.Write([]byte("Hello, UDP!")) // Duomenų siuntimas
	if err != nil {
		log.Fatal(err)
	}
}