Temel ağ

Temel ağ

Eternet

Eternet, IEEE 802.3 standardında belirtilen bir ağ protokolüdür. Çoğu kablolu ağ arabirim kartı (NIC) Eternet kullanarak iletişim kurar.

Ağ protokollerinin OSI model‘inde, Eternet veri bağlantı katmanı olarak bilinen ikinci katmanda yer alır. Eterneti tartışırken, sıklıkla yerel ağ, katman 2, L2, bağlantı katmanı ve veri bağlantı katmanı gibi terimler duyacaksınız.

Ethernet ağında, ağa bağlı ana bilgisayarlar çerçeveler alışverişiyle iletişim kurar. Ethernet ağındaki her ana bilgisayar, ortam erişim denetimi (MAC) adresi adı verilen bir adresle benzersiz şekilde tanımlanır. Özellikle, OpenStack ortamındaki her sanal makine örneği, hesaplama ana bilgisayarının MAC adresinden farklı olan benzersiz bir MAC adresine sahiptir. Bir MAC adresi 48 bittir ve tipik olarak 08:00:27:b9:88:74 gibi onaltılı bir dize olarak temsil edilir. Modern NIC’ler MAC adresini programlı olarak değiştirmenize izin vermekle birlikte, MAC adresi üreticiden NIC’ye sabit kodlanmıştır. Linux’ta, bir NIC’nin MAC adresini ip komutunu kullanarak alabilirsiniz:

$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
     link/ether 08:00:27:b9:88:74 brd ff:ff:ff:ff:ff:ff

Kavramsal olarak, bir Ethernet ağını, ağ bilgisayarlarının her birinin bağlandığı tek bir veri yolu olarak düşünebilirsiniz. İlk uygulamalarda bir Ethernet ağı, ana makinelerin ağa bağlanmak için girdikleri tek bir koaksiyal kablo içeriyordu. Bununla birlikte, modern Ethernet ağlarındaki ağ ana makineleri doğrudan switch adlı bir ağ cihazına bağlanırlar. Yine de bu kavramsal model kullanışlıdır ve ağ diyagramlarında (OpenStack gösterge paneli tarafından üretilenler dahil) bir Ethernet ağı genellikle tek bir veri yolu olarak tasvir edilmiştir. Bazen katman 2 segment olarak anılan bir Ethernet ağı duyarsınız.

Bir Ethernet ağında, ağdaki her ana bilgisayar doğrudan diğer her ana bilgisayara bir çerçeve gönderebilir. Bir Ethernet ağı, yayınları da destekleyerek bir ana bilgisayarın, ağdaki her ana bilgisayara ff:ff:ff:ff:ff:ff yazan özel MAC adresine bir çerçeve gönderebilmesi için destek verir. ARP ve DHCP, Ethernet yayınlarını kullanan iki önemli protokoldür. Ethernet ağları yayınları desteklediğinden bazen yayın alanı olarak adlandırılan bir Ethernet ağı duyarsınız.

Bir NIC bir Ethernet çerçevesi aldığında varsayılan olarak NIC, hedef MAC adresinin NIC’nin (veya yayın adresi) adresiyle eşleşip eşleşmediğini kontrol eder ve MAC adresi eşleşmiyorsa Ethernet çerçevesi atılır. Bir hesaplama sunucusu için, çerçeve örneklerden biri için tasarlanmış olabileceğinden, bu davranış istenmemektedir. NIC’ler, MAC adresi eşleşmese bile, tüm Ethernet çerçevelerini işletim sistemine ilettikleri karışık mod için yapılandırılabilir. Hesap ana bilgisayarlarında, karışık mod için yapılandırılmış uygun NIC’ler olmalıdır.

