Ekim 19, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?
Bilgisayar Ağları Nedir 2 ?

Bilgisayar Ağları Nedir 2 ?

Paylaşım , Takip İçin
  • 2
    Shares

İçindekiler

  • Mimari
  • Ağ uygulanması geliştirme
    • API, Örnek Uygulama
  • Performans
    • Bandwidth, Latency, Delay, Throughput
  • Uygulama Performansı

Bilgisayar Ağları Mimari

  • Bir bilgisayar ağı, çok sayıda bilgisayar arasında genel, düşük maliyetli, adil ve sağlam bağlantılar sağlamalıdır.
  • Ağların, değişikliklere, uygulama programlarına ve birlikte çalışabilirliğe uyum sağlayabilmesi için genel mimari taslağının olması gerekir.
  • Yaygın olarak bilinen 2 ağ mimarisi OSI ve Internet (DoD)’dir.
  • Bu yaklaşım genel olarak soyutlama (Abstraction) olarak bilinir.
  • Soyutlama, tasarımcıların karmaşıklığı azaltmak için ayrıntıları iyi tanımlanmış ara yüzlerin arkasına saklaması yaklaşımıdır.
  • Soyutlama, ağ sistemleri açısından katmanlamayla (layering) sağlanır.
  • Katmanlama, altta yatan donanımdan alınan hizmetle başlayıp alınan çıktıların daha üstteki katmanlara sunulmasıdır.
  • Katmanlamanın en önemli iki avantajı;

▫Bir ağ açısından daha yönetilebilir bileşenler sunarak, sorunların sistemin belli katmanlarına indirgenmesini sağlar

▫Daha modüler bir tasarımla, yeni işlevlerin eklenmesini sadece belirli katmanlara indirgeyebiliriz

 

  • Soyutlama’da, sistemin herhangi bir katmanında birden fazla soyutlama yer alabilir.
  • Bu katman içi soyutlamaların her biri, üst katmanlara farklı bir hizmet sunarken, aynı alt seviyedeki soyut katman üzerine kuruludur.
  • Şekildeki gibi 3. katmanda soyutlamalardan biri istek/yanıt servisini sağlarken, bir diğeri mesaj akış hizmetini sunabilmektedir.
  • Bir ağ sisteminin katmanlarını oluşturan soyut nesnelere protokol denir.
  • Her protokol, iki farklı arabirim sunar.

▫Aynı makine içinde iletişim servislerini kullanmak isteyen diğer nesneler için bir hizmet ara yüzü sunar. Örneğin. http protokolünün sunduğu link vb. hizmetler.

▫Farklı makinelerdeki akran protokolü için arabirim sunar. Örneğin HTTP protokolünün GET metodunun web sunucusunda nasıl işlenmesi gerektiğine karar vermesi gibi.

Bilgisayar Ağları Nedir 2 ?
  • Bu örnekte, Host 1’deki Dosya (file app) Uygulaması, Host 2 üzerindeki hizmeti kullanmak için RRP (request/reply protocol) tarafından sunulan hizmeti kullanarak bir ileti göndermek ister.
  • Bu durumda Dosya Uygulaması RRP’ye mesajı onun adına göndermesini ister. RRP, diğer makineyle iletişim için HHP’yi (Host-Host-Protocol) çağırır. Mesaj Host 2’ye geldiğinde HHP’yi çağırır, HHP mesajı RRP’ye geçer ve mesaj Dosya Uygulamasına iletilir.
Bilgisayar Ağları Nedir 2 ?
  • Kapsülleme – (Encapsulation), Üst katman protokollerinden alınan yükün (payload), karşılıklı olarak konuşabilmeleri için alt katman protokolü tarafından kontrol bilgisi, adres vb. başlık (header) veya kuyruk (trailer)’ ların eklenmesi işlemine denir.
  • Kapsülleme işlemi protokol yığınının her seviyesinde gerçekleşir.
Bilgisayar Ağları Nedir 2 ?

Mimari / OSI

  • ISO tarafından ilk kez ağlar için tanımlanan katmansal mimari Open Systems Interconnection – OSI olarak bilinir.
  • Bu model bir protokol yığınından çok bir mimari olarak tanımlanmıştır.
Bilgisayar Ağları Nedir 2 ?
  • Fiziksel katman, iletişim hattı üzerindeki bit iletimini,
  • Veri bağı, çerçeve adı verilen bit yığınını ağ bağdaştırıcıları üzerinden işletim sistemindeki sürücülerle düzenler
  • Ağ katmanı, paket anahtarlamalı ağlarda yönlendirme işlemini tanımlar.
  • Taşıma katmanı, host bilgisayarlarda çalışan uygulama istek/cevap ara yüzlerini tanımlar
  • Diğer 3 katman uygulamaya özgüdür ve soyutlanmamış olabilir.
