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)
}
}