Daha önce de belirtildiği gibi, modern Ethernet ağları, ağ ana bilgisayarlarını birbirine bağlamak için anahtarlar kullanır. Bir anahtar, birleştirilmiş ana bilgisayardan diğerine Ethernet çerçevelerini ileten çok sayıda porta sahip bir ağ donanımı kutusu. Sunucular anahtardan önce çerçeve gönderdiklerinde, anahtar hangi MAC adresinin hangi bağlantı noktasıyla ilişkili olduğunu bilmiyor. Bir Ethernet çerçevesi bilinmeyen bir MAC adresi için yönlendirilmişse, anahtar çerçeve tüm bağlantı noktalarına yayın yapar. Anahtar, trafiği gözlemleyerek hangi MAC adreslerinin hangi portlarda olduğunu öğrenir. Hangi MAC adresinin bir bağlantı noktasıyla ilişkili olduğunu bildikten sonra, Ethernet çerçevelerini yayın yerine doğru bağlantı noktasına gönderebilir. Anahtar, yönlendirme tablosu veya yönlendirme bilgi tabanı (FIB) olarak adlandırılan bir tabloda, portları değiştirmek için MAC adreslerinin eşlemelerini tutar. Anahtarlar birbirine papatya zincir halinde zincirlenebilir ve sonuçtaki anahtarlar ve ana bilgisayar bağlantıları tek bir ağ gibi davranıyor.

VLANlar

VLAN, tek bir switch’in birden çok bağımsız switch gibi hareket etmesini sağlayan bir ağ oluşturma teknolojisidir. Özellikle, aynı anahtara ancak farklı VLAN’lara bağlı olan iki ana bilgisayar, birbirinin trafiğini görmez. OpenStack, projelerin aynı hesaplama ana sisteminde çalışan örnekleri olmasına rağmen, farklı projelerin trafiğini izole etmek için VLAN’lardan yararlanabilir. Her bir VLAN, 1 ila 4095 arasında bir sayısal kimliğe sahiptir. 15 numaralı kimliğiyle VLAN’a atıfta bulunmak için “VLAN 15” diyoruz.

VLAN’ların nasıl çalıştığını anlamak için, VLAN uygulamalarını, fiziksel bilgisayarların fiziksel bir switch’e bağlandığı geleneksel bir BT ortamında düşünün ve sanallaştırma dahil değildir. Üç yalıtılmış ağ istediğinizi, ancak yalnızca tek bir fiziksel switch’iniz olduğunu düşünün. Ağ yöneticisi, örneğin, 10, 11 ve 12 gibi üç VLAN kimliği seçer ve switch’i VLAN kimlikleriyle ilişkilendirmek üzere switch’i yapılandırır. Örneğin, switchport 2 VLAN 10 ile ilişkilendirilebilir, switchport 3 VLAN 11 ile ilişkilendirilebilir vb. Belirli bir VLAN için bir switchport yapılandırıldığında, buna bir access port adı verilir. Anahtar, ağ trafiğinin VLAN’lar arasında izole edilmesinden sorumludur.

Şimdi, ilk switch’teki tüm switchport’ların dolup dolduğunu ve böylece kuruluşun ikinci bir anahtarı satın aldığını ve mevcut switchport sayısını genişletmek için anahtarı ilk anahtara bağladığını göz önünde bulundurun. İkinci anahtar da VLAN ID 10, 11 ve 12’yi destekleyecek şekilde yapılandırılmıştır. Şimdi, VLAN ID için yapılandırılmış bir bağlantı noktasındaki 1 numaralı switch’e bağlı olan A sunucusunu düşünün 10 numaralı kimliği için yapılandırılmış bir bağlantı noktasında 2 numaralı anasisteme bağlı B sunucusu için bir Ethernet çerçevesi gönderir. VLAN ID 10. Switch 1, Ethernet çerçevesini switch 2’ye ilettiğinde, çerçevenin VLAN ID 10 ile ilişkili olduğunu bildirmelidir.

İki switch birbirine bağlanacaksa ve switchler VLAN’lar için yapılandırılmışsa, switchleri çapraz bağlamak için kullanılan geçiş noktaları, herhangi bir VLAN’dan gelen Ethernet çerçevelerinin diğer switche yönlendirilmesine izin vermek üzere yapılandırılmalıdır. Buna ek olarak, gönderen switch, her Ethernet çerçevesini VLAN Kimliğiyle etiketlemelidir, böylece alım anahtarı yalnızca eşleşen VLAN’daki ana makinelerin çerçeveyi almaya uygun olmasını sağlar.