Bilgisayar Ağları Nedir 2 ?

Mimari / DoD

  • TCP/IP mimarisi olarak da ifade edilen İnternet mimarisi, ARPANET olarak bilinen ilk paket anahtarlamalı ağlar için ABD savunma bakanlığı (Department of Defense) tarafından geliştirilmiştir.
  • OSI’nin internete uygulanmasındaki zorluklardan dolayı 4 katmanlı model önerilmiştir.
  • NET1, NET2 olarak sunulan en alt katmanda 802.x gibi ethernet ve kablosuz iletişimi tanımlayan protokoller bulunur.
  • İkinci katman sadece IP (Internet Protocol) protokolünden oluşur.
  • Üçüncü katman ise TCP ve UDP gibi uçtan uca aktarım protokollerini tanımlar.
Bilgisayar Ağları Nedir 2 ?

ISO / DOD

ISO - DOD

Ağ Uygulaması Geliştirme

  • Bilgisayar ağlarındaki bu hızlı gelişimin en önemli faktörlerinden biri de ağ uygulama yazılımı geliştirmedeki standartlardır.
  • Bir ağ yazılımı, işletim sisteminin ağ arayüzleri için standart olarak sağladığı Ağ API’ları ile kolayca geliştirilebilmektedir.
  • Her işletim sistemi kendi ağ API’ını tanımlayabilmekte serbesttir. Ancak Unix Berkeley tarafından geliştirilen socket API’yı neredeyse tüm sistemler tarafından desteklenir durumdadır.
  • Ayrıca Java gibi platform bağımsız soket uygulamaları için standart oluşturmuştur.
  • Soket arayüzünün ana soyutlaması soket’lerdir. Soketler, yerel uygulamaların ağa eklendiği noktalardır.
  • Soket API’ları soketi oluşturmak, soketi ağa bağlamak, ileti alma/gönderme yapmak ve soketi kapatmak için işlemleri tanımlar.
  • Socket API’yı kullanarak TCP tabanlı ağ uygulaması geliştirmek için.

▫int socket(int domain, int type, int protocol) ile soket tanımı yapılır

–domain argümanı:  PF_INET, PF_UNIX, PF_PACKET

–type argümanı: SOCK_STREAM (TCP), SOCK_DGRAM (UDP)

–protokol argümanı: üst seviye protokoller tanımlanır.

  • Sonraki adımda sunucu yada istemci olma durumuna göre bağlantı tanımlanır. Sunucu için passive open durumunda

▫int bind(int socket, struct sockaddr *address, int addr_len)

–İstenilen sunucu adresine ait soket kurulur

▫int listen(int socket, int backlog)

–Soket dinlenir

▫int accept(int socket, struct sockaddr *address, int *addr_len)

–Yeni bir bağlantı kuruluncaya kadar passive open durumunda beklenir.

  • İstemci bir sokete bağlanmak istediğinde;

▫int connect(int socket, struct sockaddr *address, int addr_len)

–Sunucunun soketine bağlanılmaya çalışılır. Başarılı bir şekilde bağlantı kurulunca soket işlenebilir.

  • Bir bağlantı kurulduktan sonra oluşturulan soket üzerinden veri göndermek ve almak için;

▫int send(int socket, char *message, int msg len, int flags)

–İlgili mesaj belirtilen sokete iletilir.

▫int recv(int socket, char *buffer, int buf len, int flags)

–Belirtilen soketten arabelleğe mesaj okunur.

Örnek - Server

#include<stdio.h>

#include<string.h>    //strlen

#include<sys/socket.h>

#include<arpa/inet.h> //inet_addr

#include<unistd.h>    //write

int main(int argc , char *argv[]){

    int socket_desc , client_sock , c , read_size;

    struct sockaddr_in server , client;

    char client_message[2000];

    socket_desc = socket(AF_INET , SOCK_STREAM , 0); //Create socket

    if (socket_desc == -1) printf("Could not create socket");

    puts("Socket created");

    server.sin_family = AF_INET;

    server.sin_addr.s_addr = INADDR_ANY;

    server.sin_port = htons( 8888 );

    if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0){

        perror("bind hatasi"); return 1;}

    listen(socket_desc , 3);

    puts("Baglanti bekleniyor...");

    c = sizeof(struct sockaddr_in);

    client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c);

    if (client_sock < 0){

        perror("accept hatasi"); return 1;

    }

    puts("Baglanti basarili…");

    while( (read_size = recv(client_sock , client_message , 2000 , 0)) > 0 ) {

  write(client_sock , client_message , strlen(client_message));

    }

    if(read_size == 0) {

        puts("Client ayrildi");

        fflush(stdout);

    }

    else if(read_size == -1) {

        perror("okuma hatasi");

    }

    return 0;

