Junior
Jaký je rozdíl mezi protokoly TCP a UDP?
sobes.tech AI
Odpověď od AI
TCP - orientovaný na spojení, zaručuje doručení a pořadí paketů. UDP - bez navázání spojení, nezaručuje doručení ani pořadí, ale je rychlejší.
Hlavní rozdíly:
| Vlastnost | TCP | UDP |
|---|---|---|
| Orientace | S navázáním spojení | Bez navázání spojení |
| Spolehlivost | Vysoká (zaručuje doručení) | Nízká (nezaručuje doručení) |
| Pořadí | Zaručeno | Není zaručeno |
| Řízení toku | Ano | Ne |
| Kontrola chyb | Ano (přenos a pořadí) | Ne (základní kontrolní součet) |
| Rychlost | Nižší | Vyšší |
| Použití | HTTP, FTP, SSH | DNS, DHCP, online hry, streaming |
Příklad kódu pro odeslání dat přes TCP v Go:
package main
import (
"net"
"log"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080") // Navázání TCP spojení
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Zajištění uzavření spojení
_, err = conn.Write([]byte("Hello, TCP!")) // Odeslání dat
if err != nil {
log.Fatal(err)
}
}
Příklad kódu pro odeslání dat přes UDP v Go:
package main
import (
"net"
"log"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // Definice UDP adresy
if err != nil {
log.Fatal(err)
}
conn, err := net.DialUDP("udp", nil, addr) // Vytvoření "spojení" UDP (bez relace)
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Zavření socketu
_, err = conn.Write([]byte("Hello, UDP!")) // Odeslání dat
if err != nil {
log.Fatal(err)
}
}