Junior
Qual è la differenza tra i protocolli TCP e UDP?
sobes.tech AI
Risposta dell'AI
TCP - orientato alla connessione, garantisce la consegna e l’ordine dei pacchetti. UDP - senza stabilire una connessione, non garantisce la consegna né l’ordine, ma è più veloce.
Principali differenze:
| Caratteristica | TCP | UDP |
|---|---|---|
| Orientamento | Con stabilimento di connessione | Senza stabilimento di connessione |
| Affidabilità | Alta (garantisce la consegna) | Bassa (non garantisce la consegna) |
| Ordine | Garantito | Non garantito |
| Controllo del flusso | Sì | No |
| Controllo degli errori | Sì (trasmissione e ordine) | No (somma di controllo di base) |
| Velocità | Inferiore | Superiore |
| Utilizzo | HTTP, FTP, SSH | DNS, DHCP, giochi online, streaming |
Esempio di codice per inviare dati tramite TCP in Go:
package main
import (
"net"
"log"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080") // Stabilire connessione TCP
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Garantire la chiusura della connessione
_, err = conn.Write([]byte("Hello, TCP!")) // Inviare dati
if err != nil {
log.Fatal(err)
}
}
Esempio di codice per inviare dati tramite UDP in Go:
package main
import (
"net"
"log"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // Definire indirizzo UDP
if err != nil {
log.Fatal(err)
}
conn, err := net.DialUDP("udp", nil, addr) // Creare "connessione" UDP (senza sessione)
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Chiudere la socket
_, err = conn.Write([]byte("Hello, UDP!")) // Inviare dati
if err != nil {
log.Fatal(err)
}
}