Tüm VLAN’lardan çerçeveler iletmek ve onları VLAN kimlikleri ile etiketlemek için yapılandırılmış bir switchport trunk port olarak adlandırılır. IEEE 802.1Q, bilgi aktarma yolu kullanılırken VLAN çerçevelerinin Ethernet çerçevelerinde nasıl kodlandığını açıklayan ağ standardıdır.

OpenStack bulutunuzda proje izolasyonu uygulamak için fiziksel switch’inizde VLAN kullanıyorsanız tüm switchport’larınızın bilgi aktarım yolu bağlantı noktası olarak yapılandırıldığından emin olun.

Geçerli ağ altyapınız tarafından kullanılmayan bir VLAN aralığı seçmeniz önemlidir. Örneğin, bulutunuzun maksimum 100 projeyi desteklemesi gerektiğini varsayarsanız, VLAN 200-299 gibi bu değerin dışında bir VLAN aralığı seçin. OpenStack ve proje ağlarını idare eden tüm fiziksel ağ altyapısı bu VLAN aralığını desteklemelidir.

Bilgi aktarım yolu iki farklı switch arasındaki bağlantı için kullanılır. Her bilgi aktarım yolı hangi VLAN’ın kullanıldığını belirlemek için bir etiket kullanır. Bu, aynı VLAN üzerindeki switch’lerin iletişim kurabildiklerini garantiler.

Altağlar ve ARP

NIC’ler, ağ ana bilgisayarlarına adres bulmak için MAC adresleri kullanırken, TCP/IP uygulamaları IP adreslerini kullanır. Adres Çözümleme Protokolü (ARP), IP adreslerini MAC adreslerine çevirerek Ethernet ve IP arasındaki boşluğu kapatır.

IP adresleri iki kısma ayrılır: bir ağ numarası ve bir anabilgisayar tanımlayıcı. Aynı ağ numarası varsa, iki ana bilgisayar aynı alt ağda bulunur. İki ana bilgisayarın yalnızca aynı yerel ağa bağlıysa doğrudan Ethernet üzerinden iletişim kurabildiğini hatırlayın. ARP, aynı alt ağdaki tüm makinelerin aynı yerel ağda olduğunu varsayar. Ağ yöneticileri, IP adreslerini ve ağ maskelerini ana makinelere atarken dikkatli olmalıdır, böylece aynı alt ağdaki iki ana bilgisayar aynı yerel ağda olur, aksi takdirde ARP düzgün çalışmaz.

Bir IP adresinin ağ numarasını hesaplamak için, adresle ilişkili netmask bilgisini bilmelisiniz. Bir ağ maskesi, 32-bit IP adresindeki kaç bitin ağ numarasını oluşturduğunu gösterir.

Bir netmask’ı tanımlamak için iki söz dizimi vardır:

  • noktalı dörtlü
  • sınıfsız alanlar arası yönlendirme (CIDR)

Adresin ilk 24 bitinin ağ numarası olduğu 192.168.1.5’lik bir IP adresini düşünün. Noktalı dörtlü gösterimde ağ maskesi 255.255.255.0 olarak yazılır. CIDR gösterimi hem IP adresini hem de ağ maskesini içerir ve bu örnek 192.168.1.5/24 olarak yazılır.

Not

Bir çoklu yayın adresi veya bir geri döngü adresi de dahil olmak üzere CIDR alt ağları oluşturmak, bir OpenStack ortamında kullanılamaz. Örneğin, 224.0.0.0/16 veya 127.0.1.0/24 kullanarak bir alt ağ oluşturulması desteklenmemektedir.

Bazen bir alt ağa başvurmak istiyoruz, ancak alt ağdaki belirli bir IP adresine değil. Ortak bir kural, bir alt ağa başvurmak için ana bilgisayar tanımlayıcısını sıfırlar olarak ayarlamaktır. Örneğin, bir hostun IP adresi 10.10.53.24/16 ise, alt ağın 10.10.0.0/16 olduğunu söyleyebiliriz.

ARP’nin IP adreslerini MAC adreslerine nasıl çevirdiğini anlamak için aşağıdaki örneğe bakın. Ana bilgisayar A‘nın bir IP adresinin 192.168.1.5/24 olduğu ve MAC adresinin fc:99:47:49:d4:a0 olduğunu ve IP adresi 192.168.1.7 olan B ana bilgisayarına bir paket göndermek istediğini varsayalım. Ağ numarası, her iki ana bilgisayar için aynı olduğundan, ana bilgisayar A‘nın doğrudan ana bilgisayar B‘ye çerçeve gönderebildiğine dikkat edin.

