Junior
Care este diferența dintre protocoalele TCP și UDP?
sobes.tech AI
Răspuns de la AI
TCP - orientat pe conexiune, garantează livrarea și ordinea pachetelor. UDP - fără stabilirea unei conexiuni, nu garantează livrarea și ordinea, dar este mai rapid.
Diferențele principale:
| Caracteristică | TCP | UDP |
|---|---|---|
| Orientare | Cu stabilirea conexiunii | Fără stabilirea conexiunii |
| Fiabilitate | Ridicată (garantează livrarea) | Scăzută (nu garantează livrarea) |
| Ordine | Garanțată | Nu garantată |
| Controlul fluxului | Da | Nu |
| Controlul erorilor | Da (transmisie și ordine) | Nu (sumă de control de bază) |
| Viteză | Mai mică | Mai mare |
| Utilizare | HTTP, FTP, SSH | DNS, DHCP, jocuri online, streaming |
Exemplu de cod pentru trimiterea datelor prin TCP în Go:
package main
import (
"net"
"log"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080") // Stabilirea conexiunii TCP
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Asigurarea închiderii conexiunii
_, err = conn.Write([]byte("Hello, TCP!")) // Trimiterea datelor
if err != nil {
log.Fatal(err)
}
}
Exemplu de cod pentru trimiterea datelor prin UDP în Go:
package main
import (
"net"
"log"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // Definirea adresei UDP
if err != nil {
log.Fatal(err)
}
conn, err := net.DialUDP("udp", nil, addr) // Crearea unei "conexiuni" UDP (fără sesiune)
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Închiderea socket-ului
_, err = conn.Write([]byte("Hello, UDP!")) // Trimiterea datelor
if err != nil {
log.Fatal(err)
}
}