Örnek - Client

#include<stdio.h>      //printf

#include<string.h>     //strlen

#include<sys/socket.h> //socket

#include<arpa/inet.h>  //inet_addr

int main(int argc , char *argv[]){

    int sock;

    struct sockaddr_in server;

    char message[1000] , server_reply[2000];

    

    sock = socket(AF_INET , SOCK_STREAM , 0);

    if (sock == -1) {

        printf("socket olusturulamiyor");

    }

    puts("Soket olusturuldu");

    server.sin_addr.s_addr = inet_addr("127.0.0.1");

    server.sin_family = AF_INET;

    server.sin_port = htons( 8888 );




    if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0) {

        perror("baglanti hatasi"); return 1;

    }

    puts("baglanti kuruldu..\n");

    while(1) {

        printf("Mesaj gir: ");  scanf("%s" , message);

        if( send(sock , message , strlen(message) , 0) < 0) {

            puts("Mesaj iletilemedi!"); return 1;

        }

        

        if( recv(sock , server_reply , 2000 , 0) < 0) {

            puts("okuma hatasi"); break;

        }

        puts("Server cevabi: "); puts(server_reply);

    }

    close(sock);

    return 0;

}

Performans

  • Herhangi bir bilgisayar sistemi gibi bilgisayar ağlarının da iyi performans göstermesi gerekir.
  • Bu nedenle ağın performansını etkileyen faktörler önemlidir.
  • Ağ performansı 2 temel yolla ölçülür.
  • Band genişliği (bandwidth – throughput olarak da isimlendirilebilir)
  • Belirli bir süre içerisinde ağda iletilebilen bit miktarını verir.
  • Örneğin 10 Mbps’lik bir ağda, saniyede 10 milyon bit iletilebilir. Bu ağda her bitin iletim zamanı 0,1 mikro saniyedir.
  • Bandwidth (band genişliği) ile throughput (verimlilik) terimleri temelde farklıdır.
  • Birincisi elektriksel olarak frekansı ifade ederken, verimlilikte ise gerçekte iletilebilecek bit sayısı ifade edilir.
  • Gecikme (latency – delay olarak da isimlendirilir), bir iletinin, ağın bir ucundan diğerine ne kadar sürede gittiğini tanımlar
  • Tek yönlü gecikme yerine bir ağın bir ucundan diğerine gidiş-dönüş süresini bilmek daha önemli olabilir. Buna round-trip time (RTT) denir.
  • Gecikme genellikle 3 bileşene sahiptir.

▫Birincisi ışığın yayılım gecikmesidir. Mesafe ve ortama göre yayılım hızı biliniyorsa bu hesaplanabilir. Havasız ortamda 3.0×108 m/s, bakır kabloda 2.3×108 m/s ve fiberde 2.0×108 m/s’dir.

▫İkincisi bir veri birimini iletmek için geçen süre miktarıdır. Band genişliği ile ilgilidir.

▫Üçüncüsü, paket anahtarlamalı ağlardan kaynaklanan yönlendirme yaklaşımı olan store-and-forward yaklaşımdan kaynaklı kuyruk (Queue) gecikmesidir.

  • Dolayısıyla toplam gecikmeyi aşağıdaki gibi hesaplayabiliriz;

Latency = Propagation+Transmit+Queue

–Propagation = Distance/SpeedOfLight

–Transmit = Size/Bandwidth

  • Band genişliği ve gecikme belirli bir bağlantının performansını tanımlamak için birlikte ele alınır.
  • Bazı uygulamalar için gecikme band genişliğinden önemliyken bazı uygulamalar için band genişliği önem kazanır.
  • Örneğin iletilecek veri 1byte ise band genişliğinin önemi olmaz.
  • Ancak iletilecek veri 25 MB olduğunda band genişliği önem kazanacaktır. 10 Mbps’lık bir bağlantı için (25×106×8 bits ÷10×106 Mbps = 20 saniye)
  • Bu durumda 100ms yada 1ms’lik gecikmenin çok da bir önemi olmaz.