İlk kez ana bilgisayar A, ana bilgisayar B ile iletişim kurmaya çalışırken, hedef MAC adresi bilinmiyor. Ana makine A yerel ağa ARP isteğinde bulunur. İstek şu şekilde bir ileti yayınlıyor:

Herkese: (ff:ff:ff:ff:ff:ff). IP adresi 192.168.1.7 olan bilgisayarı arıyorum. İmza: MAC adresi fc:99:47:49:d4:a0.

B ana bilgisayarı şöyle bir cevap döner:

Kime: fc:99:47:49:d4:a0. 192.168.1.7 IP adresine sahibim. İmza: MAC adresi 54:78:1a:86:00:a5.

A ana bilgisayarı Eternet çerçevesini B anabilgisayarına gönderir.

arping komutunu kullanarak el ile bir ARP isteği başlatabilirsiniz. Örneğin, 10.30.0.132 IP adresine bir ARP isteği göndermek için:

$ arping -I eth0 10.30.0.132
ARPING 10.30.0.132 from 10.30.0.131 eth0
Unicast reply from 10.30.0.132 [54:78:1A:86:1C:0B]  0.670ms
Unicast reply from 10.30.0.132 [54:78:1A:86:1C:0B]  0.722ms
Unicast reply from 10.30.0.132 [54:78:1A:86:1C:0B]  0.723ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)

ARP isteklerinin sayısını azaltmak için işletim sistemi IP adresleri ile MAC adreslerinin bir eşleşmesini barındıran bir ARP ön belleği geliştirir. Bir Linux makinede, arp command komutu ile ARP ön belleğinin içeriğini görüntüleyebilirsiniz:

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.2.3                 ether   52:54:00:12:35:03   C                     eth0
10.0.2.2                 ether   52:54:00:12:35:02   C                     eth0

DHCP

Bir ağa bağlı olan ana bilgisayarlar, IP adreslerini dinamik olarak elde etmek için Dinamik Ana Bilgisayar Yapılandırma Protokolünü (DHCP) kullanır. Bir DHCP sunucusu, IP adreslerini DHCP istemcileri olan ağ ana makinelerine verir.

DHCP istemcileri, 68 numaralı bağlantı noktasından 67 numaralı bağlantı noktasındaki 255.255.255.255 adresine bir UDP paketi göndererek DHCP sunucusunu bulur. Yerel ağ yayın adresi olan 255.255.255.255 adresidir: yerel ağdaki tüm ana bilgisayarlar, bkz. Bu adrese gönderilen UDP paketleri. Bununla birlikte, bu tür paketler diğer ağlara yönlendirilmez. Sonuç olarak, DHCP sunucusu istemci ile aynı yerel ağda olmalıdır veya sunucu yayın almayacaktır. DHCP sunucusu, 67 numaralı bağlantı noktasından istemcideki 68 numaralı bağlantı noktasına bir UDP paketi göndererek yanıt verir. Alış veriş şöyle görünür:

  1. İstemci keşif gönderir (“Ben 08:00:27:b9:88:74 adresindeki istemciyim, Bir IP adresine ihtiyacım var”)
  2. Sunucu bir teklif gönderir (“Tamam 08:00:27:b9:88:74, 10.10.0.112 IP adresini gönderiyorum”)
  3. İstemci bir istek gönderir (“Sunucu 10.10.0.131, 10.10.0.112 IP adresini almak istiyorum”)
  4. Sunucu bir iletildi mesajı gönderir (“Tamam 08:00:27:b9:88:74, 10.10.0.112 IP adresi senindir”)

OpenStack, DHCP sunucuyu gerçekleştirmek için dnsmasq üçüncü parti programını kullanır. Dnsmasq, DHCP isteklerini ve cevaplarını gözlemleyebileceğiniz syslog’a yazar.

