Назад к вопросам
Junior
192
questionbank
В чем отличие между протоколами TCP и UDP?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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)
}
}