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