Apr 23 15:53:46 c100-1 dhcpd: DHCPDISCOVER from 08:00:27:b9:88:74 via eth2
Apr 23 15:53:46 c100-1 dhcpd: DHCPOFFER on 10.10.0.112 to 08:00:27:b9:88:74 via eth2
Apr 23 15:53:48 c100-1 dhcpd: DHCPREQUEST for 10.10.0.112 (10.10.0.131) from 08:00:27:b9:88:74 via eth2
Apr 23 15:53:48 c100-1 dhcpd: DHCPACK on 10.10.0.112 to 08:00:27:b9:88:74 via eth2

Ağ üzerinden erişilemeyen bir sorunun sorunlarını gidermek için söz konusu sunucu için DHCP protokolünün dört adımının da hepsinin gerçekleştirildiğini doğrulamak için bu günlüğün incelenmesi yararlı olabilir.

IP

Internet Protokolü (IP), farklı yerel ağlara bağlı ana bilgisayarlar arasında nasıl paket yönlendirileceğini belirtir. IP, yönlendiriciler veya ağ geçitleri olarak adlandırılan özel ağ ana makinelerine güvenir. Yönlendirici, en az iki yerel ağa bağlı ve bir yerel ağdan diğerine IP paketlerini iletebilen bir ana makinedir. Bir yönlendiricinin birden fazla IP adresi vardır: bağlı olduğu her bir ağ için bir tane.

Ağ protokollerinin OSI modelinde IP, ağ katmanı olarak bilinen üçüncü katmanı kaplar. IP tartışırken genellikle katman 3, L3 ve ağ katmanı gibi terimleri duyarsınız.

Bir IP adresi için bir paket gönderen bir ana bilgisayar, kendi yerel ağlarındaki (paketlerindeki) hangi makinenin gönderileceğini belirlemek için yönlendirme tablosundan yararlanır. Yönlendirme tablosu, ana makinenin doğrudan bağlı olduğu her yerel ağa ait alt ağların bir listesini ve bu yerel ağlarda bulunan yönlendiricilerin bir listesini tutar.

Bir Linux makinesinde, aşağıdaki komutlardan herhangi biri yönlendirme tablosunu görüntüler:

$ ip route show
$ route -n
$ netstat -rn

ip route show komutunun örnek çıktısı şöyle:

$ ip route show
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.27.0/24 dev eth1  proto kernel  scope link  src 192.168.27.100
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

Çıktıdaki 1. satır, diğer kuralların hiçbiri eşleşmiyorsa, etkili yönlendirme kuralı olan varsayılan rota yerini belirtir. Varsayılan rota ile ilişkili yönlendirici (yukarıdaki örnekte 10.0.2.2) bazen varsayılan ağ geçidi olarak adlandırılır. Bir DHCP sunucusu, varsayılan ağ geçidinin IP adresini, istemcinin IP adresi ve bir ağ maskesi ile birlikte DHCP istemcisine gönderir.

Çıktının 2. satırı 10.0.2.0/24 altağındaki IPlerin eth0 ağ arabirimi ile alakalı yerel ağ üzerinde olduğunu belirler.

Çıktının 3. satırı 192.168.27.0/24 alt ağındaki IP’lerin eth1 ağ arayüzü ile ilişkili yerel ağ üzerinde olduğunu belirtir.

Çıktının 4. satırı 192.168.122.0/24 altağındaki IPlerin virbr0 ağ arabirimi ile ilişkili yerel ağ üzerinde olduğunu belirtir.

route -n ve netstat -rn komutlarının çıktısı bir miktar farklı biçimlendirilmiştir. Bu örnek, aynı yönlendiricilerin bu komut kullanılarak nasıl biçimlendirileceğını gösterir.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG        0 0          0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.27.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0

ip route get komutu bir hedef IP adresi için yönü verir. Aşağıdaki örnekten, 10.0.2.14 hedef IP adresi eth0’in yerel ağındadır ve doğrudan gönderilebilir:

$ ip route get 10.0.2.14
10.0.2.14 dev eth0  src 10.0.2.15

93.184.216.34 hedef IP adresi bağlı yerel ağlardan birinde değil ve 10.0.2.2 varsayılan ağ geçidine iletilecektir:

$ ip route get 93.184.216.34
93.184.216.34 via 10.0.2.2 dev eth0  src 10.0.2.15

