Sobes.tech
Junior

Jaka jest różnica między protokołami TCP a UDP?

sobes.tech AI

Odpowiedź od AI

TCP - oparty na połączeniu, gwarantuje dostarczenie i kolejność pakietów. UDP - bez ustanowienia połączenia, nie gwarantuje dostarczenia ani kolejności, ale jest szybszy.

Główne różnice:

Cecha TCP UDP
Orientacja Z ustanowieniem połączenia Bez ustanowienia połączenia
Niezawodność Wysoka (gwarantuje dostarczenie) Niska (nie gwarantuje dostarczenia)
Kolejność Gwarantowana Nie gwarantowana
Kontrola przepływu Tak Nie
Kontrola błędów Tak (transmisja i kolejność) Nie (podstawowa suma kontrolna)
Prędkość Niższa Wyższa
Zastosowanie HTTP, FTP, SSH DNS, DHCP, gry online, streaming

Przykład kodu do wysyłania danych przez TCP w Go:

package main

import (
	"net"
	"log"
)

func main() {
	conn, err := net.Dial("tcp", "localhost:8080") // Ustanowienie połączenia TCP
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close() // Gwarancja zamknięcia połączenia

	_, err = conn.Write([]byte("Hello, TCP!")) // Wysyłanie danych
	if err != nil {
		log.Fatal(err)
	}
}

Przykład kodu do wysyłania danych przez UDP w Go:

package main

import (
	"net"
	"log"
)

func main() {
	addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // Określenie adresu UDP
	if err != nil {
		log.Fatal(err)
	}

	conn, err := net.DialUDP("udp", nil, addr) // Utworzenie "połączenia" UDP (bez sesji)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close() // Zamknięcie gniazda

	_, err = conn.Write([]byte("Hello, UDP!")) // Wysyłanie danych
	if err != nil {
		log.Fatal(err)
	}
}