Bölüm 52: Bitten Sinyale
Ağlar'a “Sen”i Katmak kitabının bir bölümü: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine inip karşı taraftan geri dönen uzun bir teknik yolculuk.
Kısım 8: Kabloda ve Camda (Bölüm 52-64)
Tüm bölümler
- Giriş
- Adres Çubuğundan İsteğe
- Paket Anahtarlamalı Yol
- İsimden Adrese
- DNS Kayıtları
- Önbellek, Tazelik ve Güven
- Port Numarası ve Soket
- Bağlantısız Taşıma: UDP
- Üç Adımlı El Sıkışma
- Simetrik Şifreleme
- Açık Anahtarlı Kriptografi
- TLS El Sıkışması
- Sertifika Zinciri
- HTTP Mesajının Anatomisi
- Durum, Çerez ve Oturum
- HTTP/2'den HTTP/3'e
- İçerik Dağıtım Ağları
- Diğer Uygulama Protokolleri
- Katmanlı Mimari
- Hizmet ve Protokol
- Encapsulation ve Başlıklar
- Paket Yakalama ve Çözümleme
- Ağ Interface Kartı
- Fiziksel Adresleme
- Hata Sezme ve CRC
- Adres Çözümleme: ARP
- Ortam Erişimi: CSMA/CD
- Switch'ler
- Ağ Topolojileri
- Sanal Yerel Ağlar
- Kablosuz Erişim: 802.11
- Radyo Kanalı ve Kapasite
- Kablosuz Ağ Güvenliği
- Hücresel Ağlar
- Spektrum ve Kuşaklar
- Hareketlilik ve Aktarma
- Adres Kiralama: DHCP
- Adresin Anatomisi
- Adres Tükenmesi ve IPv6
- Router Mimarisi
- Kuyruk Yönetimi
- Cihaz Yapılandırma
- Routing Protokolleri
- Kontrol Düzlemi ve SDN
- Ağ İzleme ve Yönetimi
- Alanlar Arası Routing
- Adres Çevirisi
- Ara Kutular
- Tünelleme ve IPsec
- Firewall'lar
- Ağ Saldırıları
- Operatör ve Metro Ağları
- Bitten Sinyale
- Sembol Hızı ve Kanal Kapasitesi
- Multiplexing Teknikleri
- İletim Ortamları
- Bakır Kablo Sonlandırma
- Fiber Sonlandırma
- Fiber Optik İletim
- Bakır Erişim Ağı: DSL
- DSL'de Hız ve Mesafe
- Pasif Optik Ağlar
- Kablo Erişim Ağları
- Kablo Modem ve CMTS
- Denizaltı Kabloları
- Veri Merkezi Ağları
- Encapsulation Çözme
- Güvenilir Aktarım
- Tıkanıklık Denetimi
- Trafik Çözümleme
- Gecikme Bütçesi
- Soket Programlama
- Eşten Eşe ve Protokol Tasarımı
- Uyarlanır Video Akışı
- Gerçek Zamanlı Ses ve Görüntü
- Kablosuz Sensör Ağlarının Mimarisi
- Sensör Ağlarında Ortam Erişimi
- Sensör Ağlarında Yönlendirme ve IP
- Zaman Eşitleme ve Konum Bulma
- Sensör Ağı Uygulamaları
- Mobil Kablosuz Sensör Ağları
- Son Söz
Şimdiye kadar paketi hep bir nesne gibi anlattım. Kasten basitleştirdim.
Bakırın üstünde paket diye bir şey yok. Orada yalnızca değişen bir gerilim var ya da bir ışık dalgası. Peki bir bit hangi dalga biçimine dönüşüyor?
Telde bit yok, gerilim var
Sinyal, bilgi taşıyan bir fiziksel büyüklük. Karşına üç biçimden biriyle çıkıyor: iletken üzerinde ilerleyen bir elektrik gerilimi, camın içinde yol alan ışık darbeleri, bir de havada yayılan radyo dalgası.
Paket 51. bölümde metro halkasında bir etiketle taşınıyordu; o etiket de sonunda bu üç biçimden birine iner. 31. bölümde ise frame havada bir kanal üzerinden veriliyordu; oradaki taşıyıcı elektromanyetik bir dalgadır. Işık da öyle, yalnızca frekansı çok daha yüksek. Fizik aynı, ortam farklı.
Analog sinyal iki uç arasında sonsuz sayıda ara değer alabiliyor. Sayısal sinyalde böyle bir serbestlik yok; genlik değerleri önceden belirlenmiş ve sayılı.
Physical layer bir anlaşma katmanıdır. İki taraf gerilim seviyesinde ve bit süresinde aynı kuralı paylaşmıyorsa iletim hiç başlamaz. Kablo takılı, cihazlar açık, tek bir bayt geçmiyor. Sahada canını en çok sıkacak arıza tablosu budur, çünkü bakınca her şey yolunda görünüyor. Bir ucuna 1 Gbit/s’lik, öbür ucuna 10 Gbit/s’lik modül takılmış bir fiber tam böyle davranır: ışık karşıya ulaşıyor ama iki uç farklı hat kodu konuştuğu için hiçbir şey okunmuyor. 22. bölümdeki kip uyuşmazlığı ise bu arızanın sinsi akrabası: orada bağlantı kalkıyor, hat ancak yük binince bozuluyor.
En sade anlaşmanın adı NRZ (non-return-to-zero): sinyal bir bitin ortasında sıfıra dönmüyor, bit boyunca aynı seviyede kalıyor. Bakırda dijital 1’i tipik olarak +5 V ya da +3,3 V ile gösteriyorsun, dijital 0’ı ise 0 V ile. Bilgi doğrudan seviyenin kendisinde durduğu için bu biçime NRZ-L (level) deniyor. Optik ortamda aynı kural ışığa çevrilir: 1 parlak ışık, 0 çok daha sönük ışıktır. Lazeri her sıfırda tamamen söndürüp yeniden yakmak zaman aldığı için sıfır tam karanlık değildir. Işık kaynağının kendisi de bir tavan koyar: LED’ler yaklaşık 600 MHz’in üstünde açılıp kapanamıyor ve daha hızlı bağlantılar lazere geçiyor. NRZ-L bugün de asenkron RS-232 haberleşmesinde kullanılıyor.
Bir bitin süresi veri hızının tersidir. 1 Gbit/s’te bir bit 1 nanosaniye sürer; 10 Gbit/s’te aynı bit 100 pikosaniyeye iner. Yüz pikosaniye, ışığın cam içinde iki santimetre kadar yol aldığı süre. Alıcı her kararını o pencerenin içinde vermek zorunda.
Bit tek telden mi gidiyor?
Şu ana kadar tek bir telden söz ettim ve bitleri arka arkaya dizdim. Akla gelen ilk itiraz da bu: sekiz tel çekip sekiz biti aynı anda göndersen sekiz kat hızlı olmaz mıydı?
Uzun süre öyle düşünüldü. Yazıcı kablosu, sabit disk kablosu ve bilgisayarın iç veri yolu paralel çalışıyordu; yan yana duran tellerin her biri bir bit taşıyordu. Bugün o kabloların hiçbiri kalmadı. Ağ tarafında paralel arayüz hep istisna oldu: süper bilgisayarları bağlamak için 1980’lerin sonunda tasarlanan HIPPI, 50 çiftli kalın kablosuyla en fazla 25 metreye gidebiliyordu.
Paralel hattı yıkan şey hızın kendisi oldu. Yan yana çekilen teller birbirinin tıpatıp aynısı değil: biri birkaç santimetre uzun, ötekinin yalıtımı biraz farklı, üçüncüsü kart üstünde daha sıcak bir bölgeden geçiyor. Aynı anda yola çıkan sekiz bit karşıya aynı anda varmıyor. Aradaki farkın adı saat kayması (clock skew). Sinyal bakırda nanosaniyede yaklaşık 20 santimetre yol alıyor; uzunluk farkı, sürücü devrelerinin kendi farklarıyla birleşince kayma yüzlerce pikosaniyeyi, uzun kablolarda nanosaniyeleri buluyor.
Hesabı kendin yapabilirsin. Kayma bit süresinden küçük kaldığı sürece kimse fark etmiyor. 1 Mbit/s’te bir bit bir mikrosaniye sürüyor ve birkaç nanosaniyelik fark görünmüyor bile. 1 Gbit/s’te aynı bit bir nanosaniyeye iniyor; artık kaymanın kendisi bitin boyundan büyük ve alıcı hangi bitin hangi kelimeye ait olduğunu söyleyemiyor. Hız arttıkça bit süresi kısalıyor ama tellerin fiziksel farkı olduğu yerde duruyor.
İkinci fatura komşuluktan geliyor. Yan yana duran teller birbirine sinyal indüklüyor ve bu girişim frekansla birlikte büyüyor; adını bir sonraki bölümde koyacağım.
Çözüm tel sayısını artırmak değil, azaltmak oldu. Tek bir çift üstünde bitleri sıraya dizip sembol hızını yükseltmek, sekiz teli senkron tutmaya çalışmaktan hem ucuza geldi hem daha güvenilir çıktı. Sektörün tamamı aynı yöne yürüdü.
| eski, paralel | yerini alan, seri |
|---|---|
| yazıcı portu | USB |
| PATA disk kablosu | SATA |
| PCI veri yolu | PCIe |
| paralel SCSI | SAS |
Bugün paralel görünen hatlar da aslında seri. PCIe x16 on altı şeridi, 100 Gbit/s Ethernet’in yaygın biçimleri dört şeridi birden kullanıyor, ama her biri kendi başına seri bir hat. Veriyle birlikte giden bir saat teli yok; her şerit örnekleme saatini kendi sinyalinden çıkarıyor. Bunlara tel yerine şerit (lane) deniyor. Şeritler arasında kalan küçük kaymayı alıcı, akışa aralıklarla serpiştirilmiş hizalama işaretlerine bakarak tamponla düzeltiyor. Paralelden farkı şu: kayma tek tek bitleri değil, bağımsız akan şeritleri ilgilendiriyor ve düzeltmesi çok daha kolay.
Alıcı sembol sınırını nereden bilir?
Şu ana kadar alıcının bitleri saydığını söyledim ve nasıl saydığını hiç sormadım. Sorunun ne kadar ciddi olduğunu tek bir hesapla göreceksin.
Alıcının kendi saati var ve o saat göndericininkiyle tıpatıp aynı hızda çalışmıyor; aradaki farka saat sapması (clock drift) deniyor. Ethernet standardı her iki uçtaki kristale milyonda 100’e kadar sapma izni veriyor. İki uç ters yönlere saparsa fark milyonda 200’ü buluyor. Kulağa önemsiz geliyor. Şimdi çarp: milyonda 200, beş bin bitte tam bir bitlik kayma demek. 1.500 baytlık tek bir frame 12.000 bit tutuyor. Alıcı saatini hiç tazelemeseydi frame’in yarısına varmadan bir bit kaymış olurdu ve o noktadan sonra okuduğu her şey yanlış olurdu.
İkinci sorun elektriksel. Yolun üstünde trafo ve kondansatör var; ikisi de sabit gerilimi geçirmiyor, yalnızca değişimi geçiriyor. Hat uzun bir sıfır dizisi boyunca aynı seviyede kalırsa alıcının “yüksekle alçağın ortası neresi” kararı yavaşça sürükleniyor. Adı baseline wander (taban kayması) ve sonucu ağır: bir süre sonra alıcı yüksekle alçağı ayırt edemiyor.
İki sorunun tek bir ortak çaresi var. Sinyalin içinde düzenli geçişler bulunmasını garanti et; geçiş hem saati tazeliyor hem tabanı yerinde tutuyor. Aşağıdaki şemaların hepsi bu tek işi farklı bedellerle yapıyor.
Saati ayrı bir telle de taşıyabilirsin, ama her hat için ikinci bir tel çekmek pahalıya patlar. Alternatifi saati sinyalin kendisine gömmek. Bunun çalışması için gelen sinyalde yeterli seviye geçişi bulunması gerekiyor; alıcı sembol sınırlarını ancak o geçişlerden çıkarabiliyor.
NRZI farksal bir kodlama: bilgiyi mutlak seviyede değil, aralık başındaki geçişin varlığında tutuyor. Kutuplamayı ters bağlasan bile anlam bozulmuyor. Gürültü altında bir geçişi saptamak, bir değeri eşikle karşılaştırmaktan daha güvenilir olabilir. Tek başına geçiş garantisi ise vermiyor: geçiş yalnızca bir değerde geliyor ve öteki değerin uzun bir dizisi hattı yine susturuyor. USB kuralı tersine çevirip geçişi 0’a koyuyor ve art arda altı 1’den sonra araya zorla bir 0 sıkıştırıyor (bit stuffing); böylece hat en geç yedi bitte bir kıpırdıyor.
Bipolar-AMI başka bir yol seçiyor: sıfır için hiçbir şey göndermiyor, bir için sırayla pozitif ve negatif darbe yolluyor. Ardışık birler kutup değiştirdiği için doğru akım bileşeni kendiliğinden sıfırlanıyor. Yan ürünü de işe yarıyor: kutup sırasının bozulması (bipolar violation) tek başına bir hata işareti sayılıyor, yani hat kodu basit bir hata sezme mekanizmasını bedavaya taşıyor.
AMI’nin de bir açığı var: uzun bir sıfır dizisinde hat susuyor ve saat yine kayboluyor. ABD’nin T1 hatları bunu B8ZS ile, Avrupa’nın ve Türkiye’nin E1 hatları HDB3 ile çözüyor. Çözüm kurnaz: sekiz ya da dört sıfırlık bir dizi, kutup kuralını bilerek çiğneyen bir desenle değiştiriliyor. Alıcı bu kasıtlı ihlali tanıyor ve yerine sıfırları koyuyor; hata işareti, saati kurtaran bir koda dönüşüyor.
Manchester kodlaması bu işi daha ileri götürüyor: her bit aralığının tam ortasına zorunlu bir geçiş koyuyor. Sıfırda yüksekten alçağa iniyorsun, birde alçaktan yükseğe çıkıyorsun. Dalga biçimi aslında saat sinyali ile verinin XOR’udur.
Farksal Manchester’da aralık ortasındaki geçiş her zaman durur. Bit değerini belirleyen şey aralık başındaki geçişin varlığıdır. Token Ring bu şemayı 4 ve 16 Mbit/s hızlarında kullandı. İki fazlı kodların ortak özelliği şu: her bit süresinde en az bir geçiş garanti ediliyor. Bu yüzden onlara kendi kendine saatleyen kodlar deniyor.
Bedeli var. Manchester senkronizasyonu kolaylaştırır ama sembol hızını bit hızının iki katına çıkarır ve gereken bant genişliğini aynı oranda büyütür. Klasik 10 Mbit/s Ethernet hattı bu yüzden 20 Mbaud sinyal akıtıyordu. Yani kablodan istediğin her bit için iki sembol ödüyordun ve yük %100’e çıkıyordu.
Beşini yan yana koyunca ödünleşim tek bakışta görünüyor:
| kod | geçiş garantisi | DC bileşeni | sembol/bit | nerede |
|---|---|---|---|---|
| NRZ | yok | var | 1 | RS-232, kısa hatlar |
| NRZI | yalnızca bir değerde (USB’de 0’da) | var | 1 | USB, 4B/5B’nin altında |
| Bipolar-AMI | yalnızca 1’lerde | yok | 1 | T1 ve E1 hatları |
| Manchester | her bitte | yok | 2 | 10 Mbit/s Ethernet |
| Farksal Manchester | her bitte | yok | 2 | Token Ring |
Üçüncü sütun neden önemli, artık biliyorsun: DC bileşeni olan bir kod baseline wander’a açık kalıyor. Dördüncü sütun ise faturayı gösteriyor. Geçiş garantisi bedava değil; her bitte geçiş isteyen kod, aynı veri için iki kat sembol yakıyor.
Aynı bit dizisinin farklı kodlamalarda nasıl göründüğünü karşılaştıralım:
- Sekiz bitlik dizi. Üç kulvar da aynı diziyi taşıyor: 1 0 1 1 0 0 1 0. Kesikli dikey çizgiler bit sınırları; iki çizgi arası bir bit süresi kadar.
- NRZ-L: seviye bilgidir. Bir yüksek gerilim, sıfır alçak gerilim. Ardışık aynı bitlerde hiç geçiş yok; uzun bir dizide alıcı sembol sınırını kaybedebilir.
- NRZI: bilgi geçişte. Seviyenin kendisi anlam taşımıyor. Aralık başında geçiş varsa bir, yoksa sıfır; kutuplama ters bağlansa da okunan dizi değişmiyor. Soldaki kısa çizgi önceki seviye: ilk bitin geçişi onunla görünüyor.
- Manchester: orta geçiş şart. Her bit aralığının ortasında zorunlu bir geçiş var: sıfır yüksekten alçağa, bir alçaktan yükseğe. Dalga, saat ile verinin XOR'u.
- Faturayı baud ödüyor. Bu dizide NRZ-L beş, NRZI dört, Manchester on geçişle iniyor. Garanti edilen sekiz orta geçişin bedeli iki kat sembol hızı: 10 Mbit/s hat 20 Mbaud akıtır.
Üçüncü cevap: baştan anlaşmak
Saati gömmek tek çıkar yol değil. En eski cevap çok daha sade: iki uç hızda baştan anlaşsın, alıcı da her karakterde yeniden hizalansın.
Hat boştayken sabit bir seviyede duruyor. Gönderici konuşmaya başlayacağı zaman önce o seviyeyi tersine çeviriyor ve tek bitlik bu işarete start biti deniyor. Alıcı o kenarı görünce kendi saatini sıfırlıyor, sonra bit sürelerinin ortasını sayarak veriyi okuyor. Karakterin sonunda hat boş seviyeye geri dönüyor: stop biti. Sekiz veri biti, eşlik biti (parity) yok, bir stop biti: sahada 8N1 diye anılan ayar bu. Router konsoluna bağlanırken girdiğin 9600 8N1 de bu anlaşmanın kendisi; ilk sayı saniyedeki bit.
Anlaşmanın bedeli tolerans. Alıcının saati göndericininkinden yüzde birkaç saparsa karakterin sonuna varıldığında hizalama kaymış oluyor ve stop biti beklenen yerde bulunamıyor; bu duruma çerçeveleme hatası (framing error) deniyor. Her karakterde yeniden hizalandığı için hasar o karakterle sınırlı kalıyor, hattın tamamı bozulmuyor. Gömülü saatin bedeli bant genişliğiydi; burada bedel senkron kalabildiğin süre. Bir bedel daha var: her sekiz veri bitine iki çerçeve biti eklendiği için yük %25.
RS-232 bu şemanın en tanıdık uygulaması ve 1960’tan beri ayakta. İlginç yanı gerilimi: mantıksal 1’i eksi 3 ile eksi 15 volt arasında, 0’ı ise artı 3 ile artı 15 volt arasında gösteriyor. Yani hem çift kutuplu hem ters mantıklı. Mikrodenetleyicilerin 0 V ile 3,3 ya da 5 V arasındaki mantık seviyelerine, eski adıyla TTL seviyelerine (IP’deki TTL ile ilgisi yok) doğrudan bağlanamıyor ve arada bir seviye çevirici istiyor. Geniş gerilim aralığı bir kusur değil, gürültüye karşı bilerek alınmış bir marj.
Peki bu kadar eski bir şey ağda neden hâlâ duruyor? Çünkü hiçbir şeye ihtiyacı yok. Sürücü yüklemiyorsun, adres almıyorsun, karşı tarafla hız pazarlığı yapmıyorsun, bir protokol yığını ayağa kalkmasını beklemiyorsun. Ağ çöktüğünde, cihaz açılışta takıldığında ya da yapılandırma bozulduğunda çalışan tek yol o kalıyor. Router ile switch’lerin konsol portunun hâlâ seri olmasının sebebi budur; 41. bölümde o porttan cihaza bağlanmıştık.
Özet
- Sinyal fiziksel bir büyüklüktür: bilgi bir gerilimde, bir ışık darbesinde ya da bir radyo dalgasında taşınır ve bit diye bir nesne telde bulunmaz.
- Seri hat paraleli hızla yendi: yan yana teller aynı anda varmıyor ve saat kayması bit süresinden büyüdüğü anda paralel hat okunamaz oluyor; çare tel sayısını azaltmak oldu.
- Saat iki ayrı yoldan kaybediliyor: milyonda 200’lük saat sapması beş bin bitte bir bit kaydırıyor, uzun sabit diziler de baseline wander ile yüksekle alçağın sınırını sürüklüyor; hat kodlarının hepsi bu iki soruna karşı geçiş üretiyor.
- Hat kodlaması bitten dalga biçimine giden eşlemedir: aynı dizi NRZ-L’de başka, Manchester’da başka görünür ve seçim saatle bant genişliği arasında yapılır.
- İki fazlı kodlar saati sinyalin içine gömer: her bit süresindeki zorunlu geçiş senkronizasyonu bedavaya verir, faturayı iki kat sembol hızıyla keser.
- Üçüncü yol baştan anlaşmaktır: asenkron seri hızda önceden uzlaşıp her karakteri start ve stop bitiyle çerçeveliyor; RS-232 hiçbir hazırlık istemediği için konsol portunda hâlâ ayakta.
Hat kodları her sembole tek bir bit koydu ve saati kurtarmanın faturasını geçişlerle ödedi. Peki bir sembol aynı anda birden çok bit taşıyabilir mi, taşıyabiliyorsa bunun bir tavanı var mı?
53. bölüme devam et: Sembol Hızı ve Kanal Kapasitesi