Bir paketin, son yönlendiricisine ulaşmak için birden fazla yönlendirici arasında gezinmesi yaygındır. Bir Linux makinesinde, traceroute ve daha yeni mtr programları, bir IP paketinin hedefine giden yol boyunca geçtiği her yönlendiricinin IP adresini yazdırır.

TCP/UDP/ICMP

Ağa bağlı yazılım uygulamaları bir IP ağı üzerinden iletişim kurmak için IP üstünde katmanlı bir protokol kullanmalıdır. Bu protokoller, ulaşım katmanı veya katman 4 olarak bilinen OSI modelinin dördüncü katmanına işgal eder. IP’nin üst katmanını ve ilgili numaralarını listeleyen bir protokol listesi için İnternet Atanmış Numaralar Otoritesi (IANA) tarafından yapılmakta olan Protokol Numaraları web sayfasına bakınız.

İletim Denetim Protokolü (TCP), ağa bağlı uygulamalarda en yaygın kullanılan katman 4 protokolüdür. TCP, bağlantı yönelimli bir protokoldür: bir istemcinin bir sunucuya bağlandığı bir istemci-sunucu modeli kullanır; burada sunucu, bağlantıları alan uygulamayı belirtir. TCP tabanlı bir uygulamadaki tipik etkileşim şu şekildedir:

  1. İstemci sunucuya bağlanır.
  2. İstemci ve sunucu veri alışverişi yapar.
  3. İstemci veya sunucu bağlantıyı bitirir.

Bir ağ ana bilgisayarında birden fazla TCP tabanlı uygulama çalışıyor olabilir; TCP, TCP tabanlı uygulamaları benzersiz şekilde tanımlamak için ports adlı bir adresleme düzenini kullanır. Bir TCP bağlantı noktası, 1-65535 aralığındaki bir sayı ile ilişkilendirilir ve bir ana bilgisayardaki yalnızca bir uygulama bir TCP bağlantı noktası ile aynı anda ilişkilendirilebilir, bu da işletim sistemi tarafından zorlanan bir kısıtlamadır.

Bir TCP sunucusunun bir bağlantı noktasında dinlediği söylenir. Örneğin, bir SSH sunucusu genellikle 22 numaralı bağlantı noktasını dinler. İstemci, TCP kullanarak bir sunucuya bağlanmak için, bir sunucunun ana bilgisayarının IP adresini ve sunucunun TCP bağlantı noktasını bilmelidir.

TCP istemci uygulamanın işletim sistemi, istemciye otomatik olarak bir bağlantı noktası numarası atar. İstemci, bu bağlantı noktası numarasını, TCP bağlantısı sonlandırılıncaya kadar sahip olur; ardından işletim sistemi bağlantı noktası numarasını geri ister. Bu tür portlara geçici bağlantı noktaları denir.

IANA, bağlantı noktalarını kullanan diğer katman 4 protokolleri gibi TCP tabanlı bir çok servis için bir bağlantı noktası numara kaydı tutar. Bir TCP bağlantı noktası numarasını kaydetmek gerekli değildir ama bir bağlantı noktası numarasını kaydetmek diğer servislerle çakışmaları önler. Bir OpenStack sistemindekiler de dahil olmak üzere çeşitli servisler tarafından kullanılan varsayılan TCP bağlantı noktaları için OpenStack Yönetim Kılavuzunda `güvenlik duvarları ve varsayılan bağlantı noktaları <https://docs.openstack.org/admin-guide/firewalls-default-ports.html>`_na bakın.

TCP tabanlı uygulamaları yazmak için kullanılan en yaygın uygulama programlama arabirimine BSD yuvaları veya basitçe yuvalar olarak da bilinen Berkeley yuvaları denir. Yuva API’leri, TCP uygulamaları yazmak için akış yönelimli bir arayüz sunar. Bir programcı perspektifinden, bir TCP bağlantısı üzerinden veri göndermek, bir dosyaya bayt akışı yazmakla benzerdir. Verilerin akışını IP paketlerine bölmek işletim sisteminin TCP/IP uygulamasının sorumluluğundadır. Işletim sistemi, düşen paketleri otomatik olarak yeniden iletmekten ve iletilen verilerin gönderenin veri arabelleklerini, alıcının veri arabelleklerini ve ağ kapasitesini aşmamasını sağlamak için akış denetimini yapmaktan sorumludur. Son olarak, işletim sistemi, paketlerin doğru sırayla alıcı tarafında bir veri akışı içine yeniden birleştirilmesinden sorumludur. TCP, kayıp paketleri algılar ve tekrar gönderdiğinden, bir güvenilir protokol olduğu söylenir.

