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)
}
}