Sobes.tech
Senior

Kokiuose OSI modelio lygiuose dirbote?

sobes.tech AI

Atsakymas iš AI

Dirbdamas su Golang, dažniausiai dirbau su OSI modelio sluoksniais, pradedant nuo transporto sluoksnio ir aukščiau:

  • Transporto sluoksnis (4): darbas su TCP ir UDP ryšiais, tinklo protokolų įgyvendinimas, laiko limitų nustatymas, duomenų srautų valdymas.
  • Tinklo sluoksnis (3): kartais dirbau su IP adresavimu, maršrutizavimu, pavyzdžiui, rašydamas tinklo įrankius ar paslaugas.
  • Programų sluoksnis (7): HTTP/HTTPS klientų ir serverių įgyvendinimas, darbai su REST API, WebSocket, gRPC.

Pavyzdys Go kalba TCP serveriui:

package main

import (
    "fmt"
    "net"
)

func main() {
    ln, err := net.Listen("tcp", ":8080")
    if err != nil {
        panic(err)
    }
    defer ln.Close()

    for {
        conn, err := ln.Accept()
        if err != nil {
            fmt.Println("Klaida priimant:", err)
            continue
        }
        go handleConnection(conn)
    }
}

func handleConnection(conn net.Conn) {
    defer conn.Close()
    buf := make([]byte, 1024)
    n, err := conn.Read(buf)
    if err != nil {
        fmt.Println("Klaida skaitant:", err)
        return
    }
    fmt.Println("Gauta:", string(buf[:n]))
    conn.Write([]byte("Sveiki iš serverio!"))
}

Šiuo būdu dirbau su transporto ir programų sluoksniais, taip pat turiu bendrą supratimą apie tinklo sluoksnį.