Kullanıcı Datagram Protokolü (UDP), birçok iyi bilinen ağ protokolünün temelini oluşturan başka bir katman 4 protokolüdür. UDP bağlantısız bir protokoldür: UDP üzerinden iletişim kuran iki uygulama, veri alışverişi yapmadan önce bir bağlantı kurmanıza gerek yoktur. UDP ayrıca güvenilmez bir protokoldür. İşletim sistemi, kaybolan UDP paketlerini yeniden iletmeye veya saptamaya bile çalışmaz. İşletim sistemi, alıcı uygulamanın UDP paketlerini, gönderildikleri sırayla görmesini garantilemektedir.

TCP gibi UDP, aynı sistemde çalışan farklı uygulamalar arasında ayrım yapmak için bağlantı noktaları kavramını kullanır. Bununla birlikte, işletim sistemlerinin UDP bağlantı noktalarını TCP bağlantı noktalarından ayrı olarak ele aldığını unutmayın. Örneğin, bir uygulamanın TCP bağlantı noktası 16543 ile ilişkilendirilmesi ve ayrı bir uygulama UDP bağlantı noktası 16543 ile ilişkilendirilmesi mümkündür.

TCP gibi yuva API’leri, UDP tabanlı uygulamalar yazmak için en yaygın API’dir. Yuva API’sı, UDP uygulamaları yazmak için bir mesaj odaklı arabirim sağlar: bir programcı, sabit boyutlu bir ileti göndererek UDP üzerinden veri gönderir. Bir uygulama kayıp paketlerin yeniden gönderilmesini veya alınan paketlerin iyi tanımlanmış bir sıralamasını gerektiriyorsa, programcı bu işlevselliği uygulama kodunda uygulamakla yükümlüdür.

DHCP, Alan Adı Sistemi (DNS), Ağ Zaman Protokolü (NTP) ve Sanal genişletilebilir yerel alan ağı (VXLAN), OpenStack dağıtımlarında kullanılan UDP tabanlı protokol örneklerindendir.

UDP, çoklu iletişim için destek sağlar: tek bir paketin birden çok ana bilgisayara gönderilmesi. Bir uygulama, alıcı IP adresini özel IP yayın adresi 255.255.255.255 olarak ayarlayarak bir yerel ağdaki tüm ağ ana makinelerine bir UDP paketi yayınlayabilir. Bir uygulama ayrıca IP multicast özelliğini kullanarak bir dizi uydu alıcısına bir UDP paketi gönderebilir. Amaçlanan alıcı uygulamaları, bir çok noktaya yayın grubuna, bir UDP soketini, geçerli çoklu yayın grup adreslerinden biri olan özel bir IP adresine bağlayarak katılırlar. Alıcı bilgisayarların gönderenle aynı yerel ağ üzerinde olması gerekmez, ancak ara yönlendiriciler IP çok noktaya yayın yönlendirmesini destekleyecek şekilde yapılandırılmalıdır. VXLAN, IP çok noktaya yayın kullanan bir UDP tabanlı protokol örneğidir.

İnternet Kontrol Mesajı Protokolü (ICMP), bir IP ağı üzerinden kontrol mesajları göndermek için kullanılan bir protokoldür. Örneğin, bir IP paketi alan bir yönlendirici, yönelticinin yönlendirme tablosunda hedef adrese karşılık gelen bir yol yoksa (ICMP kodu 1, hedef ana bilgisayara erişilemiyor) veya IP paketi varsa, ICMP paketini kaynağa geri gönderebilir yönlendirici işlemek için çok büyük (ICMP kodu 4, parçalanma gerekli ve “parçası değil” bayrağı ayarlanıyor).

ping ve mtr Linux komut satırı araçları, ICMP kullanan ağ programlarına iki örnektir.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.