Junior
Каква е разликата между протоколите TCP и UDP?
sobes.tech AI
Отговор от AI
TCP - ориентиран към връзката, гарантира доставката и реда на пакетите. UDP - без установяване на връзка, не гарантира доставката и реда, но е по-бърз.
Основни разлики:
| Признак | TCP | UDP |
|---|---|---|
| Ориентация | С установяване на връзка | Без установяване на връзка |
| Надеждност | Висока (гарантира доставката) | Ниска (не гарантира доставката) |
| Порядък | Гарантиран | Не гарантиран |
| Управление на потока | Има | Няма |
| Контрол на грешките | Има (пренос и ред) | Няма (основна контролна сума) |
| Скорост | По-ниска | По-висока |
| Използване | HTTP, FTP, SSH | DNS, DHCP, онлайн игри, стрийминг |
Пример за код за изпращане на данни по TCP в Go:
package main
import (
"net"
"log"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8080") // Установяване на TCP връзка
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Гарантиране на затваряне на връзката
_, err = conn.Write([]byte("Hello, TCP!")) // Изпращане на данни
if err != nil {
log.Fatal(err)
}
}
Пример за код за изпращане на данни по UDP в Go:
package main
import (
"net"
"log"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // Определяне на UDP адрес
if err != nil {
log.Fatal(err)
}
conn, err := net.DialUDP("udp", nil, addr) // Създаване на "връзка" UDP (без сесия)
if err != nil {
log.Fatal(err)
}
defer conn.Close() // Затваряне на сокета
_, err = conn.Write([]byte("Hello, UDP!")) // Изпращане на данни
if err != nil {
log.Fatal(err)
}
}