Ayni sistem(host) üzerinde IPC Prosesler Host P 1 P 2 P 3 IPC mekanizması OS kernel Ağ(network) aracılığı ile IPC Host A Host B Host C P 1 P 2 P 3 Ağ(Network) 1
Temel TCP/IP protokolleri OSI katmanları(layers) 5-7 Kullanıcı prosesi 4 Transport (taşıma) TCP UDP Protokol Network (ağ) 1-2 Data link, (veri bağı, fiziksel) IP Ethernet veya token-ring protokolü LAN Protokoller: TCP Transmission Control Protocol(İletim kontrol protokolü) UDP User Datagram Protocol (Kullanıcı datagram protokolü) IP Internet Protocol (İnternet prtokolü) Internet adresleme ( IP adres ) : 3 1 5 226 32 bits = 3. 1. 5. 226 2
Soket(socket) kavramı Kullanıcı prosesi 1 Kullanıcı prosesi 2 Soket 1 Soket 2 Soket 3 Application Layer (Uygulama katmanı) TCP UDP IP Ethernet, Token Ring, modem,... 3
IP ve Port(kapı) Adresleme port Host A Prosesi 1275 Host B Yazıcı E-mail Sunucusu Sunucusu port 515 25 194.6.18.8 IP adres Ağ(Network) 194.6.18.6 IP adres 194 6 18 8 32 bits 4
Soket IPC de son nokta olarak kullanılanılan bir veri yapısıdır Proses Host Soket Port Ağ Sokete adres bağlama (binding) IP adres IPC-Inter-process communication (prosesler arası iletişim) 5
Soket türleri 1. Akış soketleri(stream sockets) connection-oriented (bağlantı doğrultusunda olan), bi-directional (çift-yönlü), reliable (güvenilir) Host A Host B Proses A Proses B Akış soketi Byte ların akışı (sanal devre) Akış soketi 2. Datagram soketleri connectionless (bağlantısız), bi-directional(çift-yönlü), unreliable (güvenilir olmayan) Proses C Ayrı mesajlar Proses D Datagram soket Datagram soket 6
Soket adres metodları (soket adres ailesi) UNIX adres ailesi (UNIX alanları) Ayni makinedeki IPC için Internet alan(domain) adresleme Ağ daki IPC için Adresleme metodlarının ve soket çeşitlerinin olası kombinasyonları Datagramlar Akışlar UNIX alanı Tek bir makinede Internet Alanı Farklı makinelerde 7
IPC için Internet adresleme Host A (DAÜ) prosesi İyi bilinen Rastgele seçilmiş Host B (Ankara) Sunucu prosesi Port 1 Ağ Port 2 IP adres = 194.15.21.02 IP adres = 193.125.12.32 Internet adresleme soket yapısı: struct sockaddr_in { short sin_family ; /*AF_INET olmalı*/ u_short sin_port ; /* port numarası */ struct in_addr sin_addr ; /* IP adresi */ char sin_zero[8] ; /* ayrılan byte lar*/ } ; struct in_addr { u_long s_addr ; /*IP adres için 32 bittir */ } ; 8
Soket yapıları UNIX alan(domain) adresi struct sockaddr_un { short sun_family ; /* AF_UNIX*/ char sun_path[108] ; } ; Internet alan(domain) adresi struct sockaddr_in { short sin_family ; /*AF_INET*/ u_short sin_port ; struct in_addr sin_addr ; /*IP adres*/ char sin_zero[8] ; /*dolgu*/ } ; struct in_addr { u_long s_addr ; } ; struct sockaddr_un sun_family AF_UNIX sun_path --- UNIX yol ismi Etiket struct sockaddr_in sin_family AF_INET sin_port Port no. sin_addr s_addr IP adresi 9
IPC mekanizmasi olarak soketler(bsd UNIX) Soket IPC mekanizması tünel(pipe) IPC mekanizmasının bir genellemesidir. Proses A Proses B Proses C Proses D Taşıma kullanan soketler Datagramlar(UDP) soketler Taşıma sağlayan Sanal devret (TCP) A, B, C, ve D prosesleri ayni sistemde veya farklı sistemde olabilirler. Soketlerin sınıflandırılması (çeşitleri): 1) datagram soketler (sock_dgram) 2) akış, veya sanal soketler (sock_stream) sanal soketler Güvenli, sıralı veri dağıtımı sağlanır Datagram soketler Güvenli, sıralı, kopyalanmamış veri dağıtımı sağlamayı garanti etmez. 10
-sunucu modeli Dağınık sistemler(distributed system) bir gurup istemci ve sunucudan oluşur veya daemon Sunucu Yerel alan ağları (Local Area Network) Sunucu A Sunucu: Hizmet sağlayan bir proses (Mesela bazı kaynakları diğer proseslerin kullanımını sağlama). Kaynaklar: Yazıcı(A printer) Modem Veri tabanı(a data base), v.b. : Sunucudan hizmet isteyen bir proses (daha sonra ilgili kaynağı kullanır). İstek Sistem A Sistem B istemci Yanıt sunucu İstek Yanıt Sunucu OS kernel kernel kernel LAN LAN 11
ve sunucu arasındaki iletişimde tipik sıralı işlemler Sunucu Dosya kopyalama (kullanıcı komutu) alış() gönderiş() alış() gönderiş() Bir istek için bekliyor Yanıtı hazırlıyor Yanıtı kullanıyor ve yeni istek hazırlıyor gönderiş() alış() alış() bekliyor gönderiş() Yanıtı hazırlıyor Son yanıtı da tüketiyor Zaman alış() Zaman Bekliyor 12