Sobes.tech
Назад к вопросам
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)
	}
}