Junior
¿Cuál es la diferencia entre los protocolos TCP y UDP?
sobes.tech AI
Respuesta de la IA
TCP: orientado a la conexión, garantiza la entrega y el orden de los paquetes. UDP: sin establecimiento de conexión, no garantiza la entrega ni el orden, pero es más rápido.
Diferencias principales:
| Característica | TCP | UDP |
|---|---|---|
| Orientación | Con establecimiento de conexión | Sin establecimiento de conexión |
| Fiabilidad | Alta (garantiza la entrega) | Baja (no garantiza la entrega) |
| Orden | Garantizado | No garantizado |
| Control de flujo | Sí | No |
| Control de errores | Sí (transmisión y orden) | No (suma de comprobación básica) |
| Velocidad | Menor | Mayor |
| Uso | HTTP, FTP, SSH | DNS, DHCP, juegos en línea, streaming |
Ejemplo de código para enviar datos por TCP en Go:
package main
import (
"net"
"log"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080") // Establecer conexión TCP
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Garantizar cierre de conexión
_, err = conn.Write([]byte("Hello, TCP!")) // Enviar datos
if err != nil {
log.Fatal(err)
}
}
Ejemplo de código para enviar datos por UDP en Go:
package main
import (
"net"
"log"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // Definir dirección UDP
if err != nil {
log.Fatal(err)
}
conn, err := net.DialUDP("udp", nil, addr) // Crear "conexión" UDP (sin sesión)
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Cerrar socket
_, err = conn.Write([]byte("Hello, UDP!")) // Enviar datos
if err != nil {
log.Fatal(err)
}
}