Bilgisayar Ağları Nedir 2 ?
  • Gecikme ve band genişliği (bandwidth x delay) ilişkisi, gecikmenin hattın uzunluğunu, band genişliğinin de hattın genişliğini tanımlarsa bu iki değerin çarpımı hattın hacmini yani hattan geçebilecek maksimum bit sayısını tanımlar.

▫Örneğin tek yönlü gecikme süresi 50ms, band genişliği 45Mbps olan bir hattın kapasitesi: 50×10−3s × 45×106 bits/s = 2.25×106 bits = 280 KB olur.

▫Bu kavram alıcıya ulaşmadan göndericinin kaç bit gönderebileceğini ifade eder.

▫Bu durum çift taraflı olarak, gönderene alıcının bitlerin geldiğini ifade etmesi gerektiğinde bandwidth x RTT şeklinde tanımlanır.

Bilgisayar Ağları Nedir 2 ?
  • Band genişliğindeki hızlı artış aynı zamanda gecikmenin de iyileşmesi anlamına gelmez.
  • 1Gbps’lık bir bağlantı ile 1Mbps’lık bir bağlantının kıtalar arası RTT değeri aynıdır. (100 ms civarında)
  • Aynı gecikmeye sahip 1Gbps ve 1Mbps’lık iki ağ üzerinden 1 MB’lık bir dosya iletildiğinde

1 Mbps için;

100ms gecikme 1Mbps bw

0,1s x 1 x 106bit/s = 1×106 bit

1000000bit=125000byte≈12,5KB

1 MB için ≈ 80 RTT

1 Gbps için;

100ms gecikme 1Gbps bw

0,1s x 1 x 109bit/s = 12,5MB

1 MB için 1 RTT

  • Bir ağ üzerinden elde edilebilecek etkin uçtan uca işlem hacmine verim (Throughput) denir ve aşağıdaki ilişki ile tanımlanır.

▫Throughput = TransferSize/TransferTime

  • Burada TransferTime tek yönlü gecikmenin yanında aktarım sürecinde harcanan diğer zamanları da içerir.

▫TransferTime = RTT+( (1/Bandwidth) × TransferSize )

  • Örneğin kullanıcın 100ms RTT ile 1 Gbps’lık bir ağ üzerinden 1MB’lık bir dosyayı almak istediğinde;

▫TransferTime = 100 + (1/1Gbps x 1 MB = 8 ms) = 108 ms’dir.

▫Throughput = 1 MB/108 ms = 74.1 Mbps (1 Gbps olmadığı görülüyor)

  • Band genişliği (Bandwidth) ile Verim (Throughput) arasındaki ilişki net olarak görülmektedir.

Uygulama Performansı

  • Ağ performansı o ağda koşan uygulamanın ne kadarlık bir ağ performansına ihtiyaç duyduğuyla ilgilidir.
  • Örneğin standart bir TV ekranı 352 x 240 piksel çözünürlüğe 24 bit derinliğine ve her saniyede 30 frame oynatsın

▫Her frame’in boyutu (352×240×24)/8 = 247.5 KB

▫Throughput Rate 247.5 × 30 = 58 Mbps  olur

  • Gerçekte böyle bir verime ihtiyaç duyulmaz. Sıkıştırma ve kodek?
  • İletilen iki çerçeve arasındaki farklar iletilerek boyut azaltılır.
  • Haliyle değişken performans ihtiyaçlarına gereksinim olacaktır.
  • Bir uygulamanın band genişliği gereksinimi, olabildiğince fazla ve gecikme gereksinimi, olabildiğince az şeklinde basitçe özetlenebilir.
  • Ağın tek yönlü gecikmesinden çok ağın paketler arasında ne kadar gecikme değişimi gösterdiği daha önemli olabilir. Bu değere jitter denir.
  • Saniyede 30 frame iletim yapan bir video uygulaması için;

▫Kaynağın her 33ms’de bir bir frame gönderdiğini varsayalım,

▫Paketler hedefe 33ms’de bir ulaşırsa ağdaki her paketin gecikmesi aynıdır,

▫Ancak paketlerin varış noktasına geliş aralığı değişken olursa (inter-packet gap olarak da adlandırılır) ağda jitter oluştuğu ifade edilir.

  • Bu tür durumlar devre anahtarlamalı ağlarda oluşmaz. Paket anahtarlamalı ağlarda yönlendirme durumlarından kaynaklanır.
  • Jitter, paketlerin alıcıda tamponlanmasına ve oynatımın geciktirilmesine/kalitenin düşürülmesine neden olacaktır.

Bilgisayar ağları ilk konusu için tıklayınız – Tıklayınız 


Paylaşım , Takip İçin
  • 2
    Shares
0 0 votes
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: